|
71 | 71 | # define NSECTORS(b) (((b)+SECTORSIZE-1)/SECTORSIZE)
|
72 | 72 | # define BINDIR "/mnt/romfs"
|
73 | 73 |
|
74 |
| -# ifndef CONFIG_EXAMPLES_SOTEST_DEVMINOR |
75 |
| -# define CONFIG_EXAMPLES_SOTEST_DEVMINOR 0 |
| 74 | +# ifndef CONFIG_EXAMPLES_SOTEST_DEVMINOR_MAX |
| 75 | +# define CONFIG_EXAMPLES_SOTEST_DEVMINOR_MAX 5 |
76 | 76 | # endif
|
77 | 77 | #else
|
78 | 78 | # define BINDIR CONFIG_EXAMPLES_SOTEST_BINDIR
|
@@ -127,26 +127,33 @@ int main(int argc, FAR char *argv[])
|
127 | 127 | #ifdef CONFIG_EXAMPLES_SOTEST_BUILTINFS
|
128 | 128 | /* Create a ROM disk for the ROMFS filesystem */
|
129 | 129 |
|
130 |
| - desc.minor = CONFIG_EXAMPLES_SOTEST_DEVMINOR; /* Minor device number of the ROM disk. */ |
| 130 | + desc.minor = 0; /* Minor device number of the ROM disk. */ |
131 | 131 | desc.nsectors = NSECTORS(romfs_img_len); /* The number of sectors in the ROM disk */
|
132 | 132 | desc.sectsize = SECTORSIZE; /* The size of one sector in bytes */
|
133 | 133 | desc.image = (FAR uint8_t *)romfs_img; /* File system image */
|
134 | 134 |
|
135 |
| - printf("main: Registering romdisk at /dev/ram%d\n", |
136 |
| - CONFIG_EXAMPLES_SOTEST_DEVMINOR); |
137 |
| - |
138 |
| - ret = boardctl(BOARDIOC_ROMDISK, (uintptr_t)&desc); |
139 |
| - |
140 |
| - if (ret < 0) |
| 135 | + for (; desc.minor <= CONFIG_EXAMPLES_SOTEST_DEVMINOR_MAX; desc.minor++) |
141 | 136 | {
|
142 |
| - fprintf(stderr, "ERROR: romdisk_register failed: %s\n", |
143 |
| - strerror(errno)); |
144 |
| - exit(EXIT_FAILURE); |
| 137 | + printf("main: Registering romdisk at /dev/ram%d\n", desc.minor); |
| 138 | + |
| 139 | + ret = boardctl(BOARDIOC_ROMDISK, (uintptr_t)&desc); |
| 140 | + if (ret >= 0) |
| 141 | + { |
| 142 | + break; |
| 143 | + } |
| 144 | + |
| 145 | + if (errno != EEXIST || |
| 146 | + desc.minor == CONFIG_EXAMPLES_SOTEST_DEVMINOR_MAX) |
| 147 | + { |
| 148 | + fprintf(stderr, "ERROR: romdisk_register failed: %s\n", |
| 149 | + strerror(errno)); |
| 150 | + exit(EXIT_FAILURE); |
| 151 | + } |
145 | 152 | }
|
146 | 153 |
|
147 | 154 | /* Mount the file system */
|
148 | 155 |
|
149 |
| - sprintf(devname, SOTEST_DEVPATH_FMT, CONFIG_EXAMPLES_SOTEST_DEVMINOR); |
| 156 | + sprintf(devname, SOTEST_DEVPATH_FMT, desc.minor); |
150 | 157 | printf("main: Mounting ROMFS filesystem at target=%s with source=%s\n",
|
151 | 158 | BINDIR, devname);
|
152 | 159 |
|
|
0 commit comments