/* 创建一个线程以处理定时器 */ static int timer_thread_start( LCUI_Thread *tid, LCUI_Queue *list ) { /* 初始化列表 */ TimerList_Init( list ); timer_thread_active = TRUE; /* 创建用于处理定时器列表的线程 */ return _LCUIThread_Create( tid, TimerThread, list ); }
LCUIThread_Create( LCUI_Thread *tidp, void (*start_rtn)(void*), void * arg ) { Thread_TreeNode *tt; LCUI_Thread cur_tid; /* 先获取当前所在线程的ID */ cur_tid = LCUIThread_SelfID(); /* 在线程树中查找匹配的线程ID,并得到该结点的指针 */ tt = ThreadTree_Find( &thread_tree, cur_tid ); /* 如果没有搜索到,那就新增,并获得该结点指针 */ if(tt == NULL) { tt = ThreadTreeNode_AddNew( &thread_tree, cur_tid ); if(tt == NULL) { return -1; } } _LCUIThread_Create( tidp, start_rtn, arg ); /* 将得到的线程ID添加至结点 */ ThreadTreeNode_AddNew( tt, *tidp ); return 0; }
/** 初始化设备处理模块 */ LCUI_API int LCUIModule_Device_Init(void) { dev_list_init( &dev_list ); return _LCUIThread_Create( &LCUI_Sys.dev_thread, proc_dev_list, &dev_list ); }