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