我正在开发新的Linux调度程序,因此需要hrtimers。
我在以下位置阅读了如何实现它们的信息:
http://lwn.net/Articles/167897/
我编写了一个小程序,在使用它们之前测试了这些计时器,但我遇到了一些问题。
这个小程序是这样的:
#include "linux/ktime.h"
#include "linux/hrtimer.h"
#include "linux/timer.h"
#include "linux/tick.h"
static void funcion_timers(unsigned long data) {
printk(" HOLA HA SALTADO EL TIMER y el dato es %lu \n", data);
}
int main () {
ktime_t kt;
int i;
struct hrtimer my_timer;
clockid_t reloj;
enum hrtimer_mode mode;
kt = ktime_set(0, 5000000);
reloj=CLOCK_MONOTONIC;
mode=HRTIMER_REL;
printk("EMPIEZA EL PROGRAMA");
hrtimer_init(&my_timer, reloj);
my_timer.function=&funcion_timers;
my_timer.data=3;
hrtimer_start(&my_timer, kt, mode);
for (i=0; i<10000; i++) { } //A kind of waste of time cause I had problem with sleep into the kernel
}
当我编译时,我被告知(我没有从shell复制,因为它是西班牙语xD):
未声明
HRTIMER_REL
hrtimer_init
需要更多参数在
my_timer.function=&funcion_timers;
中,我有一个不兼容的指针类型:Sstruct hrtimer
没有名为data
的成员为什么hrtimer_init需要参数?我认为它的定义是:
*void hrtimer_init(struct hrtimer *timer, clockid_t which_clock);*
总而言之,我想我可能还不了解
clockid_t
的工作方式。它是如何工作的?我在Internet上找不到太多有关它的信息。
非常感谢,:D
阿尔贝托
最佳答案
int main()
?您是否正在尝试从用户空间调用内核函数?
关于c - 计时器和Clockid_T问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8520818/