diff options
Diffstat (limited to 'cpukit/sapi/include/confdefs.h')
-rw-r--r-- | cpukit/sapi/include/confdefs.h | 258 |
1 files changed, 232 insertions, 26 deletions
diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index 50944b0f49..a65ec590f7 100644 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -174,13 +174,192 @@ rtems_fs_init_functions_t rtems_fs_init_helper = extern int rtems_telnetd_maximum_ptys; #endif +/* + * Filesystems and Mount Table Configuration. + * + * Defines to control the file system: + * + * CONFIGURE_APPLICATION_DISABLE_FILESYSTEM: + * Disable the RTEMS filesystems. You get an empty DEVFS. + * + * CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM: + * Use the DEVFS as the root file system. Limited functions are + * provided when this is used. + * + * CONFIGURE_FILESYSTEM_ALL: + * Add file filesystems to the default filesystem table. + * + * List of available file systems. You can define as many as you like: + * CONFIGURE_FILESYSTEM_miniIMFS - MiniIMFS, use DEVFS now + * CONFIGURE_FILESYSTEM_IMFS - In Memory File System (IMFS) + * CONFIGURE_FILESYSTEM_DEVFS - Device File System (DSVFS) + * CONFIGURE_FILESYSTEM_TFTPFS - TFTP File System, networking enabled + * CONFIGURE_FILESYSTEM_FTPFS - FTP File System, networking enabled + * CONFIGURE_FILESYSTEM_NFSFS - Network File System, networking enabled + * CONFIGURE_FILESYSTEM_DOSFS - DOS File System, uses libblock + * CONFIGURE_FILESYSTEM_RFS - RTEMS File System (RFS), uses libblock + * + * Combinations: + * + * - If nothing is defined the base file system is the IMFS. + * + * - If CONFIGURE_APPLICATION_DISABLE_FILESYSTEM is defined all filesystem + * are disabled by force and an empty DEVFS is created. + * + * - If CONFIGURE_USE_DEV_AS_BASE_FILESYSTEM is defined all filesystem + * are disabled by force and DEVFS is defined. + */ + #ifdef CONFIGURE_INIT - #ifdef CONFIGURE_APPLICATION_DISABLE_FILESYSTEM - #if defined(RTEMS_COVERAGE) - uint32_t rtems_device_table_size = 0; + + /* + * Include all file systems. Do this before checking if the filesystem has + * been disabled. + */ + #ifdef CONFIGURE_FILESYSTEM_ALL + #define CONFIGURE_FILESYSTEM_miniIMFS + #define CONFIGURE_FILESYSTEM_IMFS + #define CONFIGURE_FILESYSTEM_DEVFS + #define CONFIGURE_FILESYSTEM_TFTPFS + #define CONFIGURE_FILESYSTEM_FTPFS + #define CONFIGURE_FILESYSTEM_NFSFS + #define CONFIGURE_FILESYSTEM_DOSFS + #define CONFIGURE_FILESYSTEM_RFS + #endif + + /* + * If disabling the file system undef everything. If DEVFS as the base + * filesystem undefine all other filesystems because you cannot mount other + * filesystems. + */ + #if defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) || \ + defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) + #if defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) + #undef CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM #endif + #undef CONFIGURE_FILESYSTEM_miniIMFS + #undef CONFIGURE_FILESYSTEM_IMFS + #undef CONFIGURE_FILESYSTEM_DEVFS + #undef CONFIGURE_FILESYSTEM_TFTPFS + #undef CONFIGURE_FILESYSTEM_FTPFS + #undef CONFIGURE_FILESYSTEM_NFSFS + #undef CONFIGURE_FILESYSTEM_DOSFS + #undef CONFIGURE_FILESYSTEM_RFS + #endif + + /* + * If the base filesystem is DEVFS define it else define IMFS. + * We will have either DEVFS or IMFS defined after this. + */ + #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) && \ + !defined(CONFIGURE_FILESYSTEM_DEVFS) + #define CONFIGURE_FILESYSTEM_DEVFS + #elif !defined(CONFIGURE_FILESYSTEM_IMFS) + #define CONFIGURE_FILESYSTEM_IMFS + #endif + +#endif + +/** + * IMFS + */ +#include <rtems/imfs.h> + +/** + * This specifies the number of bytes per block for files within the IMFS. + * There are a maximum number of blocks per file so this dictates the maximum + * size of a file. This has to be balanced with the unused portion of each + * block that might be wasted. + */ +#ifndef CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK + #define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK \ + IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK +#endif + +#ifdef CONFIGURE_INIT + int imfs_rq_memfile_bytes_per_block = CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK; +#endif /* CONFIGURE_INIT */ + +/** + * This defines the miniIMFS file system table entry. + */ +#if !defined(CONFIGURE_FILESYSTEM_ENTRY_miniIMFS) && \ + defined(CONFIGURE_FILESYSTEM_miniIMFS) +#define CONFIGURE_FILESYSTEM_ENTRY_miniIMFS { "mimfs", miniIMFS_initialize } +#endif + +/** + * This defines the IMFS file system table entry. + */ +#if !defined(CONFIGURE_FILESYSTEM_ENTRY_IMFS) && \ + defined(CONFIGURE_FILESYSTEM_IMFS) +#define CONFIGURE_FILESYSTEM_ENTRY_IMFS { "imfs", IMFS_initialize } +#endif + +/** + * DEVFS + */ +#if !defined(CONFIGURE_FILESYSTEM_ENTRY_DEVFS) && \ + defined(CONFIGURE_FILESYSTEM_DEVFS) +#include <rtems/devfs.h> +#define CONFIGURE_FILESYSTEM_ENTRY_DEVFS { "devfs", devFS_initialize } +#endif + +#ifdef RTEMS_NETWORKING + /** + * FTPFS + */ + #if !defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS) && \ + defined(CONFIGURE_FILESYSTEM_FTPFS) + #include <rtems/ftpfs.h> + #define CONFIGURE_FILESYSTEM_ENTRY_FTPFS { "ftpfs", rtems_ftpfs_initialize } + #endif + + /** + * TFTPFS + */ + #if !defined(CONFIGURE_FILESYSTEM_ENTRY_TFTPFS) && \ + defined(CONFIGURE_FILESYSTEM_TFTPFS) + #include <rtems/tftp.h> + #define CONFIGURE_FILESYSTEM_ENTRY_TFTPFS { "tftpfs", rtems_tftpfs_initialize } + #endif + + /** + * NFSFS + */ + #if !defined(CONFIGURE_FILESYSTEM_ENTRY_NFSFS) && \ + defined(CONFIGURE_FILESYSTEM_NFSFS) + #include <librtemsNfs.h> + #define CONFIGURE_FILESYSTEM_ENTRY_NFSFS { "nfs", rtems_nfsfs_initialize } + #endif +#endif + +/** + * DOSFS + */ +#if !defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS) && \ + defined(CONFIGURE_FILESYSTEM_DOSFS) + #include <rtems/dosfs.h> + #define CONFIGURE_FILESYSTEM_ENTRY_DOSFS { "dosfs", rtems_dosfs_initialize } +#endif + +/** + * RFS + */ +#if !defined(CONFIGURE_FILESYSTEM_ENTRY_RFS) && \ + defined(CONFIGURE_FILESYSTEM_RFS) + #include <rtems/rtems-rfs.h> + #define CONFIGURE_FILESYSTEM_ENTRY_RFS { "rfs", rtems_rfs_rtems_initialise } +#endif + +#ifdef CONFIGURE_INIT + + /* + * DEVFS variables. + */ + #if defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) && !defined(RTEMS_COVERAGE) #define CONFIGURE_MEMORY_FOR_DEVFS 0 - #elif defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) + #elif defined(CONFIGURE_FILESYSTEM_DEVFS) #ifndef CONFIGURE_MAXIMUM_DEVICES #define CONFIGURE_MAXIMUM_DEVICES 4 #endif @@ -195,28 +374,54 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #else #define CONFIGURE_MEMORY_FOR_DEVFS 0 #endif -#endif -/* - * Mount Table Configuration - */ -#include <rtems/imfs.h> + /** + * Table termination record. + */ + #define CONFIGURE_FILESYSTEM_NULL { NULL, NULL } -/** - * This specifies the number of bytes per block for files within - * the IMFS. There are a maximum number of blocks per file so - * this dictates the maximum size of a file. This has to be balanced - * with the unused portion of each block that might be wasted. - */ -#ifndef CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK - #define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK \ - IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK -#endif -#ifdef CONFIGURE_INIT - int imfs_rq_memfile_bytes_per_block = CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK; -#endif /* CONFIGURE_INIT */ + /** + * The default file system table. Must be terminated with the NULL entry if + * you provide your own. + */ + #ifndef CONFIGURE_HAS_OWN_FILESYSTEM_TABLE + const rtems_filesystem_table_t configuration_filesystem_table[] = { + #if defined(CONFIGURE_FILESYSTEM_miniIMFS) && \ + defined(CONFIGURE_FILESYSTEM_ENTRY_miniIMFS) + CONFIGURE_FILESYSTEM_ENTRY_miniIMFS, + #endif + #if defined(CONFIGURE_FILESYSTEM_IMFS) && \ + defined(CONFIGURE_FILESYSTEM_ENTRY_IMFS) + CONFIGURE_FILESYSTEM_ENTRY_IMFS, + #endif + #if defined(CONFIGURE_FILESYSTEM_DEVFS) && \ + defined(CONFIGURE_FILESYSTEM_ENTRY_DEVFS) + CONFIGURE_FILESYSTEM_ENTRY_DEVFS, + #endif + #if defined(CONFIGURE_FILESYSTEM_TFTPFS) && \ + defined(CONFIGURE_FILESYSTEM_ENTRY_TFTPFS) + CONFIGURE_FILESYSTEM_ENTRY_TFTPFS, + #endif + #if defined(CONFIGURE_FILESYSTEM_FTPFS) && \ + defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS) + CONFIGURE_FILESYSTEM_ENTRY_FTPFS, + #endif + #if defined(CONFIGURE_FILESYSTEM_NFSFS) && \ + defined(CONFIGURE_FILESYSTEM_ENTRY_NFSFS) + CONFIGURE_FILESYSTEM_ENTRY_NFSFS, + #endif + #if defined(CONFIGURE_FILESYSTEM_DOSFS) && \ + defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS) + CONFIGURE_FILESYSTEM_ENTRY_DOSFS, + #endif + #if defined(CONFIGURE_FILESYSTEM_RFS) && \ + defined(CONFIGURE_FILESYSTEM_ENTRY_RFS) + CONFIGURE_FILESYSTEM_ENTRY_RFS, + #endif + CONFIGURE_FILESYSTEM_NULL + }; + #endif -#ifdef CONFIGURE_INIT /** * This disables the inclusion of pipe support in the full IMFS. * @@ -234,11 +439,11 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifndef CONFIGURE_HAS_OWN_MOUNT_TABLE const rtems_filesystem_mount_table_t configuration_mount_table = { #ifdef CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM - &IMFS_ops, + "imfs", #elif defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) - &devFS_ops, + "devfs", #else /* using miniIMFS as base filesystem */ - &miniIMFS_ops, + "mimfs", #endif RTEMS_FILESYSTEM_READ_WRITE, NULL, @@ -249,6 +454,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = *rtems_filesystem_mount_table = &configuration_mount_table; const int rtems_filesystem_mount_table_size = 1; #endif + #endif /* |