Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从自定义内核模块中修改hrtimer参数?_Timer_Linux Kernel_Real Time - Fatal编程技术网

是否可以从自定义内核模块中修改hrtimer参数?

是否可以从自定义内核模块中修改hrtimer参数?,timer,linux-kernel,real-time,Timer,Linux Kernel,Real Time,有没有一种方法可以从内核模块中调整hrtimer的参数(特别是我想调整min_delta_ns) 我正在编写一个内核模块,它有一些由驱动程序驱动的输出。下面是基本代码的大致轮廓: #包括 #包括 #定义MAXRUNS 300000 #定义周期(单位:100000) 静态结构hrtimer hr_timer; 静态时间段; 静态volatile int runcount=0; 静态int某些函数(参数){ ktime_period_ns=ktime_set(0,period_IN_ns); hrt

有没有一种方法可以从内核模块中调整hrtimer的参数(特别是我想调整min_delta_ns)

我正在编写一个内核模块,它有一些由驱动程序驱动的输出。下面是基本代码的大致轮廓:

#包括
#包括
#定义MAXRUNS 300000
#定义周期(单位:100000)
静态结构hrtimer hr_timer;
静态时间段;
静态volatile int runcount=0;
静态int某些函数(参数){
ktime_period_ns=ktime_set(0,period_IN_ns);
hrtimer_init(&hr_timer,时钟单调,hrtimer_MODE_REL);
htimer.function=timer\u回调;
hrtimer\u start(&hr\u timer,ktime\u period\n,hrtimer\u MODE\u REL);
返回0;
}
静态枚举hrtimer\u重新启动计时器\u回调(struct hrtimer*timer)
{
运行计数++;
如果(运行次数<最大运行次数){
//做事
hrtimer\u forward\u now(&hr\u timer,ktime\u period\n);
返回HRU重新启动;
}否则{
运行计数=0;
返回HRTIMER_NORESTART;
}
}
当我以100000或更大的周期运行它时,一切都很好。然而,如果我把这个值降低到50000,我的夹具周期大约为90000(ish),输出变得不可预测

我运行cat/proc/timer_list来获取计时器的详细信息,以下是我认为相关计时器的详细信息:

Tick Device: mode:     1
Per CPU device: 0
Clock Event Device: mxc_timer1
 max_delta_ns:   1431655752223
 min_delta_ns:   85000
 mult:           6442451
 shift:          31
 mode:           3
 next_event:     13571723000000 nsecs
 set_next_event: v2_set_next_event
 set_mode:       mxc_set_mode
 event_handler:  hrtimer_interrupt
 retries:        0
从我读到的关于hrtimer如何工作的内容来看,85000的最小增量意味着我不能运行周期小于85000纳秒的中断。我想尝试降低这个值,看看我是否可以让我的代码更快地循环,而不会对系统造成不利影响(我在Raspberry Pi-like开发板上运行这个程序,称为HummingBoard)

看起来这个时钟最初是在中配置的,但我不知道如何在自定义内核模块中访问和修改该上下文之外的值


有没有一种方法可以在我的内核模块内调整hrtimer参数的值?

最小增量值描述硬件设备的属性。
即使您能够更改此值(您无法更改),计时器事件也不会更快到达。

您需要50µs间隔计时器做什么?为什么不使用轮询循环?