【问题标题】:Linux timer_setup functionLinux timer_setup 函数
【发布时间】:2018-10-24 22:16:44
【问题描述】:

当我尝试调用 timer_setup() 函数时,出现以下错误

 error: passing argument 2 of ‘init_timer_key’ from incompatible pointer type   [-Werror=incompatible-pointer-types]
  init_timer_key((_timer), (_fn), (_flags), NULL, NULL)

代码:

/* ... */
#include <linux/timer.h>

static struct timer_list my_timer;

void my_timer_callback(unsigned long data)
{
    pr_info("%s called (%ld).\n", __FUNCTION__, jiffies);
}

static int __init my_init(void)
{
    timer_setup(&my_timer, my_timer_callback, 0);
    return 0;
}

static void my_exit(void)
{
    return;
}

module_init(my_init);
module_exit(my_exit);
/* ... */

我该如何解决这个错误?

【问题讨论】:

  • 请提供您的无效代码的摘录。

标签: c linux timer linux-kernel linux-device-driver


【解决方案1】:

我想,你想使用setup_timer(),而不是timer_setup(),它的原型是

static inline void timer_setup(struct timer_list *timer,
                               void (*callback)(struct timer_list *),
                               unsigned int flags)

或将您的计时器功能更改为

void my_timer_callback(struct timer_list  *timer)
{
...
}

【讨论】:

  • 我的 Linux 版本的 timer.h 文件,setup_timer 已被弃用。
  • 解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 2013-01-28
  • 2016-02-21
  • 2012-07-21
  • 2014-01-07
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多