mirror of
https://github.com/apache/nuttx.git
synced 2026-06-04 23:03:27 +08:00
sched/init: Add option to mount block device for INIT_FILEPATH case
This commit is contained in:
@@ -363,6 +363,40 @@ config INIT_NEXPORTS
|
|||||||
Any kernel mode symbols tables would not be usable for resolving
|
Any kernel mode symbols tables would not be usable for resolving
|
||||||
symbols in user mode executables.
|
symbols in user mode executables.
|
||||||
|
|
||||||
|
menuconfig INIT_MOUNT
|
||||||
|
bool "Auto-mount init file system"
|
||||||
|
default n
|
||||||
|
depends on !DISABLE_MOUNTPOINT
|
||||||
|
---help---
|
||||||
|
In order to use the the initial startup program when CONFIG_INIT_FILEPATH
|
||||||
|
is provided, it is necessary to mount the initial file system that
|
||||||
|
provides init program. Normally this mount is done in the board-specific
|
||||||
|
initialization logic. However, if the mount is very simple, it can be
|
||||||
|
performed by the OS bring-up logic itself by selecting this option.
|
||||||
|
|
||||||
|
if INIT_MOUNT
|
||||||
|
|
||||||
|
config INIT_MOUNT_SOURCE
|
||||||
|
string "The block device to mount"
|
||||||
|
default "/dev/ram0"
|
||||||
|
|
||||||
|
config INIT_MOUNT_TARGET
|
||||||
|
string "Path to the mounted file system"
|
||||||
|
default "/bin"
|
||||||
|
|
||||||
|
config INIT_MOUNT_FSTYPE
|
||||||
|
string "The file system type to mount"
|
||||||
|
default "romfs"
|
||||||
|
|
||||||
|
config INIT_MOUNT_FLAGS
|
||||||
|
hex "Flags passed to mount"
|
||||||
|
default 0
|
||||||
|
|
||||||
|
config INIT_MOUNT_DATA
|
||||||
|
string "Additional data passed to mount"
|
||||||
|
default ""
|
||||||
|
|
||||||
|
endif # INIT_MOUNT
|
||||||
endif # INIT_FILEPATH
|
endif # INIT_FILEPATH
|
||||||
|
|
||||||
config RR_INTERVAL
|
config RR_INTERVAL
|
||||||
|
|||||||
+13
-4
@@ -45,7 +45,9 @@
|
|||||||
|
|
||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
#include <sys/mount.h>
|
||||||
|
|
||||||
#include <nuttx/arch.h>
|
#include <nuttx/arch.h>
|
||||||
#include <nuttx/board.h>
|
#include <nuttx/board.h>
|
||||||
@@ -98,10 +100,6 @@
|
|||||||
* program.
|
* program.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
# ifndef CONFIG_BOARD_INITIALIZE
|
|
||||||
# warning You probably need CONFIG_BOARD_INITIALIZE to mount the file system
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# ifndef CONFIG_USER_INITPATH
|
# ifndef CONFIG_USER_INITPATH
|
||||||
/* Path to the initialization program must have been provided */
|
/* Path to the initialization program must have been provided */
|
||||||
|
|
||||||
@@ -287,6 +285,16 @@ static inline void os_do_appstart(void)
|
|||||||
board_initialize();
|
board_initialize();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_INIT_MOUNT
|
||||||
|
/* Mount the file system containing the init program. */
|
||||||
|
|
||||||
|
ret = mount(CONFIG_INIT_MOUNT_SOURCE, CONFIG_INIT_MOUNT_TARGET,
|
||||||
|
CONFIG_INIT_MOUNT_FSTYPE, CONFIG_INIT_MOUNT_FLAGS,
|
||||||
|
CONFIG_INIT_MOUNT_DATA);
|
||||||
|
DEBUGASSERT(ret >= 0);
|
||||||
|
UNUSED(ret);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Start the application initialization program from a program in a
|
/* Start the application initialization program from a program in a
|
||||||
* mounted file system. Presumably the file system was mounted as part
|
* mounted file system. Presumably the file system was mounted as part
|
||||||
* of the board_initialize() operation.
|
* of the board_initialize() operation.
|
||||||
@@ -297,6 +305,7 @@ static inline void os_do_appstart(void)
|
|||||||
ret = exec(CONFIG_USER_INITPATH, NULL, CONFIG_INIT_SYMTAB,
|
ret = exec(CONFIG_USER_INITPATH, NULL, CONFIG_INIT_SYMTAB,
|
||||||
CONFIG_INIT_NEXPORTS);
|
CONFIG_INIT_NEXPORTS);
|
||||||
ASSERT(ret >= 0);
|
ASSERT(ret >= 0);
|
||||||
|
UNUSED(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(CONFIG_INIT_NONE)
|
#elif defined(CONFIG_INIT_NONE)
|
||||||
|
|||||||
Reference in New Issue
Block a user