我是靠谱客的博主 贤惠睫毛膏,最近开发中收集的这篇文章主要介绍高分辨率定时器1.定时器的工作模式2.高分辨率kernel定时器使用流程3.高分辨率定时器的一个简单使用例子,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
高分辨率定时器
- 1.定时器的工作模式
- 2.高分辨率kernel定时器使用流程
- 3.高分辨率定时器的一个简单使用例子
1.定时器的工作模式
enum hrtimer_mode {
HRTIMER_MODE_ABS = 0x0, /* Time value is absolute */ 绝对时间
HRTIMER_MODE_REL = 0x1, /* Time value is relative to now */相对时间
HRTIMER_MODE_PINNED = 0x02, /* Timer is bound to CPU */
HRTIMER_MODE_ABS_PINNED = 0x02,
HRTIMER_MODE_REL_PINNED = 0x03,
};
2.高分辨率kernel定时器使用流程
A、定义一个高分辨率定时器
static struct hrtimer battery_kthread_timer;
B、初始化定时器工作模式,
hrtimer_init(&battery_kthread_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
C、设置定时器的回调函数,定时器到时该函数将被调用
battery_kthread_timer.function = battery_kthread_hrtimer_func;
// 定时器处理函数
battery_kthread_hrtimer_func()
bat_thread_wakeup();
// 唤醒下面的 bat_thread_kthread() 线程
wake_up(&bat_thread_wq);
D、设置超时参数
hrtimer_start(&vibe_timer,ktime_set(value / 1000, (value % 1000) * 1000000),HRTIMER_MODE_REL);
for:
ktime = ktime_set(1, 0); // 1s
hrtimer_start(&battery_kthread_timer, ktime, HRTIMER_MODE_REL)
E、要取消一个hrtimer,使用 hrtimer_cancel
int hrtimer_cancel(struct hrtimer *timer);
3.高分辨率定时器的一个简单使用例子
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/hrtimer.h>
#include <linux/jiffies.h>
/* 定时器操作_1: 定义定时器 */
static struct hrtimer timer;
static enum hrtimer_restart hrtimer_hander(struct hrtimer *timer)
{
printk("zbzhuang:I am in hrtimer handerrn");
hrtimer_forward(timer,timer->base->get_time(),kt);
return HRTIMER_RESTART;
}
static int __init test_init(void)
{
printk("zbzhuang:---------%s-----------rn",__func__);
kt = ktime_set(1,10);// 1s + 10ns
/* 定时器操作_2: 初始化定时器 */
hrtimer_init(&timer,CLOCK_MONOTONIC,HRTIMER_MODE_REL);
/* 定时器操作_3: 设定超时时间 */
hrtimer_start(&timer,kt,HRTIMER_MODE_REL);
/* 定时器操作_4: 设定回调函数 */
timer.function = hrtimer_hander;
return 0;
}
static void __exit test_exit(void)
{
hrtimer_cancel(&timer);
printk("zbzhuang------------test over---------------rn");
}
module_init(test_init);
module_exit(test_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("zbzhuang@qq.com");
最后
以上就是贤惠睫毛膏为你收集整理的高分辨率定时器1.定时器的工作模式2.高分辨率kernel定时器使用流程3.高分辨率定时器的一个简单使用例子的全部内容,希望文章能够帮你解决高分辨率定时器1.定时器的工作模式2.高分辨率kernel定时器使用流程3.高分辨率定时器的一个简单使用例子所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复