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:
parent
8634deeb73
commit
85ceda00da
|
@ -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)
|
||||
|
||||
|
|
31
src/device.c
31
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;
|
||||
|
|
Loading…
Reference in New Issue