首页 > 常见问题 | 艾为电子 > [FAQ0001063]使用linux内核定时器初始化函数init_timer,编译显示函数没定义怎么分析?

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

通用 2023-03-27 阅读量: 9 点赞量: 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

返回FAQ列表