[libdl] move libdl to posix folder (#5523)

This commit is contained in:
Man, Jianting (Meco) 2022-01-20 07:55:31 -05:00 committed by GitHub
parent 3606065803
commit c89735a357
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 46 additions and 38 deletions

View File

@ -1,15 +1,5 @@
menu "POSIX layer and C standard library" menu "POSIX layer and C standard library"
config RT_USING_MODULE
bool "Enable dynamic module with dlopen/dlsym/dlclose feature"
default n
if RT_USING_MODULE
config RT_USING_CUSTOM_DLMODULE
bool "Enable load dynamic module by custom"
default n
endif
config RT_LIBC_DEFAULT_TIMEZONE config RT_LIBC_DEFAULT_TIMEZONE
int "Set the default time zone (UTC+)" int "Set the default time zone (UTC+)"
range -12 12 range -12 12

View File

@ -5,25 +5,26 @@
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2017/10/15 bernard the first version
*/ */
#include <stdio.h> #include <rtthread.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <rtm.h> #include <rtm.h>
/* some export routines for module */ #include <string.h>
#include <stdio.h>
#include <stdlib.h>
RTM_EXPORT(strstr);
RTM_EXPORT(strlen);
RTM_EXPORT(strchr);
RTM_EXPORT(strcpy); RTM_EXPORT(strcpy);
RTM_EXPORT(strncpy); RTM_EXPORT(strncpy);
RTM_EXPORT(strcmp); RTM_EXPORT(strlen);
RTM_EXPORT(strncmp);
RTM_EXPORT(strcat); RTM_EXPORT(strcat);
RTM_EXPORT(strstr);
RTM_EXPORT(strchr);
RTM_EXPORT(strcmp);
RTM_EXPORT(strtol); RTM_EXPORT(strtol);
RTM_EXPORT(strtoul);
RTM_EXPORT(strncmp);
RTM_EXPORT(memcpy); RTM_EXPORT(memcpy);
RTM_EXPORT(memcmp); RTM_EXPORT(memcmp);
@ -31,13 +32,22 @@ RTM_EXPORT(memmove);
RTM_EXPORT(memset); RTM_EXPORT(memset);
RTM_EXPORT(memchr); RTM_EXPORT(memchr);
RTM_EXPORT(toupper); RTM_EXPORT(putchar);
RTM_EXPORT(atoi);
/* import the full stdio for printf */
#if defined(RT_USING_MODULE) && defined(__MICROLIB)
#error "[RT_USING_LIBC] Please use standard libc but not microlib."
#endif
RTM_EXPORT(puts); RTM_EXPORT(puts);
RTM_EXPORT(printf); RTM_EXPORT(printf);
RTM_EXPORT(sprintf);
RTM_EXPORT(snprintf);
RTM_EXPORT(fwrite);
#include <setjmp.h>
RTM_EXPORT(longjmp);
RTM_EXPORT(setjmp);
RTM_EXPORT(exit);
RTM_EXPORT(abort);
RTM_EXPORT(rand);
#include <assert.h>
RTM_EXPORT(__assert_func);

View File

@ -65,6 +65,16 @@ if RT_USING_PTHREADS
default 8 default 8
endif endif
config RT_USING_MODULE
bool "Enable dynamic module with dlopen/dlsym/dlclose feature"
default n
if RT_USING_MODULE
config RT_USING_CUSTOM_DLMODULE
bool "Enable load dynamic module by custom"
default n
endif
source "$RTT_DIR/components/libc/posix/ipc/Kconfig" source "$RTT_DIR/components/libc/posix/ipc/Kconfig"
endmenu endmenu

View File

@ -7,8 +7,6 @@ group = []
CPPPATH = [cwd] CPPPATH = [cwd]
if rtconfig.PLATFORM == 'gcc': if rtconfig.PLATFORM == 'gcc':
group = DefineGroup('libc', src, group = DefineGroup('POSIX', src, depend = ['RT_USING_MODULE'], CPPPATH = CPPPATH)
depend = ['RT_USING_MODULE'],
CPPPATH = CPPPATH)
Return('group') Return('group')

View File

@ -14,7 +14,7 @@
#include "dlmodule.h" #include "dlmodule.h"
#include "dlelf.h" #include "dlelf.h"
#if defined(RT_USING_POSIX) #ifdef RT_USING_POSIX_FS
#include <unistd.h> #include <unistd.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/statfs.h> #include <sys/statfs.h>
@ -423,14 +423,14 @@ struct rt_dlmodule *rt_module_self(void)
struct rt_dlmodule* dlmodule_load(const char* filename) struct rt_dlmodule* dlmodule_load(const char* filename)
{ {
#if defined(RT_USING_POSIX) #ifdef RT_USING_POSIX_FS
int fd = -1, length = 0; int fd = -1, length = 0;
#endif #endif
rt_err_t ret = RT_EOK; rt_err_t ret = RT_EOK;
rt_uint8_t *module_ptr = RT_NULL; rt_uint8_t *module_ptr = RT_NULL;
struct rt_dlmodule *module = RT_NULL; struct rt_dlmodule *module = RT_NULL;
#if defined(RT_USING_POSIX) #ifdef RT_USING_POSIX_FS
fd = open(filename, O_RDONLY, 0); fd = open(filename, O_RDONLY, 0);
if (fd >= 0) if (fd >= 0)
{ {
@ -522,7 +522,7 @@ struct rt_dlmodule* dlmodule_load(const char* filename)
return module; return module;
__exit: __exit:
#if defined(RT_USING_POSIX) #ifdef RT_USING_POSIX_FS
if (fd >= 0) close(fd); if (fd >= 0) close(fd);
#endif #endif
if (module_ptr) rt_free(module_ptr); if (module_ptr) rt_free(module_ptr);
@ -573,7 +573,7 @@ struct rt_dlmodule* dlmodule_exec(const char* pgname, const char* cmd, int cmd_s
#if defined(RT_USING_CUSTOM_DLMODULE) #if defined(RT_USING_CUSTOM_DLMODULE)
struct rt_dlmodule* dlmodule_load_custom(const char* filename, struct rt_dlmodule_ops* ops) struct rt_dlmodule* dlmodule_load_custom(const char* filename, struct rt_dlmodule_ops* ops)
{ {
#if defined(RT_USING_POSIX) #ifdef RT_USING_POSIX_FS
int fd = -1, length = 0; int fd = -1, length = 0;
#endif #endif
rt_err_t ret = RT_EOK; rt_err_t ret = RT_EOK;
@ -586,7 +586,7 @@ struct rt_dlmodule* dlmodule_load_custom(const char* filename, struct rt_dlmodul
RT_ASSERT(ops->unload); RT_ASSERT(ops->unload);
module_ptr = ops->load(filename); module_ptr = ops->load(filename);
} }
#if defined(RT_USING_POSIX) #ifdef RT_USING_POSIX_FS
else else
{ {
fd = open(filename, O_RDONLY, 0); fd = open(filename, O_RDONLY, 0);
@ -688,7 +688,7 @@ struct rt_dlmodule* dlmodule_load_custom(const char* filename, struct rt_dlmodul
return module; return module;
__exit: __exit:
#if defined(RT_USING_POSIX) #ifdef RT_USING_POSIX_FS
if (fd >= 0) close(fd); if (fd >= 0) close(fd);
#endif #endif
if (module_ptr) if (module_ptr)