You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2024/09/18 04:16:07 UTC
(nuttx-apps) branch master updated: module/sotest: Try devminor of romdisk
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang 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 dae4d7572 module/sotest: Try devminor of romdisk
dae4d7572 is described below
commit dae4d7572fdbd869b4790268845f2be7b363342c
Author: wangjianyu3 <wa...@xiaomi.com>
AuthorDate: Fri Jun 21 20:12:27 2024 +0800
module/sotest: Try devminor of romdisk
For case that /dev/ram${EXAMPLES_SOTEST_DEVMINOR}(e.g. /dev/ram0) already exists, and users may not care which device to use.
Signed-off-by: wangjianyu3 <wa...@xiaomi.com>
---
examples/sotest/Kconfig | 11 ++++++-----
examples/sotest/sotest_main.c | 33 ++++++++++++++++++++-------------
2 files changed, 26 insertions(+), 18 deletions(-)
diff --git a/examples/sotest/Kconfig b/examples/sotest/Kconfig
index eae61b5a6..03ca9b962 100644
--- a/examples/sotest/Kconfig
+++ b/examples/sotest/Kconfig
@@ -35,13 +35,14 @@ config EXAMPLES_SOTEST_BUILTINFS
if EXAMPLES_SOTEST_BUILTINFS
-config EXAMPLES_SOTEST_DEVMINOR
- int "ROMFS Minor Device Number"
- default 0
+config EXAMPLES_SOTEST_DEVMINOR_MAX
+ int "ROMFS Max Minor Device Number"
+ default 5
---help---
- The minor device number of the ROMFS block. For example, the N in /dev/ramN.
+ The max minor device number of the ROMFS block will be tried.
+ For example, from /dev/ram0 to /dev/ramN.
Used for registering the RAM block driver that will hold the ROMFS file system
- containing the SOTEST executables to be tested. Default: 0
+ containing the SOTEST executables to be tested. Default: 5
endif # EXAMPLES_SOTEST_BUILTINFS
diff --git a/examples/sotest/sotest_main.c b/examples/sotest/sotest_main.c
index 2f63ef60b..de2f5d74e 100644
--- a/examples/sotest/sotest_main.c
+++ b/examples/sotest/sotest_main.c
@@ -71,8 +71,8 @@
# define NSECTORS(b) (((b)+SECTORSIZE-1)/SECTORSIZE)
# define BINDIR "/mnt/romfs"
-# ifndef CONFIG_EXAMPLES_SOTEST_DEVMINOR
-# define CONFIG_EXAMPLES_SOTEST_DEVMINOR 0
+# ifndef CONFIG_EXAMPLES_SOTEST_DEVMINOR_MAX
+# define CONFIG_EXAMPLES_SOTEST_DEVMINOR_MAX 5
# endif
#else
# define BINDIR CONFIG_EXAMPLES_SOTEST_BINDIR
@@ -127,26 +127,33 @@ int main(int argc, FAR char *argv[])
#ifdef CONFIG_EXAMPLES_SOTEST_BUILTINFS
/* Create a ROM disk for the ROMFS filesystem */
- desc.minor = CONFIG_EXAMPLES_SOTEST_DEVMINOR; /* Minor device number of the ROM disk. */
+ desc.minor = 0; /* Minor device number of the ROM disk. */
desc.nsectors = NSECTORS(romfs_img_len); /* The number of sectors in the ROM disk */
desc.sectsize = SECTORSIZE; /* The size of one sector in bytes */
desc.image = (FAR uint8_t *)romfs_img; /* File system image */
- printf("main: Registering romdisk at /dev/ram%d\n",
- CONFIG_EXAMPLES_SOTEST_DEVMINOR);
-
- ret = boardctl(BOARDIOC_ROMDISK, (uintptr_t)&desc);
-
- if (ret < 0)
+ for (; desc.minor <= CONFIG_EXAMPLES_SOTEST_DEVMINOR_MAX; desc.minor++)
{
- fprintf(stderr, "ERROR: romdisk_register failed: %s\n",
- strerror(errno));
- exit(EXIT_FAILURE);
+ printf("main: Registering romdisk at /dev/ram%d\n", desc.minor);
+
+ ret = boardctl(BOARDIOC_ROMDISK, (uintptr_t)&desc);
+ if (ret >= 0)
+ {
+ break;
+ }
+
+ if (errno != EEXIST ||
+ desc.minor == CONFIG_EXAMPLES_SOTEST_DEVMINOR_MAX)
+ {
+ fprintf(stderr, "ERROR: romdisk_register failed: %s\n",
+ strerror(errno));
+ exit(EXIT_FAILURE);
+ }
}
/* Mount the file system */
- sprintf(devname, SOTEST_DEVPATH_FMT, CONFIG_EXAMPLES_SOTEST_DEVMINOR);
+ sprintf(devname, SOTEST_DEVPATH_FMT, desc.minor);
printf("main: Mounting ROMFS filesystem at target=%s with source=%s\n",
BINDIR, devname);