EN
Home > FAQ | awinic > [FAQ0001063]使用linux内核定时器初始化函数init_timer,编译显示函数没定义怎么分析?

[FAQ0001063]使用linux内核定时器初始化函数init_timer,编译显示函数没定义怎么分析?

通用 2023-03-27 Views: 9 Likes: 0

A: init_timer为内核定时API接口linux4.14内核版本后移除init_timer需要换用setup_timer(timer, fn, data)init_timer类似fn为定时器回调函数data为回调函数的参数。伪代码示例:

#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)

init_timer(&dev->getIntrTimer);

dev->getIntrTimer.data = (unsigned long) dev;

dev->getIntrTimer.function = GetIntrTimerCallback;

add_timer(&dev->getIntrTimer);

#else

timer_setup(&dev->getIntrTimer, GetIntrTimerCallback, 0);

#endif

#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)

void GetIntrTimerCallback (unsigned long devAddr)

{

            /*do something*/

}

#else

void GetIntrTimerCallback(struct timer_list *t)
{

                        /*do something*/

}

 #endif

Back to FAQ List