add initial libdl
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1052 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
parent
e83ffff666
commit
b2fb4be811
|
@ -0,0 +1,26 @@
|
|||
Import('env')
|
||||
Import('projects')
|
||||
Import('RTT_ROOT')
|
||||
Import('rtconfig')
|
||||
|
||||
# group definitions
|
||||
group = {}
|
||||
group['name'] = 'libdl'
|
||||
group['src'] = Glob('*.c')
|
||||
group['depend'] = 'RT_USING_LIBDL'
|
||||
group['CCFLAGS'] = ''
|
||||
group['CPPPATH'] = [RTT_ROOT + '/components/libdl']
|
||||
group['CPPDEFINES'] = ''
|
||||
group['LINKFLAGS'] = ''
|
||||
|
||||
# add group to project list
|
||||
projects.append(group)
|
||||
|
||||
env.Append(CCFLAGS = group['CCFLAGS'])
|
||||
env.Append(CPPPATH = group['CPPPATH'])
|
||||
env.Append(CPPDEFINES = group['CPPDEFINES'])
|
||||
env.Append(LINKFLAGS = group['LINKFLAGS'])
|
||||
|
||||
objs = env.Object(group['src'])
|
||||
|
||||
Return('objs')
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* File : dlclose.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2010, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2010-11-17 yi.qiu first version
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <rtm.h>
|
||||
|
||||
int rt_dlclose (void *handle)
|
||||
{
|
||||
rt_module_t module;
|
||||
|
||||
RT_ASSERT(handle != RT_NULL);
|
||||
|
||||
module = (rt_module_t)handle;
|
||||
module->nref--;
|
||||
|
||||
if(module->nref <= 0)
|
||||
{
|
||||
rt_module_unload(module);
|
||||
}
|
||||
|
||||
return RT_TRUE;
|
||||
}
|
||||
|
||||
RTM_EXPORT(rt_dlclose)
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* File : dlerror.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2010, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2010-11-17 yi.qiu first version
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <rtm.h>
|
||||
|
||||
const char *rt_dlerror(void)
|
||||
{
|
||||
return "TODO";
|
||||
}
|
||||
|
||||
RTM_EXPORT(rt_dlerror)
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef __DLFCN_H_
|
||||
#define __DLFCN_H_
|
||||
|
||||
#define RTLD_LAZY 0x00000
|
||||
#define RTLD_NOW 0x00001
|
||||
|
||||
#define RTLD_LOCAL 0x00000
|
||||
#define RTLD_GLOBAL 0x10000
|
||||
|
||||
#define RTLD_DEFAULT ((void*)1)
|
||||
#define RTLD_NEXT ((void*)2)
|
||||
|
||||
void *rt_dlopen (const char *filename, int flag);
|
||||
const char *rt_dlerror(void);
|
||||
void *rt_dlsym(void *handle, const char *symbol);
|
||||
int rt_dlclose (void *handle);
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* File : dlopen.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2010, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2010-11-17 yi.qiu first version
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <rtm.h>
|
||||
|
||||
void* rt_dlopen(const char *filename, int flags)
|
||||
{
|
||||
rt_module_t module;
|
||||
|
||||
RT_ASSERT(filename != RT_NULL);
|
||||
|
||||
/* find in module list */
|
||||
module = rt_module_find(filename);
|
||||
|
||||
if(module)
|
||||
{
|
||||
module->nref++;
|
||||
return (void*)module;
|
||||
}
|
||||
else
|
||||
{
|
||||
module = rt_module_open(filename);
|
||||
}
|
||||
}
|
||||
|
||||
RTM_EXPORT(rt_dlopen)
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* File : dlsym.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2006 - 2010, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2010-11-17 yi.qiu first version
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <rtm.h>
|
||||
|
||||
void* rt_dlsym(void *handle, const char* symbol)
|
||||
{
|
||||
int i;
|
||||
rt_module_t module = (rt_module_t)handle;
|
||||
|
||||
RT_ASSERT(handle != RT_NULL);
|
||||
|
||||
for(i=0; i<module->nsym; i++)
|
||||
{
|
||||
if (rt_strcmp(module->symtab[i].name, symbol) == 0)
|
||||
return (void*)module->symtab[i].addr;
|
||||
}
|
||||
|
||||
return RT_NULL;
|
||||
}
|
||||
|
||||
RTM_EXPORT(rt_dlsym)
|
||||
|
Loading…
Reference in New Issue