Я работаю над новым планировщиком 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
}
И когда я компилирую, мне говорят (я не копирую из оболочки, потому что это на испанском 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
; как это работает?
Я не могу найти слишком много информации об этом в Интернете.
Большое спасибо,: D
Alberto