当前位置:  技术问答>linux和unix

求助Linux Hrtimer高精度定时器问题

    来源: 互联网  发布时间:2017-01-17

    本文导语:  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  MODULE_DESCRIPTION("Just for hrtimer test"); MODULE_AUTHOR("summon (*********@163.com)"); MODULE_LICENSE("GPL"); #define DyS_HRTIMER_US_...


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

MODULE_DESCRIPTION("Just for hrtimer test");
MODULE_AUTHOR("summon (*********@163.com)");
MODULE_LICENSE("GPL");

#define DyS_HRTIMER_US_TO_NS(x)   (x)*1000
static struct hrtimer hrtimer_for_test;

unsigned long g_hr_times = 0;
enum hrtimer_restart hrtimer_callback_func(struct hrtimer *p_timer)
{
    g_hr_times++;
    if (net_ratelimit())
    {
       printk(KERN_DEBUG "The function hrtimer_callback_func, times is %dn", g_hr_times);
    }    
    return HRTIMER_RESTART;
}

static int hrtimer_init_module(void)
{
    printk( KERN_DEBUG "Module hrtimer_init_module initn" );  
    ktime_t ktime;
    unsigned long delay_in_ns = DyS_HRTIMER_US_TO_NS(250);
            
    ktime = ktime_set(1,delay_in_ns);
        
    hrtimer_init(&hrtimer_for_test,CLOCK_MONOTONIC,HRTIMER_MODE_REL);
    
    hrtimer_for_test.function = hrtimer_callback_func;
    hrtimer_start(&hrtimer_for_test,ktime,HRTIMER_MODE_REL);
    return 0;
}

static void hrtimer_exit_module(void)
{
    printk( KERN_DEBUG "Module hrtimer_exit_module exitn" );    
}

module_init(hrtimer_init_module);
module_exit(hrtimer_exit_module);


一个测试程序,最后结果是每秒钟打印1千万次左右,总之不是我想要的1+250us的。
哪位用过的同学告诉一声,万分感谢哈,google过了,不好使

|
enum hrtimer_restart hrtimer_callback_func(struct hrtimer *p_timer)
{
    g_hr_times++;
    if (net_ratelimit())
    {
       printk(KERN_DEBUG "The function hrtimer_callback_func, times is %dn", g_hr_times);
    } 
    hrtimer_for_test.expires=ktime_add_ns(hrtimer_for_test.expires,(u64)(1*1E9+250*1000);
    return HRTIMER_RESTART;
}

在定时器重启前楼主没有更新定时器,所以直接返回HRTIMER_RESTART的后果就是又立即直接调用hrtimer_callback_func函数

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助~~求助 ~~linux文件读写问题
  • 求助:信号 --13 进程中断
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • linux的 iptables问题求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 一个简单的问题,高分求助!!!
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • (高分求助)请问,那里有软件开发的<设计文档> iis7站长之家


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3