Linux驱动开发杂记(0x16) - 内核定时器接口各版本的变化


2.6.13 - 2.6.14

添加

#define DEFINE_TIMER(_name, _function, _expires, _data)
## 2.6.14 - 2.6.15 添加
static inline void setup_timer(struct timer_list * timer,
                              void (*function)(unsigned long),
                               unsigned long data)
## 3.6 - 3.7
void init_timer_key(struct timer_list *timer,
                   const char *name,
                   struct lock_class_key *key);
// 改为
void init_timer_key(struct timer_list *timer, unsigned int flags,
                   const char *name, struct lock_class_key *key);
删除setup_timer_key

4.1 - 4.2

修改

struct timer_list {
	......
	struct tvec_base *base;

	void (*function)(unsigned long);
	unsigned long data;

	int slack;
	......
};
//改为
struct timer_list {
	......
	void			(*function)(unsigned long);
	unsigned long		data;
	u32			flags;
	int			slack;
	......
};
## 4.7 - 4.8 1. 删除struct timer_list {}中的
int			slack;
2. 添加TIMER_PINNED_INITIALIZER 3. 添加init_timer_pinned ## 4.13 - 4.14 添加
static inline void timer_setup(struct timer_list *timer,
			       void (*callback)(struct timer_list *),
			       unsigned int flags)
from_timer(var, callback_timer, timer_fieldname)
## 4.14 - 4.15 修改
struct timer_list {
	......
	void			(*function)(unsigned long);
	unsigned long		data;
	u32			flags;
	......
};
//改为
struct timer_list {
	......
	void			(*function)(struct timer_list *);
	u32			flags;
	......
};
#define DEFINE_TIMER(_name, _function, _expires, _data)
//改为
#define DEFINE_TIMER(_name, _function) 
1. 去除setup_timer函数,改为timer_setup(timer, callback, flags) 2. 去除init_timer函数
void init_timer_key(struct timer_list *timer, unsigned int flags,
		    const char *name, struct lock_class_key *key);
// 改为
void init_timer_key(struct timer_list *timer,
	  void (*func)(struct timer_list *), unsigned int flags,
	  const char *name, struct lock_class_key *key);


文章作者: Vinx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Vinx !
 上一篇
Linux驱动开发杂记(0x17) - 内核tty接口各版本的变化(一)之tty_flip.h Linux驱动开发杂记(0x17) - 内核tty接口各版本的变化(一)之tty_flip.h
Linux驱动开发杂记(0x17) - 内核tty接口各版本的变化(一)之tty_flip.h 2.6.15 - 2.6.16 添加 extern int tty_buffer_request_room(struct tty_stru
下一篇 
Linux驱动开发杂记(0x15) - tasklet Linux驱动开发杂记(0x15) - tasklet
  为了提高系统的响应能力和并发能力,Linux将中断处理分了上半部和下半部。当一个中断产生,调用该中断对应的处理程序(上半部),然后告诉系统,对应的后半部可以执行了,中断处理程序立即返回,下半部会在合适的时机由操作系统调用。这样一来就大大
  目录