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