10 定时器

第6课.定时器
代码

1 定时器的时间单位

在内核中.config文件中CONFIG_HZ配置为每秒linux的时钟滴答次数,没发生一次全局变量jiffies便会增加1

在日常使用中使用HZ表示一秒

2 常用函数及其数据结构

  • struct timer_list *timer (timer_list结构体)

    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;
    
    #ifdef CONFIG_TIMER_STATS
    	int			start_pid;
    	void			*start_site;
    	char			start_comm[16];
    #endif
    #ifdef CONFIG_LOCKDEP
    	struct lockdep_map	lockdep_map;
    #endif
    };
    
  • setup_timer(timer, fn, data)

    初始化timer_list设置函数和参数

    于init_timer类似

  • init_timer(timer)

    初始timer_list

  • add_timer(struct timer_list *timer)

    向内核添加定时器。timer->expires表示超时时间

  • mod_timer(struct timer_list *timer, unsigned long expires)

    修改定时器超时时间,等价于del_timer(timer); timer->expires = expires; add_timer(timer)

  • del_timer(struct timer_list *timer)

    删除定时器

posted @ 2023-03-12 15:15  人民广场的二道贩子  阅读(15)  评论(0编辑  收藏  举报