kernel-4.0 定时器使用问题在kernel-4.19上纠正

概述:处理之前博客中遗留的问题。

在之前的博客里(Kernel 定时器的使用)中,遗留了两个问题

1. 是jiffies打印显示为负数

2. 超时时间差少了一个数量级

今天在真机上对该程序进行验证,验证结果如下,超时时间不太对啊

 通过验证,发现

问题1得到修复;问题2 如果看jiffies的打印,是和程序设计不符合的,差值是:4295036160−4295035233 = 927,如果参照内核运行的时间:529.684004−526.595976 = 3.088,时间是符合设计的。

验证平台: RK3399 Android10

Kernel: kernel-4.19

通过验证,还有如下发现:

1. timer_list 结构体发生了变化

kernel-4.0的定义参照《kernel 定时数据机构和API》中的1

kernel-4.19 定义如下

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

	ANDROID_KABI_RESERVE(1);
	ANDROID_KABI_RESERVE(2);
};

===》 主要是回调函数参数发生了变化,由 unsigned long ----》 struct timer_list *。

2. timer的接口函数更改

kernel-4.0 timer 初始化是函数: setup_timer() 宏

参照《kernel 定时数据机构和API》中的2.1

kernel-4.19  timer 初始化是函数: timer_setup() 宏

#define timer_setup(timer, callback, flags)			\
	__init_timer((timer), (callback), (flags))


#define __init_timer(_timer, _fn, _flags)				\
	init_timer_key((_timer), (_fn), (_flags), NULL, NULL)

==> 只是更改了宏的名字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值