This is an automated email from the ASF dual-hosted git repository.

jiuzhudong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git


The following commit(s) were added to refs/heads/master by this push:
     new 197401975 mtdconfig: support ram_mtdconfig device && lomtdconfig device
197401975 is described below

commit 197401975a2fe985a8f5c2740a6004b6e6329ee4
Author: guohao15 <[email protected]>
AuthorDate: Tue Dec 17 11:08:19 2024 +0800

    mtdconfig: support ram_mtdconfig device && lomtdconfig device
    
    For nvs test in qemu
    
    Signed-off-by: guohao15 <[email protected]>
---
 nshlib/nsh_command.c |  6 +++++
 nshlib/nsh_fscmds.c  | 74 +++++++++++++++++++++++++---------------------------
 2 files changed, 42 insertions(+), 38 deletions(-)

diff --git a/nshlib/nsh_command.c b/nshlib/nsh_command.c
index af0084218..cace8eeac 100644
--- a/nshlib/nsh_command.c
+++ b/nshlib/nsh_command.c
@@ -322,9 +322,15 @@ static const struct cmdmap_s g_cmdmap[] =
 
 #ifndef CONFIG_DISABLE_MOUNTPOINT
 #  if defined(CONFIG_MTD_LOOP) && !defined(CONFIG_NSH_DISABLE_LOMTD)
+#    ifdef CONFIG_MTD_CONFIG
+  CMD_MAP("lomtd",    cmd_lomtd,    3, 10,
+    "[-d <dev-path>] | [[-o <offset>] [-e <erase-size>] "
+    "[-b <sect-size>] [-c <configdata>] <dev-path> <file-path>]]"),
+#    else
   CMD_MAP("lomtd",    cmd_lomtd,    3, 9,
     "[-d <dev-path>] | [[-o <offset>] [-e <erase-size>] "
     "[-b <sect-size>] <dev-path> <file-path>]]"),
+#    endif
 #  endif
 #endif
 
diff --git a/nshlib/nsh_fscmds.c b/nshlib/nsh_fscmds.c
index c1abcd357..447d45e72 100644
--- a/nshlib/nsh_fscmds.c
+++ b/nshlib/nsh_fscmds.c
@@ -965,8 +965,8 @@ errout:
  * Name: cmd_losetup
  ****************************************************************************/
 
