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.
This commit is contained in:
Chris Johns
2010-02-19 03:23:11 +00:00
parent 37c0822dc2
commit cca94a248b
10 changed files with 248 additions and 16 deletions

View File

@@ -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,

View File

@@ -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;
}
}

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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 \

View File

@@ -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 */
};

View File

@@ -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 */
};

View File

@@ -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
};

View File

@@ -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 */
};

View File

@@ -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;
@@ -291,6 +294,11 @@ extern rtems_shell_filesystems_t *rtems_shell_Mount_filesystems[];
defined(CONFIGURE_SHELL_COMMAND_CAT)
&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)
@@ -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