我正在开发新的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;中,我有一个不兼容的指针类型:S
struct 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/

10-11 19:53
查看更多