forked from Imagelibrary/rtems
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:
@@ -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>
|
2010-02-18 Chris Johns <chrisj@rtems.org>
|
||||||
|
|
||||||
* libfs/src/rfs/rtems-rfs-bitmaps.c,
|
* libfs/src/rfs/rtems-rfs-bitmaps.c,
|
||||||
|
|||||||
@@ -199,16 +199,9 @@ create_disk(dev_t dev, const char *name, rtems_disk_device **dd_ptr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (name != NULL) {
|
if (name != NULL) {
|
||||||
rtems_device_major_number major = 0;
|
if (mknod(alloc_name, 0777 | S_IFBLK, dev) < 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) {
|
|
||||||
free(alloc_name);
|
free(alloc_name);
|
||||||
free(dd);
|
free(dd);
|
||||||
|
|
||||||
return RTEMS_UNSATISFIED;
|
return RTEMS_UNSATISFIED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#include <rtems/rfs/rtems-rfs-group.h>
|
#include <rtems/rfs/rtems-rfs-group.h>
|
||||||
#include <rtems/rfs/rtems-rfs-inode.h>
|
#include <rtems/rfs/rtems-rfs-inode.h>
|
||||||
#include <rtems/rfs/rtems-rfs-dir.h>
|
#include <rtems/rfs/rtems-rfs-dir.h>
|
||||||
|
#include <rtems/rtems-rfs-format.h>
|
||||||
|
|
||||||
#include <sys/statvfs.h>
|
#include <sys/statvfs.h>
|
||||||
|
|
||||||
@@ -608,7 +609,7 @@ rtems_rfs_shell_usage (const char* arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
rtems_rfs_shell_debugrfs (int argc, char *argv[])
|
rtems_shell_debugrfs (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
const rtems_rfs_shell_cmd table[] =
|
const rtems_rfs_shell_cmd table[] =
|
||||||
{
|
{
|
||||||
@@ -664,3 +665,93 @@ rtems_rfs_shell_debugrfs (int argc, char *argv[])
|
|||||||
|
|
||||||
return 1;
|
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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -30,6 +30,15 @@
|
|||||||
* @param argv The argument variables.
|
* @param argv The argument variables.
|
||||||
* @return int The exit code for the command. A 0 is no error.
|
* @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
|
#endif
|
||||||
|
|||||||
@@ -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/dd-misc.c shell/dd-position.c \
|
||||||
shell/main_hexdump.c shell/hexdump-conv.c shell/hexdump-display.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/hexdump-odsyntax.c shell/hexdump-parse.c shell/hexsyntax.c \
|
||||||
shell/main_time.c shell/main_mknod.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_setenv.c shell/main_getenv.c shell/main_unsetenv.c \
|
||||||
|
shell/main_mkrfs.c shell/main_debugrfs.c
|
||||||
|
|
||||||
if LIBNETWORKING
|
if LIBNETWORKING
|
||||||
libshell_a_SOURCES += shell/main_mount_ftp.c shell/main_mount_tftp.c \
|
libshell_a_SOURCES += shell/main_mount_ftp.c shell/main_mount_tftp.c \
|
||||||
|
|||||||
35
cpukit/libmisc/shell/main_debugrfs.c
Normal file
35
cpukit/libmisc/shell/main_debugrfs.c
Normal 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 */
|
||||||
|
};
|
||||||
35
cpukit/libmisc/shell/main_mkrfs.c
Normal file
35
cpukit/libmisc/shell/main_mkrfs.c
Normal 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 */
|
||||||
|
};
|
||||||
36
cpukit/libmisc/shell/main_mount_rfs.c
Normal file
36
cpukit/libmisc/shell/main_mount_rfs.c
Normal 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
|
||||||
|
};
|
||||||
|
|
||||||
@@ -166,10 +166,10 @@ int rtems_shell_main_msdos_format(
|
|||||||
#define OPTIONS "[-v label] [-r size] [-t any/12/16/32]"
|
#define OPTIONS "[-v label] [-r size] [-t any/12/16/32]"
|
||||||
|
|
||||||
rtems_shell_cmd_t rtems_shell_MSDOSFMT_Command = {
|
rtems_shell_cmd_t rtems_shell_MSDOSFMT_Command = {
|
||||||
"msdosfmt", /* name */
|
"mkdos", /* name */
|
||||||
"msdosfmt " OPTIONS " path # format disk", /* usage */
|
"mkdos " OPTIONS " path # format disk", /* usage */
|
||||||
"files", /* topic */
|
"files", /* topic */
|
||||||
rtems_shell_main_msdos_format, /* command */
|
rtems_shell_main_msdos_format, /* command */
|
||||||
NULL, /* alias */
|
"msdosfmt", /* alias */
|
||||||
NULL /* next */
|
NULL /* next */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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_CHROOT_Command;
|
||||||
extern rtems_shell_cmd_t rtems_shell_CHMOD_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_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_MSDOSFMT_Command;
|
||||||
extern rtems_shell_cmd_t rtems_shell_MV_Command;
|
extern rtems_shell_cmd_t rtems_shell_MV_Command;
|
||||||
extern rtems_shell_cmd_t rtems_shell_RM_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_FDISK_Command;
|
||||||
extern rtems_shell_cmd_t rtems_shell_DD_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_HEXDUMP_Command;
|
||||||
|
extern rtems_shell_cmd_t rtems_shell_DEBUGRFS_Command;
|
||||||
|
|
||||||
extern rtems_shell_cmd_t rtems_shell_RTC_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
|
* 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_MSDOS;
|
||||||
extern rtems_shell_filesystems_t rtems_shell_Mount_TFTP;
|
extern rtems_shell_filesystems_t rtems_shell_Mount_TFTP;
|
||||||
extern rtems_shell_filesystems_t rtems_shell_Mount_FTP;
|
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)
|
defined(CONFIGURE_SHELL_COMMAND_CAT)
|
||||||
&rtems_shell_CAT_Command,
|
&rtems_shell_CAT_Command,
|
||||||
#endif
|
#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) && \
|
#if (defined(CONFIGURE_SHELL_COMMANDS_ALL) && \
|
||||||
!defined(CONFIGURE_SHELL_NO_COMMAND_MSDOSFMT)) || \
|
!defined(CONFIGURE_SHELL_NO_COMMAND_MSDOSFMT)) || \
|
||||||
defined(CONFIGURE_SHELL_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)
|
defined(CONFIGURE_SHELL_COMMAND_HEXDUMP)
|
||||||
&rtems_shell_HEXDUMP_Command,
|
&rtems_shell_HEXDUMP_Command,
|
||||||
#endif
|
#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
|
* RTEMS Related commands
|
||||||
@@ -381,7 +394,6 @@ extern rtems_shell_filesystems_t *rtems_shell_Mount_filesystems[];
|
|||||||
&rtems_shell_WKSPACE_INFO_Command,
|
&rtems_shell_WKSPACE_INFO_Command,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Malloc family commands
|
* 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_NO_MOUNT)) || \
|
||||||
defined(CONFIGURE_SHELL_COMMAND_MOUNT)
|
defined(CONFIGURE_SHELL_COMMAND_MOUNT)
|
||||||
rtems_shell_filesystems_t *rtems_shell_Mount_filesystems[] = {
|
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)
|
#if defined(CONFIGURE_SHELL_MOUNT_MSDOS)
|
||||||
&rtems_shell_Mount_MSDOS,
|
&rtems_shell_Mount_MSDOS,
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user