MTK定时器消息处理机制
一、基本概念及Neclus内核定时器初始化
expires:指定定时器到期的时间,这个时间被表示成自系统启动以来的时钟滴答计数(也即时钟节拍数)。当一个定时器的expires值小于或等于jiffies变量时,我们就说这个定时器已经超时或到期了。在初始化一个定时器后,通常把它的expires域设置成当前expires变量的当前值加上某个时间间隔值(以时钟滴答次数计。
typedef struct timertable
{
U16 timer_id[SIMULTANEOUS_TIMER_NUM];
eventid event_id[SIMULTANEOUS_TIMER_NUM];
oslTimerFuncPtr callback_func[SIMULTANEOUS_TIMER_NUM];
struct timertable *next;
} TIMERTABLE;
typedef lcd_dll_node *eventid;
struct lcd_dll_node {
void *data;
lcd_dll_node *prev;
lcd_dll_node *next;
};
(1)timer_id:定时器id最多同时12个。
(2)双向链表元素event_id:用来将多个定时器调度动作连接成一条双向循环队列。
(3)函数指针callback_func:指向一个可执行函数。当定时器到期时,内核就执行function所指定的函数,产生expires 消息。
//L4 init the timer
void L4InitTimer(void)
{
TIMERTABLE *p;
TIMERTABLE *pp;
p = ;
pp = NULL;
do
{
if (p != NULL)
{
pp = p->next;
OslMfree(p);
}
p = pp;
} while (p != NULL);
memset(&g_timer_table, 0, sizeof(TIMERTABLE));
g_timer_table_size = SIMULTANEOUS_TIMER_NUM;
g_timer_table_used = 0;
get_clocktime_callback_func = NULL;
set_clocktime_callback_func = NULL
MTK定时器消息处理机制 来自淘豆网m.daumloan.com转载请标明出处.