linux ns级定时器_转载_Linux下的hrtimer高精度定时器的使用

hrtimer高精度定时器的interval由ktime_set(const long secs, const unsigned long nsecs)决定,可做到ns级。此处的例子为5ms interval:

#include 

#include 

#include 

#include 

MODULE_LICENSE("GPL");

staticstructhrtimer hr_timer;

staticstructwork_struct wq_hrtimer;

staticktime_t ktime;

staticunsignedintinterval=5000;/* unit: us */

structtimespec uptimeLast;

staticunsignedintcount=0;

#define COUNT_INTERVAL 4000

unsigned longlongdiff_tv(structtimespec start,structtimespec end) {

return(end.tv_sec-start.tv_sec)*1000000000+(end.tv_nsec-start.tv_nsec);

}

enumhrtimer_restart my_hrtimer_callback(structhrtimer *timer )

{

schedule_work(&wq_hrtimer);

returnHRTIMER_NORESTART;

}

staticvoidwq_func_hrtimer(structwork_struct *work)

{

structtimespec uptime;

hr_timer.function = my_hrtimer_callback;

ktime = ktime_set( interval/1000000, (interval%1000000)*1000 );

hrtimer_start(&hr_timer, ktime, HRTIMER_MODE_REL );

/* print time every COUNT_INTERVAL*interval second*/

if(count%COUNT_INTERVAL==0)

{

do_posix_clock_monotonic_gettime(&uptime);

printk(KERN_INFO"hrtimer:%9lu sec, %9lu ns, interval_delay=%lu ns\n&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值