Linux: hrtimer 用法
2016-06-07 13:54
405 查看
hrtimer = high res timer
内核为高精度定时器重新设计了一套软件架构,它可以为我们提供纳秒级的定时精度,以满足对精确时间有迫切需求的应用程序或内核驱动,例如多媒体应用,音频设备的驱动程序等等。以下的讨论用hrtimer(high
resolution timer)表示高精度定时器。
#include <linux/hrtimer.h>
static struct hrtimer hrtimer;
//init
hrtimer_init(&hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
hrtimer.function = timer_hr_interrupt;
//
static enum hrtimer_restart timer_hr_interrupt(struct hrtimer *timer)
{
do_something();
return HRTIMER_NORESTART;
}
void start_timer(void)
{
hrtimer_start(&hrtimer, ktime_set(0, first_time* NSEC_PER_USEC), HRTIMER_MODE_REL);
}
static void do_something(void)
{
// do something
...
//start next timer
hrtimer_start(&hrtimer, ktime_set(0, next_time* NSEC_PER_USEC), HRTIMER_MODE_REL);
}
内核为高精度定时器重新设计了一套软件架构,它可以为我们提供纳秒级的定时精度,以满足对精确时间有迫切需求的应用程序或内核驱动,例如多媒体应用,音频设备的驱动程序等等。以下的讨论用hrtimer(high
resolution timer)表示高精度定时器。
#include <linux/hrtimer.h>
static struct hrtimer hrtimer;
//init
hrtimer_init(&hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
hrtimer.function = timer_hr_interrupt;
//
static enum hrtimer_restart timer_hr_interrupt(struct hrtimer *timer)
{
do_something();
return HRTIMER_NORESTART;
}
void start_timer(void)
{
hrtimer_start(&hrtimer, ktime_set(0, first_time* NSEC_PER_USEC), HRTIMER_MODE_REL);
}
static void do_something(void)
{
// do something
...
//start next timer
hrtimer_start(&hrtimer, ktime_set(0, next_time* NSEC_PER_USEC), HRTIMER_MODE_REL);
}
相关文章推荐
- linux内核研究(一)
- LINUX 内核调试基础+编程基础
- Linux之Ganglia源码安装
- linux常用命令
- Linux之read命令使用
- linux下如何部署(执行)java jar包,并关闭此jar的进程
- linux基础(37)--xfs文件系统的备份和恢复--RHEL7.2
- 【Linux】U盘安装Centos6.3遇到的两个重要问题及其解决方法
- Linux驱动学习笔记之一——高精度定时器(1)
- Linux驱动学习笔记之一——高精度定时器2
- 在树莓派中操作端口
- Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现
- Linux内核socket优化项
- linux基本命令(61)——wget命令
- UbuntuKylin常用快捷键
- Linux运维(应用软件原理专题)面试题
- linux基本命令(60)——scp命令
- Centos7 LAMP环境搭建
- Linux下安装项目管理工具Redmine
- Linux 如何打开端口