fixed rt_device_init issues.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1882 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
wuyangyong 2011-12-27 05:41:04 +00:00
parent 8634deeb73
commit 85ceda00da
2 changed files with 25 additions and 34 deletions

View File

@ -2,19 +2,7 @@ Import('RTT_ROOT')
Import('rtconfig')
from building import *
src = Split('''
device.c
thread.c
scheduler.c
timer.c
irq.c
kservice.c
clock.c
object.c
mempool.c
ipc.c
idle.c
''')
src = Glob('*.c')
CPPPATH = [RTT_ROOT + '/include']
if rtconfig.CROSS_TOOL == 'keil' and GetDepend('RT_USING_MODULE') == True:
@ -22,14 +10,14 @@ if rtconfig.CROSS_TOOL == 'keil' and GetDepend('RT_USING_MODULE') == True:
else:
LINKFLAGS = ''
if GetDepend('RT_USING_MODULE'):
src += Split('rtm.c')
src += Split('module.c')
if GetDepend('RT_USING_MODULE') == False:
SrcRemove(src, ['rtm.c', 'module.c'])
if GetDepend('RT_USING_SLAB'):
src += Split('slab.c')
else:
src += Split('mem.c')
if GetDepend('RT_USING_HEAP') == False or GetDepend('RT_USING_SMALL_MEM') == False:
SrcRemove(src, ['mem.c'])
if GetDepend('RT_USING_HEAP') == False or GetDepend('RT_USING_SLAB') == False:
SrcRemove(src, ['slab.c'])
group = DefineGroup('Kernel', src, depend = [''], CPPPATH = CPPPATH, LINKFLAGS = LINKFLAGS)

View File

@ -146,26 +146,29 @@ rt_device_t rt_device_find(const char *name)
*/
rt_err_t rt_device_init(rt_device_t dev)
{
rt_err_t result;
rt_err_t result = RT_EOK;
rt_err_t (*init)(rt_device_t dev);
RT_ASSERT(dev != RT_NULL);
/* get device init handler */
init = dev->init;
if (init != RT_NULL && !(dev->flag & RT_DEVICE_FLAG_ACTIVATED))
{
result = init(dev);
if (result != RT_EOK)
{
rt_kprintf("To initialize device:%s failed. The error code is %d\n",
dev->parent.name, result);
}
else
{
dev->flag |= RT_DEVICE_FLAG_ACTIVATED;
}
}
if (init != RT_NULL)
{
if(!(dev->flag & RT_DEVICE_FLAG_ACTIVATED))
{
result = init(dev);
if (result != RT_EOK)
{
rt_kprintf("To initialize device:%s failed. The error code is %d\n",
dev->parent.name, result);
}
else
{
dev->flag |= RT_DEVICE_FLAG_ACTIVATED;
}
}
}
else result = -RT_ENOSYS;
return result;