diff options
author | Chris Johns <chrisj@rtems.org> | 2010-02-19 03:23:11 +0000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2010-02-19 03:23:11 +0000 |
commit | cca94a248bd6ce791b34e9bf3a704b535df3e5ef (patch) | |
tree | 395109d3c6dffa253542ecb82be29e6e96cff2f6 /cpukit | |
parent | 2010-02-19 Chris Johns <chrisj@rtems.org> (diff) | |
download | rtems-cca94a248bd6ce791b34e9bf3a704b535df3e5ef.tar.bz2 |
2010-02-19 Chris Johns <chrisj@rtems.org>
* libblock/src/diskdevs.c: Create the devices as block devices.
* libmisc/shell/main_debugrfs.c, libmisc/shell/main_mkrfs.c,
libmisc/shell/main_mount_rfs.c: New.
* libmisc/shell/main_msdosfmt.c: Change the command to mkdos and
alias the old name.
* libmisc/shell/shellconfig.h, libmisc/Makefile.am: Add RFS
support.
* libfs/src/rfs/rtems-rfs-shell.c,
libfs/src/rfs/rtems-rfs-shell.h: Move the format command code into
the shell file.
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/ChangeLog | 17 | ||||
-rw-r--r-- | cpukit/libblock/src/diskdevs.c | 9 | ||||
-rw-r--r-- | cpukit/libfs/src/rfs/rtems-rfs-shell.c | 93 | ||||
-rw-r--r-- | cpukit/libfs/src/rfs/rtems-rfs-shell.h | 11 | ||||
-rw-r--r-- | cpukit/libmisc/Makefile.am | 5 | ||||
-rw-r--r-- | cpukit/libmisc/shell/main_debugrfs.c | 35 | ||||
-rw-r--r-- | cpukit/libmisc/shell/main_mkrfs.c | 35 | ||||
-rw-r--r-- | cpukit/libmisc/shell/main_mount_rfs.c | 36 | ||||
-rw-r--r-- | cpukit/libmisc/shell/main_msdosfmt.c | 6 | ||||
-rw-r--r-- | cpukit/libmisc/shell/shellconfig.h | 17 |
10 files changed, 248 insertions, 16 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index db91adf397..af9454f41a 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,20 @@ +2010-02-19 Chris Johns <chrisj@rtems.org> + + * libblock/src/diskdevs.c: Create the devices as block devices. + + * libmisc/shell/main_debugrfs.c, libmisc/shell/main_mkrfs.c, + libmisc/shell/main_mount_rfs.c: New. + + * libmisc/shell/main_msdosfmt.c: Change the command to mkdos and + alias the old name. + + * libmisc/shell/shellconfig.h, libmisc/Makefile.am: Add RFS + support. + + * libfs/src/rfs/rtems-rfs-shell.c, + libfs/src/rfs/rtems-rfs-shell.h: Move the format command code into + the shell file. + 2010-02-18 Chris Johns <chrisj@rtems.org> * libfs/src/rfs/rtems-rfs-bitmaps.c, diff --git a/cpukit/libblock/src/diskdevs.c b/cpukit/libblock/src/diskdevs.c index d75f2cbca5..1873b35549 100644 --- a/cpukit/libblock/src/diskdevs.c +++ b/cpukit/libblock/src/diskdevs.c @@ -199,16 +199,9 @@ create_disk(dev_t dev, const char *name, rtems_disk_device **dd_ptr) } if (name != NULL) { - rtems_device_major_number major = 0; - rtems_device_minor_number minor = 0; - - rtems_filesystem_split_dev_t(dev, major, minor); - - sc = rtems_io_register_name(name, major, minor); - if (sc != RTEMS_SUCCESSFUL) { + if (mknod(alloc_name, 0777 | S_IFBLK, dev) < 0) { free(alloc_name); free(dd); - return RTEMS_UNSATISFIED; } } diff --git a/cpukit/libfs/src/rfs/rtems-rfs-shell.c b/cpukit/libfs/src/rfs/rtems-rfs-shell.c index b1d25c2c67..1bc979a1ea 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-shell.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-shell.c @@ -22,6 +22,7 @@ #include <rtems/rfs/rtems-rfs-group.h> #include <rtems/rfs/rtems-rfs-inode.h> #include <rtems/rfs/rtems-rfs-dir.h> +#include <rtems/rtems-rfs-format.h> #include <sys/statvfs.h> @@ -608,7 +609,7 @@ rtems_rfs_shell_usage (const char* arg) } int -rtems_rfs_shell_debugrfs (int argc, char *argv[]) +rtems_shell_debugrfs (int argc, char *argv[]) { const rtems_rfs_shell_cmd table[] = { @@ -664,3 +665,93 @@ rtems_rfs_shell_debugrfs (int argc, char *argv[]) return 1; } + +int +rtems_shell_rfs_format (int argc, char* argv[]) +{ + rtems_rfs_format_config config; + const char* driver = NULL; + int arg; + + memset (&config, 0, sizeof (rtems_rfs_format_config)); + + for (arg = 1; arg < argc; arg++) + { + if (argv[arg][0] == '-') + { + switch (argv[arg][1]) + { + case 'v': + config.verbose = true; + break; + + case 's': + arg++; + if (arg >= argc) + { + printf ("error: block size needs an argument\n"); + return 1; + } + config.block_size = strtoul (argv[arg], 0, 0); + break; + + case 'b': + arg++; + if (arg >= argc) + { + printf ("error: group block count needs an argument\n"); + return 1; + } + config.group_blocks = strtoul (argv[arg], 0, 0); + break; + + case 'i': + arg++; + if (arg >= argc) + { + printf ("error: group inode count needs an argument\n"); + return 1; + } + config.group_inodes = strtoul (argv[arg], 0, 0); + break; + + case 'I': + config.initialise_inodes = true; + break; + + case 'o': + arg++; + if (arg >= argc) + { + printf ("error: inode percentage overhead needs an argument\n"); + return 1; + } + config.inode_overhead = strtoul (argv[arg], 0, 0); + break; + + default: + printf ("error: invalid option: %s\n", argv[arg]); + return 1; + } + } + else + { + if (!driver) + driver = argv[arg]; + else + { + printf ("error: only one driver name allowed: %s\n", argv[arg]); + return 1; + } + } + } + + if (rtems_rfs_format (driver, &config) < 0) + { + printf ("error: format of %s failed: %s\n", + driver, strerror (errno)); + return 1; + } + + return 0; +} diff --git a/cpukit/libfs/src/rfs/rtems-rfs-shell.h b/cpukit/libfs/src/rfs/rtems-rfs-shell.h index 31a3dc8266..c07b7c3167 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-shell.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-shell.h @@ -30,6 +30,15 @@ * @param argv The argument variables. * @return int The exit code for the command. A 0 is no error. */ -int rtems_rfs_shell_debugrfs (int argc, char *argv[]); +int rtems_shell_debugrfs (int argc, char *argv[]); + +/** + * The shell command for formatting an RFS file system. + * + * @param argc The argument count. + * @param argv The argument variables. + * @return int The exit code for the command. A 0 is no error. + */ +int rtems_shell_rfs_format (int argc, char* argv[]); #endif diff --git a/cpukit/libmisc/Makefile.am b/cpukit/libmisc/Makefile.am index 8955978608..ec0a9d29c5 100644 --- a/cpukit/libmisc/Makefile.am +++ b/cpukit/libmisc/Makefile.am @@ -95,8 +95,9 @@ libshell_a_SOURCES = shell/cat_file.c shell/cmds.c shell/internal.h \ shell/dd-misc.c shell/dd-position.c \ shell/main_hexdump.c shell/hexdump-conv.c shell/hexdump-display.c \ shell/hexdump-odsyntax.c shell/hexdump-parse.c shell/hexsyntax.c \ - shell/main_time.c shell/main_mknod.c \ - shell/main_setenv.c shell/main_getenv.c shell/main_unsetenv.c + shell/main_time.c shell/main_mknod.c shell/main_mount_rfs.c \ + shell/main_setenv.c shell/main_getenv.c shell/main_unsetenv.c \ + shell/main_mkrfs.c shell/main_debugrfs.c if LIBNETWORKING libshell_a_SOURCES += shell/main_mount_ftp.c shell/main_mount_tftp.c \ diff --git a/cpukit/libmisc/shell/main_debugrfs.c b/cpukit/libmisc/shell/main_debugrfs.c new file mode 100644 index 0000000000..5d4052d43a --- /dev/null +++ b/cpukit/libmisc/shell/main_debugrfs.c @@ -0,0 +1,35 @@ +/* + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> + +#include <rtems.h> +#include <rtems/shell.h> +#include <rtems/stringto.h> +#include <rtems/shellconfig.h> +#include <rtems/rtems-rfs-shell.h> +#include <rtems/fsmount.h> +#include "internal.h" + +#define OPTIONS "[-h]" + +rtems_shell_cmd_t rtems_shell_DEBUGRFS_Command = { + "debugrfs", /* name */ + "debugrfs " OPTIONS, /* usage */ + "files", /* topic */ + rtems_shell_debugrfs, /* command */ + NULL, /* alias */ + NULL /* next */ +}; diff --git a/cpukit/libmisc/shell/main_mkrfs.c b/cpukit/libmisc/shell/main_mkrfs.c new file mode 100644 index 0000000000..726b575b03 --- /dev/null +++ b/cpukit/libmisc/shell/main_mkrfs.c @@ -0,0 +1,35 @@ +/* + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> + +#include <rtems.h> +#include <rtems/shell.h> +#include <rtems/stringto.h> +#include <rtems/shellconfig.h> +#include <rtems/rtems-rfs-shell.h> +#include <rtems/fsmount.h> +#include "internal.h" + +#define OPTIONS "[-v] [-s blksz] [-b grpblk] [-i grpinode] [-I] [-o %inode]" + +rtems_shell_cmd_t rtems_shell_MKRFS_Command = { + "mkrfs", /* name */ + "mkrfs " OPTIONS " dev", /* usage */ + "files", /* topic */ + rtems_shell_rfs_format, /* command */ + NULL, /* alias */ + NULL /* next */ +}; diff --git a/cpukit/libmisc/shell/main_mount_rfs.c b/cpukit/libmisc/shell/main_mount_rfs.c new file mode 100644 index 0000000000..674556afce --- /dev/null +++ b/cpukit/libmisc/shell/main_mount_rfs.c @@ -0,0 +1,36 @@ +/* + * Shell Command Implmentation + * + * Author: Fernando RUIZ CASAS + * Work: fernando.ruiz@ctv.es + * Home: correo@fernando-ruiz.com + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> + +#include <rtems.h> +#include <rtems/shell.h> +#include <rtems/rtems-rfs.h> +#include <rtems/fsmount.h> +#include "internal.h" + +rtems_shell_filesystems_t rtems_shell_Mount_RFS = { + name: "rfs", + driver_needed: 1, + fs_ops: &rtems_rfs_ops, + mounter: rtems_shell_libc_mounter +}; + diff --git a/cpukit/libmisc/shell/main_msdosfmt.c b/cpukit/libmisc/shell/main_msdosfmt.c index 2f0e7f2c63..fc54966da7 100644 --- a/cpukit/libmisc/shell/main_msdosfmt.c +++ b/cpukit/libmisc/shell/main_msdosfmt.c @@ -166,10 +166,10 @@ int rtems_shell_main_msdos_format( #define OPTIONS "[-v label] [-r size] [-t any/12/16/32]" rtems_shell_cmd_t rtems_shell_MSDOSFMT_Command = { - "msdosfmt", /* name */ - "msdosfmt " OPTIONS " path # format disk", /* usage */ + "mkdos", /* name */ + "mkdos " OPTIONS " path # format disk", /* usage */ "files", /* topic */ rtems_shell_main_msdos_format, /* command */ - NULL, /* alias */ + "msdosfmt", /* alias */ NULL /* next */ }; diff --git a/cpukit/libmisc/shell/shellconfig.h b/cpukit/libmisc/shell/shellconfig.h index 3d731aa0ef..35b08f934a 100644 --- a/cpukit/libmisc/shell/shellconfig.h +++ b/cpukit/libmisc/shell/shellconfig.h @@ -50,6 +50,7 @@ extern rtems_shell_cmd_t rtems_shell_RMDIR_Command; extern rtems_shell_cmd_t rtems_shell_CHROOT_Command; extern rtems_shell_cmd_t rtems_shell_CHMOD_Command; extern rtems_shell_cmd_t rtems_shell_CAT_Command; +extern rtems_shell_cmd_t rtems_shell_MKRFS_Command; extern rtems_shell_cmd_t rtems_shell_MSDOSFMT_Command; extern rtems_shell_cmd_t rtems_shell_MV_Command; extern rtems_shell_cmd_t rtems_shell_RM_Command; @@ -62,6 +63,7 @@ extern rtems_shell_cmd_t rtems_shell_BLKSYNC_Command; extern rtems_shell_cmd_t rtems_shell_FDISK_Command; extern rtems_shell_cmd_t rtems_shell_DD_Command; extern rtems_shell_cmd_t rtems_shell_HEXDUMP_Command; +extern rtems_shell_cmd_t rtems_shell_DEBUGRFS_Command; extern rtems_shell_cmd_t rtems_shell_RTC_Command; @@ -91,6 +93,7 @@ extern rtems_shell_alias_t *rtems_shell_Initial_aliases[]; /* * Externs for mount command helpers */ +extern rtems_shell_filesystems_t rtems_shell_Mount_RFS; extern rtems_shell_filesystems_t rtems_shell_Mount_MSDOS; extern rtems_shell_filesystems_t rtems_shell_Mount_TFTP; extern rtems_shell_filesystems_t rtems_shell_Mount_FTP; @@ -292,6 +295,11 @@ extern rtems_shell_filesystems_t *rtems_shell_Mount_filesystems[]; &rtems_shell_CAT_Command, #endif #if (defined(CONFIGURE_SHELL_COMMANDS_ALL) && \ + !defined(CONFIGURE_SHELL_NO_COMMAND_MKRFS)) || \ + defined(CONFIGURE_SHELL_COMMAND_MKRFS) + &rtems_shell_MKRFS_Command, + #endif + #if (defined(CONFIGURE_SHELL_COMMANDS_ALL) && \ !defined(CONFIGURE_SHELL_NO_COMMAND_MSDOSFMT)) || \ defined(CONFIGURE_SHELL_COMMAND_MSDOSFMT) &rtems_shell_MSDOSFMT_Command, @@ -351,6 +359,11 @@ extern rtems_shell_filesystems_t *rtems_shell_Mount_filesystems[]; defined(CONFIGURE_SHELL_COMMAND_HEXDUMP) &rtems_shell_HEXDUMP_Command, #endif + #if (defined(CONFIGURE_SHELL_COMMANDS_ALL) && \ + !defined(CONFIGURE_SHELL_NO_COMMAND_DEBUGRFS)) || \ + defined(CONFIGURE_SHELL_COMMAND_DEBUGRFS) + &rtems_shell_DEBUGRFS_Command, + #endif /* * RTEMS Related commands @@ -381,7 +394,6 @@ extern rtems_shell_filesystems_t *rtems_shell_Mount_filesystems[]; &rtems_shell_WKSPACE_INFO_Command, #endif - /* * Malloc family commands */ @@ -437,6 +449,9 @@ extern rtems_shell_filesystems_t *rtems_shell_Mount_filesystems[]; !defined(CONFIGURE_SHELL_COMMAND_NO_MOUNT)) || \ defined(CONFIGURE_SHELL_COMMAND_MOUNT) rtems_shell_filesystems_t *rtems_shell_Mount_filesystems[] = { + #if defined(CONFIGURE_SHELL_MOUNT_RFS) + &rtems_shell_Mount_RFS, + #endif #if defined(CONFIGURE_SHELL_MOUNT_MSDOS) &rtems_shell_Mount_MSDOS, #endif |