您尚未登录。

楼主 #1 2020-01-26 17:32:31

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

f1c100s linux内核定时器怎么用

f1c100s linux交叉编译驱动模块里使用软件定时器
我找了网上linux内核定时器的方法 发现定时器结构体是这样的

struct timer_list {
    /*
     * All fields that change during normal runtime grouped to     
         * the same cacheline
     */
    struct hlist_node    entry;
    unsigned long        expires;
    void            (*function)(unsigned long);
    unsigned long        data;
    u32            flags;
    int            slack;

#ifdef CONFIG_TIMER_STATS
    int            start_pid;
    void            *start_site;
    char            start_comm[16];
#endif
#ifdef CONFIG_LOCKDEP
    struct lockdep_map    lockdep_map;
#endif
};

而我看f1c100s的linux内核文件include/linux/timer.h里的定时器结构是这样的:

struct timer_list {
        /*
         * All fields that change during normal runtime grouped to the
         * same cacheline
         */
        struct hlist_node       entry;
        unsigned long           expires;
        void                    (*function)(struct timer_list *);
        u32                     flags;

#ifdef CONFIG_LOCKDEP
        struct lockdep_map      lockdep_map;
#endif
};

里面有东西没有 特别是成员data 这个是循环时间 没有它怎么指定定时器时间?

启动定时器用的是 DEFINE_TIMER(_name, _function) 运行时不能正常调用回调函数

离线

楼主 #3 2020-01-27 15:52:15

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: f1c100s linux内核定时器怎么用

xgui 说:

看下这个驱动:
https://github.com/torvalds/linux/blob/master/drivers/char/hangcheck-timer.c

static DEFINE_TIMER(hangcheck_ticktock, hangcheck_fire);

触发时间间隔在回调函数里面设定.

按照你给的驱动参考 可以正常使用了 谢谢

离线

楼主 #5 2020-02-08 00:15:03

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: f1c100s linux内核定时器怎么用

RedK 说:

这个定时器,我也是折腾了1天!才找到这个帖子!!!!
晕,结构体不一样;常规的setup_timer和init_timer都不能用!

巧了 和你遇到的问题一样 估计是内核版本不同 我看内核版本在2.X用的就是 常规的setup_timer和init_timer

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn