diff --git a/src/SConscript b/src/SConscript index 6f56c29ca..afc784f75 100644 --- a/src/SConscript +++ b/src/SConscript @@ -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) diff --git a/src/device.c b/src/device.c index f164b1785..7f44227af 100644 --- a/src/device.c +++ b/src/device.c @@ -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;