diff --git a/examples/module/Kconfig b/examples/module/Kconfig index 37f29db18..d2b192dff 100644 --- a/examples/module/Kconfig +++ b/examples/module/Kconfig @@ -6,6 +6,8 @@ config EXAMPLES_MODULE bool "Module Example" default n + depends on MODULE && LIB_BOARDCTL + select BOARDCTL_OS_SYMTAB ---help--- Enable the module example diff --git a/examples/module/module_main.c b/examples/module/module_main.c index 49dd2ae4b..f4c36b745 100644 --- a/examples/module/module_main.c +++ b/examples/module/module_main.c @@ -41,6 +41,7 @@ #include #include +#include #include #include @@ -122,11 +123,23 @@ int main(int argc, FAR char *argv[]) int module_main(int argc, char *argv[]) #endif { + struct boardioc_symtab_s symdesc; char buffer[128]; ssize_t nbytes; int ret; int fd; + /* Set the OS symbol table indirectly through the boardctl() */ + + symdesc.symtab = exports; + symdesc.nsymbols = nexports; + ret = boardctl(BOARDIOC_OS_SYMTAB, (uintptr_t)&symdesc); + if (ret < 0) + { + fprintf(stderr, "ERROR: boardctl(BOARDIOC_OS_SYMTAB) failed: %d\n", ret); + exit(EXIT_FAILURE); + } + /* Create a ROM disk for the ROMFS filesystem */ printf("Registering romdisk at /dev/ram%d\n", CONFIG_EXAMPLES_MODULE_DEVMINOR); @@ -153,7 +166,7 @@ int module_main(int argc, char *argv[]) /* Install the character driver */ - ret = insmod(MOUNTPT "/chardev", "chardev", exports, nexports); + ret = insmod(MOUNTPT "/chardev", "chardev"); if (ret < 0) { fprintf(stderr, "ERROR: insmod failed: %d\n", ret); diff --git a/system/symtab/Kconfig b/system/symtab/Kconfig index ac83a48fa..7cb0082eb 100644 --- a/system/symtab/Kconfig +++ b/system/symtab/Kconfig @@ -7,7 +7,7 @@ config SYSTEM_SYMTAB bool "User-provided symbol table" default n depends on EXECFUNCS_HAVE_SYMTAB && LIB_BOARDCTL - select BOARDCTL_SYMTAB + select BOARDCTL_APP_SYMTAB ---help--- Build and include default symbol table in the NuttX application. The symbol table is selected by call symtab_initialize(). The diff --git a/system/symtab/symtab.c b/system/symtab/symtab.c index 49709c258..d1142e67e 100644 --- a/system/symtab/symtab.c +++ b/system/symtab/symtab.c @@ -73,7 +73,7 @@ void symtab_initialize(void) symdesc.symtab = g_symtab; symdesc.nsymbols = NSYMBOLS; - (void)boardctl(BOARDIOC_SYMTAB, (uintptr_t)&symdesc); + (void)boardctl(BOARDIOC_APP_SYMTAB, (uintptr_t)&symdesc); } #endif /* CONFIG_SYSTEM_SYMTAB */