mtdconfig: support ram_mtdconfig device && lomtdconfig device

For nvs test in qemu

Signed-off-by: guohao15 <guohao15@xiaomi.com>
This commit is contained in:
guohao15 2024-12-17 11:08:19 +08:00 committed by Donny(董九柱)
parent a454cf4d94
commit 197401975a
2 changed files with 42 additions and 38 deletions

View file

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

View file

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