forked from Imagelibrary/rtems
Added const qualifier to various pointers and data tables to
reduce size of data area. IMFS: Fixed creation of symbolic links to avoid a compiler warning. DOSFS: Use LibBlock instead of read() to read the boot record.
This commit is contained in:
@@ -205,6 +205,7 @@ fat_cluster_write(
|
||||
int
|
||||
fat_init_volume_info(rtems_filesystem_mount_table_entry_t *mt_entry)
|
||||
{
|
||||
rtems_status_code sc = RTEMS_SUCCESSFUL;
|
||||
int rc = RC_OK;
|
||||
fat_fs_info_t *fs_info = mt_entry->fs_info;
|
||||
register fat_vol_t *vol = &fs_info->vol;
|
||||
@@ -212,9 +213,9 @@ fat_init_volume_info(rtems_filesystem_mount_table_entry_t *mt_entry)
|
||||
char boot_rec[FAT_MAX_BPB_SIZE];
|
||||
char fs_info_sector[FAT_USEFUL_INFO_SIZE];
|
||||
ssize_t ret = 0;
|
||||
int fd;
|
||||
struct stat stat_buf;
|
||||
int i = 0;
|
||||
bdbuf_buffer *block = NULL;
|
||||
|
||||
rc = stat(mt_entry->dev, &stat_buf);
|
||||
if (rc == -1)
|
||||
@@ -231,22 +232,25 @@ fat_init_volume_info(rtems_filesystem_mount_table_entry_t *mt_entry)
|
||||
|
||||
vol->dev = stat_buf.st_dev;
|
||||
|
||||
fd = open(mt_entry->dev, O_RDONLY);
|
||||
if (fd == -1)
|
||||
/* Read boot record */
|
||||
/* FIXME: Asserts FAT_MAX_BPB_SIZE < bdbuf block size */
|
||||
sc = rtems_bdbuf_read( vol->dev, 0, &block);
|
||||
if (sc != RTEMS_SUCCESSFUL)
|
||||
{
|
||||
rtems_disk_release(vol->dd);
|
||||
return -1;
|
||||
set_errno_and_return_minus_one( EIO);
|
||||
}
|
||||
|
||||
ret = read(fd, (void *)boot_rec, FAT_MAX_BPB_SIZE);
|
||||
if ( ret != FAT_MAX_BPB_SIZE )
|
||||
memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);
|
||||
|
||||
sc = rtems_bdbuf_release( block);
|
||||
if (sc != RTEMS_SUCCESSFUL)
|
||||
{
|
||||
close(fd);
|
||||
rtems_disk_release(vol->dd);
|
||||
set_errno_and_return_minus_one( EIO );
|
||||
set_errno_and_return_minus_one( EIO);
|
||||
}
|
||||
close(fd);
|
||||
|
||||
/* Evaluate boot record */
|
||||
vol->bps = FAT_GET_BR_BYTES_PER_SECTOR(boot_rec);
|
||||
|
||||
if ( (vol->bps != 512) &&
|
||||
|
||||
@@ -37,18 +37,18 @@ typedef struct msdos_fs_info_s
|
||||
* volume
|
||||
* description
|
||||
*/
|
||||
rtems_filesystem_file_handlers_r *directory_handlers; /*
|
||||
* a set of routines
|
||||
* that handles the
|
||||
* nodes of directory
|
||||
* type
|
||||
*/
|
||||
rtems_filesystem_file_handlers_r *file_handlers; /*
|
||||
* a set of routines
|
||||
* that handles the
|
||||
* nodes of file
|
||||
* type
|
||||
*/
|
||||
const rtems_filesystem_file_handlers_r *directory_handlers; /*
|
||||
* a set of routines
|
||||
* that handles the
|
||||
* nodes of directory
|
||||
* type
|
||||
*/
|
||||
const rtems_filesystem_file_handlers_r *file_handlers; /*
|
||||
* a set of routines
|
||||
* that handles the
|
||||
* nodes of file
|
||||
* type
|
||||
*/
|
||||
rtems_id vol_sema; /*
|
||||
* semaphore
|
||||
* associated with
|
||||
@@ -61,10 +61,10 @@ typedef struct msdos_fs_info_s
|
||||
} msdos_fs_info_t;
|
||||
|
||||
/* a set of routines that handle the nodes which are directories */
|
||||
extern rtems_filesystem_file_handlers_r msdos_dir_handlers;
|
||||
extern const rtems_filesystem_file_handlers_r msdos_dir_handlers;
|
||||
|
||||
/* a set of routines that handle the nodes which are files */
|
||||
extern rtems_filesystem_file_handlers_r msdos_file_handlers;
|
||||
extern const rtems_filesystem_file_handlers_r msdos_file_handlers;
|
||||
|
||||
/* Volume semaphore timeout value. This value can be changed to a number
|
||||
* of ticks to help debugging or if you need such a */
|
||||
@@ -231,10 +231,10 @@ int msdos_utime(
|
||||
);
|
||||
|
||||
int msdos_initialize_support(
|
||||
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
|
||||
rtems_filesystem_operations_table *op_table,
|
||||
rtems_filesystem_file_handlers_r *file_handlers,
|
||||
rtems_filesystem_file_handlers_r *directory_handlers
|
||||
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
|
||||
const rtems_filesystem_operations_table *op_table,
|
||||
const rtems_filesystem_file_handlers_r *file_handlers,
|
||||
const rtems_filesystem_file_handlers_r *directory_handlers
|
||||
);
|
||||
|
||||
int msdos_file_open(
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include <rtems/libio.h>
|
||||
#include "msdos.h"
|
||||
|
||||
rtems_filesystem_file_handlers_r msdos_dir_handlers = {
|
||||
const rtems_filesystem_file_handlers_r msdos_dir_handlers = {
|
||||
msdos_dir_open,
|
||||
msdos_dir_close,
|
||||
msdos_dir_read,
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include <rtems/libio.h>
|
||||
#include "msdos.h"
|
||||
|
||||
rtems_filesystem_file_handlers_r msdos_file_handlers = {
|
||||
const rtems_filesystem_file_handlers_r msdos_file_handlers = {
|
||||
msdos_file_open,
|
||||
msdos_file_close,
|
||||
msdos_file_read,
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include <rtems/libio_.h>
|
||||
#include "msdos.h"
|
||||
|
||||
rtems_filesystem_operations_table msdos_ops = {
|
||||
const rtems_filesystem_operations_table msdos_ops = {
|
||||
msdos_eval_path,
|
||||
msdos_eval4make,
|
||||
#if 0
|
||||
|
||||
@@ -47,10 +47,10 @@
|
||||
*/
|
||||
int
|
||||
msdos_initialize_support(
|
||||
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
|
||||
rtems_filesystem_operations_table *op_table,
|
||||
rtems_filesystem_file_handlers_r *file_handlers,
|
||||
rtems_filesystem_file_handlers_r *directory_handlers
|
||||
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
|
||||
const rtems_filesystem_operations_table *op_table,
|
||||
const rtems_filesystem_file_handlers_r *file_handlers,
|
||||
const rtems_filesystem_file_handlers_r *directory_handlers
|
||||
)
|
||||
{
|
||||
int rc = RC_OK;
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
* Convert RTEMS status to a UNIX errno
|
||||
*/
|
||||
|
||||
rtems_assoc_t errno_assoc[] = {
|
||||
const rtems_assoc_t errno_assoc[] = {
|
||||
{ "OK", RTEMS_SUCCESSFUL, 0 },
|
||||
{ "BUSY", RTEMS_RESOURCE_IN_USE, EBUSY },
|
||||
{ "INVALID NAME", RTEMS_INVALID_NAME, EINVAL },
|
||||
|
||||
@@ -56,7 +56,7 @@ typedef struct {
|
||||
} IMFS_link_t;
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
char *name;
|
||||
} IMFS_sym_link_t;
|
||||
|
||||
/*
|
||||
@@ -205,9 +205,9 @@ struct IMFS_jnode_tt {
|
||||
} while (0)
|
||||
|
||||
typedef struct {
|
||||
ino_t ino_count;
|
||||
rtems_filesystem_file_handlers_r *memfile_handlers;
|
||||
rtems_filesystem_file_handlers_r *directory_handlers;
|
||||
ino_t ino_count;
|
||||
const rtems_filesystem_file_handlers_r *memfile_handlers;
|
||||
const rtems_filesystem_file_handlers_r *directory_handlers;
|
||||
} IMFS_fs_info_t;
|
||||
|
||||
/*
|
||||
@@ -226,13 +226,13 @@ typedef enum {
|
||||
* Shared Data
|
||||
*/
|
||||
|
||||
extern rtems_filesystem_file_handlers_r IMFS_directory_handlers;
|
||||
extern rtems_filesystem_file_handlers_r IMFS_device_handlers;
|
||||
extern rtems_filesystem_file_handlers_r IMFS_link_handlers;
|
||||
extern rtems_filesystem_file_handlers_r IMFS_memfile_handlers;
|
||||
extern rtems_filesystem_operations_table IMFS_ops;
|
||||
extern rtems_filesystem_operations_table miniIMFS_ops;
|
||||
extern rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS;
|
||||
extern const rtems_filesystem_file_handlers_r IMFS_directory_handlers;
|
||||
extern const rtems_filesystem_file_handlers_r IMFS_device_handlers;
|
||||
extern const rtems_filesystem_file_handlers_r IMFS_link_handlers;
|
||||
extern const rtems_filesystem_file_handlers_r IMFS_memfile_handlers;
|
||||
extern const rtems_filesystem_operations_table IMFS_ops;
|
||||
extern const rtems_filesystem_operations_table miniIMFS_ops;
|
||||
extern const rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS;
|
||||
|
||||
/*
|
||||
* Routines
|
||||
@@ -247,10 +247,10 @@ int miniIMFS_initialize(
|
||||
);
|
||||
|
||||
int IMFS_initialize_support(
|
||||
rtems_filesystem_mount_table_entry_t *mt_entry,
|
||||
rtems_filesystem_operations_table *op_table,
|
||||
rtems_filesystem_file_handlers_r *memfile_handlers,
|
||||
rtems_filesystem_file_handlers_r *directory_handlers
|
||||
rtems_filesystem_mount_table_entry_t *mt_entry,
|
||||
const rtems_filesystem_operations_table *op_table,
|
||||
const rtems_filesystem_file_handlers_r *memfile_handlers,
|
||||
const rtems_filesystem_file_handlers_r *directory_handlers
|
||||
);
|
||||
|
||||
int IMFS_fsunmount(
|
||||
@@ -340,11 +340,11 @@ int IMFS_mknod(
|
||||
);
|
||||
|
||||
IMFS_jnode_t *IMFS_create_node(
|
||||
rtems_filesystem_location_info_t *parent_loc, /* IN */
|
||||
IMFS_jnode_types_t type, /* IN */
|
||||
char *name, /* IN */
|
||||
mode_t mode, /* IN */
|
||||
IMFS_types_union *info /* IN */
|
||||
rtems_filesystem_location_info_t *parent_loc, /* IN */
|
||||
IMFS_jnode_types_t type, /* IN */
|
||||
const char *name, /* IN */
|
||||
mode_t mode, /* IN */
|
||||
const IMFS_types_union *info /* IN */
|
||||
);
|
||||
|
||||
int IMFS_evaluate_for_make(
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/* XXX this structure should use real constants */
|
||||
|
||||
rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS = {
|
||||
const rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS = {
|
||||
5, /* link_max */
|
||||
6, /* max_canon */
|
||||
7, /* max_input */
|
||||
|
||||
@@ -24,18 +24,17 @@
|
||||
#include <rtems/libio_.h>
|
||||
|
||||
IMFS_jnode_t *IMFS_create_node(
|
||||
rtems_filesystem_location_info_t *parent_loc,
|
||||
IMFS_jnode_types_t type,
|
||||
char *name,
|
||||
mode_t mode,
|
||||
IMFS_types_union *info
|
||||
rtems_filesystem_location_info_t *parent_loc,
|
||||
IMFS_jnode_types_t type,
|
||||
const char *name,
|
||||
mode_t mode,
|
||||
const IMFS_types_union *info
|
||||
)
|
||||
{
|
||||
IMFS_jnode_t *node;
|
||||
struct timeval tv;
|
||||
IMFS_jnode_t *parent = NULL;
|
||||
IMFS_fs_info_t *fs_info;
|
||||
char *sym_name;
|
||||
|
||||
if ( parent_loc != NULL )
|
||||
parent = parent_loc->node_access;
|
||||
@@ -94,9 +93,7 @@ IMFS_jnode_t *IMFS_create_node(
|
||||
break;
|
||||
|
||||
case IMFS_SYM_LINK:
|
||||
sym_name = calloc( 1, strlen( info->sym_link.name ) + 1 );
|
||||
strcpy( sym_name, info->sym_link.name );
|
||||
node->info.sym_link.name = sym_name;
|
||||
node->info.sym_link.name = info->sym_link.name;
|
||||
break;
|
||||
|
||||
case IMFS_DEVICE:
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
#include <string.h>
|
||||
#include "imfs.h"
|
||||
|
||||
static char dotname[2] = ".";
|
||||
static char dotdotname[3] = "..";
|
||||
static const char dotname[2] = ".";
|
||||
static const char dotdotname[3] = "..";
|
||||
|
||||
IMFS_jnode_t *IMFS_find_match_in_dir(
|
||||
IMFS_jnode_t *directory,
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* Handler table for IMFS device nodes
|
||||
*/
|
||||
|
||||
rtems_filesystem_file_handlers_r IMFS_device_handlers = {
|
||||
const rtems_filesystem_file_handlers_r IMFS_device_handlers = {
|
||||
device_open,
|
||||
device_close,
|
||||
device_read,
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* Set of operations handlers for operations on directories.
|
||||
*/
|
||||
|
||||
rtems_filesystem_file_handlers_r IMFS_directory_handlers = {
|
||||
const rtems_filesystem_file_handlers_r IMFS_directory_handlers = {
|
||||
imfs_dir_open,
|
||||
imfs_dir_close,
|
||||
imfs_dir_read,
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* Handler table for IMFS device nodes
|
||||
*/
|
||||
|
||||
rtems_filesystem_file_handlers_r IMFS_link_handlers = {
|
||||
const rtems_filesystem_file_handlers_r IMFS_link_handlers = {
|
||||
NULL, /* open */
|
||||
NULL, /* close */
|
||||
NULL, /* read */
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* Set of operations handlers for operations on memfile entities.
|
||||
*/
|
||||
|
||||
rtems_filesystem_file_handlers_r IMFS_memfile_handlers = {
|
||||
const rtems_filesystem_file_handlers_r IMFS_memfile_handlers = {
|
||||
memfile_open,
|
||||
memfile_close,
|
||||
memfile_read,
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
* IMFS file system operations table
|
||||
*/
|
||||
|
||||
rtems_filesystem_operations_table IMFS_ops = {
|
||||
const rtems_filesystem_operations_table IMFS_ops = {
|
||||
IMFS_eval_path,
|
||||
IMFS_evaluate_for_make,
|
||||
IMFS_link,
|
||||
|
||||
@@ -66,10 +66,10 @@ static int IMFS_determine_bytes_per_block(
|
||||
*/
|
||||
|
||||
int IMFS_initialize_support(
|
||||
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
|
||||
rtems_filesystem_operations_table *op_table,
|
||||
rtems_filesystem_file_handlers_r *memfile_handlers,
|
||||
rtems_filesystem_file_handlers_r *directory_handlers
|
||||
rtems_filesystem_mount_table_entry_t *temp_mt_entry,
|
||||
const rtems_filesystem_operations_table *op_table,
|
||||
const rtems_filesystem_file_handlers_r *memfile_handlers,
|
||||
const rtems_filesystem_file_handlers_r *directory_handlers
|
||||
)
|
||||
{
|
||||
IMFS_fs_info_t *fs_info;
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "imfs.h"
|
||||
#include <rtems/libio_.h>
|
||||
#include <rtems/seterr.h>
|
||||
@@ -41,7 +43,14 @@ int IMFS_symlink(
|
||||
|
||||
IMFS_get_token( node_name, new_name, &i );
|
||||
|
||||
info.sym_link.name = link_name;
|
||||
/*
|
||||
* Duplicate link name
|
||||
*/
|
||||
|
||||
info.sym_link.name = strdup( link_name);
|
||||
if (info.sym_link.name == NULL) {
|
||||
rtems_set_errno_and_return_minus_one( ENOMEM);
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a new link node.
|
||||
@@ -55,8 +64,10 @@ int IMFS_symlink(
|
||||
&info
|
||||
);
|
||||
|
||||
if ( !new_node )
|
||||
rtems_set_errno_and_return_minus_one( ENOMEM );
|
||||
if (new_node == NULL) {
|
||||
free( info.sym_link.name);
|
||||
rtems_set_errno_and_return_minus_one( ENOMEM);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
* IMFS file system operations table
|
||||
*/
|
||||
|
||||
rtems_filesystem_operations_table IMFS_ops = {
|
||||
const rtems_filesystem_operations_table IMFS_ops = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
@@ -54,7 +54,7 @@ rtems_filesystem_operations_table IMFS_ops = {
|
||||
* IMFS file system operations table
|
||||
*/
|
||||
|
||||
rtems_filesystem_operations_table miniIMFS_ops = {
|
||||
const rtems_filesystem_operations_table miniIMFS_ops = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
* miniIMFS file system operations table
|
||||
*/
|
||||
|
||||
rtems_filesystem_operations_table miniIMFS_ops = {
|
||||
const rtems_filesystem_operations_table miniIMFS_ops = {
|
||||
IMFS_eval_path,
|
||||
IMFS_evaluate_for_make,
|
||||
NULL, /* XXX IMFS_link, */
|
||||
|
||||
Reference in New Issue
Block a user