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') Import('rtconfig')
from building import * from building import *
src = Split(''' src = Glob('*.c')
device.c
thread.c
scheduler.c
timer.c
irq.c
kservice.c
clock.c
object.c
mempool.c
ipc.c
idle.c
''')
CPPPATH = [RTT_ROOT + '/include'] CPPPATH = [RTT_ROOT + '/include']
if rtconfig.CROSS_TOOL == 'keil' and GetDepend('RT_USING_MODULE') == True: 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: else:
LINKFLAGS = '' LINKFLAGS = ''
if GetDepend('RT_USING_MODULE'): if GetDepend('RT_USING_MODULE') == False:
src += Split('rtm.c') SrcRemove(src, ['rtm.c', 'module.c'])
src += Split('module.c')
if GetDepend('RT_USING_SLAB'): if GetDepend('RT_USING_HEAP') == False or GetDepend('RT_USING_SMALL_MEM') == False:
src += Split('slab.c') SrcRemove(src, ['mem.c'])
else:
src += Split('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) 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 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_err_t (*init)(rt_device_t dev);
RT_ASSERT(dev != RT_NULL); RT_ASSERT(dev != RT_NULL);
/* get device init handler */ /* get device init handler */
init = dev->init; init = dev->init;
if (init != RT_NULL && !(dev->flag & RT_DEVICE_FLAG_ACTIVATED)) if (init != RT_NULL)
{ {
result = init(dev); if(!(dev->flag & RT_DEVICE_FLAG_ACTIVATED))
if (result != RT_EOK) {
{ result = init(dev);
rt_kprintf("To initialize device:%s failed. The error code is %d\n", if (result != RT_EOK)
dev->parent.name, result); {
} rt_kprintf("To initialize device:%s failed. The error code is %d\n",
else dev->parent.name, result);
{ }
dev->flag |= RT_DEVICE_FLAG_ACTIVATED; else
} {
} dev->flag |= RT_DEVICE_FLAG_ACTIVATED;
}
}
}
else result = -RT_ENOSYS; else result = -RT_ENOSYS;
return result; return result;