-#ifndef CONFIG_DISABLE_MOUNTPOINT
-#   if defined(CONFIG_DEV_LOOP) && !defined(CONFIG_NSH_DISABLE_LOSETUP)
+#if !defined(CONFIG_DISABLE_MOUNTPOINT) && defined(CONFIG_DEV_LOOP) && \
+    !defined(CONFIG_NSH_DISABLE_LOSETUP)
 int cmd_losetup(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
 {
   FAR char *loopdev = NULL;
@@ -1120,14 +1120,13 @@ errout_with_paths:
   return ret;
 }
 #endif
-#endif
 
 /****************************************************************************
  * Name: cmd_losmart
  ****************************************************************************/
 
-#ifndef CONFIG_DISABLE_MOUNTPOINT
-#   if defined(CONFIG_SMART_DEV_LOOP) && !defined(CONFIG_NSH_DISABLE_LOSMART)
+#if !defined(CONFIG_DISABLE_MOUNTPOINT) && defined(CONFIG_SMART_DEV_LOOP) && \
+    !defined(CONFIG_NSH_DISABLE_LOSMART)
 int cmd_losmart(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
 {
   FAR char *loopdev = NULL;
@@ -1292,14 +1291,13 @@ errout_with_paths:
   return ret;
 }
 #endif
-#endif
 
 /****************************************************************************
  * Name: cmd_lomtd
  ****************************************************************************/
 
-#ifndef CONFIG_DISABLE_MOUNTPOINT
-#  if defined(CONFIG_MTD_LOOP) && !defined(CONFIG_NSH_DISABLE_LOMTD)
+#if !defined(CONFIG_DISABLE_MOUNTPOINT) && defined(CONFIG_MTD_LOOP) && \
+    !defined(CONFIG_NSH_DISABLE_LOMTD)
 int cmd_lomtd(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
 {
   FAR char *loopdev = NULL;
@@ -1310,6 +1308,9 @@ int cmd_lomtd(FAR struct nsh_vtbl_s *vtbl, int argc, FAR 
char **argv)
   int sectsize = -1;
   off_t offset = 0;
   bool badarg = false;
+#  ifdef CONFIG_MTD_CONFIG
+  int configdata = 0;
+#  endif
   int ret = ERROR;
   int option;
   int fd;
@@ -1317,14 +1318,17 @@ int cmd_lomtd(FAR struct nsh_vtbl_s *vtbl, int argc, 
FAR char **argv)
   /* Get the lomtd options:  Two forms are supported:
    *
    *   lomtd -d <loop-device>
-   *   lomtd [-o <offset>] [-e erasesize] [-b sectsize]
+   *   lomtd [-o <offset>] [-e erasesize] [-b sectsize] [-c configdata]
    *         <loop-device> <filename>
    *
    * NOTE that the -o and -r options are accepted with the -d option, but
    * will be ignored.
    */
-
+#  ifdef CONFIG_MTD_CONFIG
+  while ((option = getopt(argc, argv, "d:o:e:b:c:")) != ERROR)
+#  else
   while ((option = getopt(argc, argv, "d:o:e:b:")) != ERROR)
+#  endif
     {
       switch (option)
         {
@@ -1345,6 +1349,12 @@ int cmd_lomtd(FAR struct nsh_vtbl_s *vtbl, int argc, FAR 
char **argv)
           sectsize = atoi(optarg);
           break;
 
+#  ifdef CONFIG_MTD_CONFIG
+        case 'c':
+          configdata = atoi(optarg);
+          break;
+#  endif
+
         case '?':
         default:
           nsh_error(vtbl, g_fmtarginvalid, argv[0]);
@@ -1420,11 +1430,14 @@ int cmd_lomtd(FAR struct nsh_vtbl_s *vtbl, int argc, 
FAR char **argv)
     {
       /* Set up the loop device */
 
-      setup.devname   = loopdev;    /* The loop block device to be created */
-      setup.filename  = filepath;   /* The file or character device to use */
-      setup.sectsize  = sectsize;   /* The sector size to use with the block 
device */
-      setup.erasesize = erasesize;  /* The sector size to use with the block 
device */
-      setup.offset    = offset;     /* An offset that may be applied to the 
device */
+      setup.devname    = loopdev;    /* The loop block device to be created */
+      setup.filename   = filepath;   /* The file or character device to use */
+      setup.sectsize   = sectsize;   /* The sector size to use with the block 
device */
+      setup.erasesize  = erasesize;  /* The sector size to use with the block 
device */
+      setup.offset     = offset;     /* An offset that may be applied to the 
device */
+#  ifdef CONFIG_MTD_CONFIG
+      setup.configdata = configdata; /* Is a loop mtdconfig device */
+#  endif
 
       ret = ioctl(fd, MTD_LOOPIOC_SETUP,
                   (unsigned long)((uintptr_t)&setup));
@@ -1455,7 +1468,6 @@ errout_with_paths:
 
   return ret;
 }
-#  endif
 #endif
 
 /****************************************************************************
@@ -1661,8 +1673,7 @@ int cmd_ls(FAR struct nsh_vtbl_s *vtbl, int argc, FAR 
char **argv)
  * Name: cmd_mkdir
  ****************************************************************************/
 
-#ifdef NSH_HAVE_DIROPTS
-#ifndef CONFIG_NSH_DISABLE_MKDIR
+#if defined(NSH_HAVE_DIROPTS) && !defined(CONFIG_NSH_DISABLE_MKDIR)
 int cmd_mkdir(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
 {
   FAR char *fullpath = NULL;
@@ -1722,14 +1733,13 @@ int cmd_mkdir(FAR struct nsh_vtbl_s *vtbl, int argc, 
FAR char **argv)
   return ret;
 }
 #endif
-#endif
 
 /****************************************************************************
  * Name: cmd_mkfatfs
  ****************************************************************************/
 
-#if !defined(CONFIG_DISABLE_MOUNTPOINT) && defined(CONFIG_FSUTILS_MKFATFS)
-#ifndef CONFIG_NSH_DISABLE_MKFATFS
+#if !defined(CONFIG_DISABLE_MOUNTPOINT) && defined(CONFIG_FSUTILS_MKFATFS) && \
+    !defined(CONFIG_NSH_DISABLE_MKFATFS)
 int cmd_mkfatfs(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
 {
   struct fat_format_s fmt = FAT_FORMAT_INITIALIZER;
@@ -1825,7 +1835,6 @@ int cmd_mkfatfs(FAR struct nsh_vtbl_s *vtbl, int argc, 
FAR char **argv)
   return ret;
 }
 #endif
-#endif
 
 /****************************************************************************
  * Name: cmd_mkfifo
@@ -1962,8 +1971,7 @@ errout_with_fmt:
  ****************************************************************************/
 
 #if !defined(CONFIG_DISABLE_MOUNTPOINT) && defined(CONFIG_FS_SMARTFS) && \
-    defined(CONFIG_FSUTILS_MKSMARTFS)
-#ifndef CONFIG_NSH_DISABLE_MKSMARTFS
+    defined(CONFIG_FSUTILS_MKSMARTFS) && !defined(CONFIG_NSH_DISABLE_MKSMARTFS)
 int cmd_mksmartfs(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
 {
   FAR char *fullpath = NULL;
@@ -2048,14 +2056,12 @@ int cmd_mksmartfs(FAR struct nsh_vtbl_s *vtbl, int 
argc, FAR char **argv)
   return ret;
 }
 #endif
-#endif
 
 /****************************************************************************
  * Name: cmd_mv
  ****************************************************************************/
 
-#ifdef NSH_HAVE_DIROPTS
-#ifndef CONFIG_NSH_DISABLE_MV
+#if defined(NSH_HAVE_DIROPTS) && !defined(CONFIG_NSH_DISABLE_MV)
 int cmd_mv(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
 {
   UNUSED(argc);
@@ -2098,7 +2104,6 @@ errout_with_oldpath:
   return ret;
 }
 #endif
-#endif
 
 /****************************************************************************
  * Name: cmd_readlink
@@ -2141,9 +2146,7 @@ int cmd_readlink(FAR struct nsh_vtbl_s *vtbl, int argc, 
FAR char **argv)
  * Name: cmd_rm
  ****************************************************************************/
 
-#ifdef NSH_HAVE_DIROPTS
-#ifndef CONFIG_NSH_DISABLE_RM
-
+#if defined(NSH_HAVE_DIROPTS) && !defined(CONFIG_NSH_DISABLE_RM)
 static int unlink_recursive(FAR char *path, FAR struct stat *stat)
 {
   struct dirent *d;
@@ -2273,14 +2276,12 @@ int cmd_rm(FAR struct nsh_vtbl_s *vtbl, int argc, FAR 
char **argv)
   return ret;
 }
 #endif
-#endif
 
 /****************************************************************************
  * Name: cmd_rmdir
  ****************************************************************************/
 
-#ifdef NSH_HAVE_DIROPTS
-#ifndef CONFIG_NSH_DISABLE_RMDIR
+#if defined(NSH_HAVE_DIROPTS) && !defined(CONFIG_NSH_DISABLE_RMDIR)
 int cmd_rmdir(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
 {
   UNUSED(argc);
@@ -2302,7 +2303,6 @@ int cmd_rmdir(FAR struct nsh_vtbl_s *vtbl, int argc, FAR 
char **argv)
   return ret;
 }
 #endif
-#endif
 
 /****************************************************************************
  * Name: cmd_source
@@ -2431,8 +2431,7 @@ errout:
  * Name: cmd_truncate
  ****************************************************************************/
 
-#ifndef CONFIG_DISABLE_MOUNTPOINT
-#ifndef CONFIG_NSH_DISABLE_TRUNCATE
+#if !defined(CONFIG_DISABLE_MOUNTPOINT) && 
!defined(CONFIG_NSH_DISABLE_TRUNCATE)
 int cmd_truncate(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
 {
   UNUSED(argc);
@@ -2536,7 +2535,6 @@ int cmd_truncate(FAR struct nsh_vtbl_s *vtbl, int argc, 
FAR char **argv)
   return ret;
 }
 #endif
-#endif
 
 /****************************************************************************
  * Name: cmd_fdinfo

Reply via email to