内核模块,多个高分辨率定时器

时间:2014-12-10 07:06:45

标签: linux linux-kernel linux-device-driver

我想实现多个hrtimers,但我不确定如何使用相同的回调函数。例如,我有一个my_struct类型的数组,其中一个字段是struct hrtimer。

当我进入回调函数时,如何确定数组的哪个元素正在调用它?

1 个答案:

答案 0 :(得分:2)

使用container_of宏:

struct my_struct {
    int my_something;
    struct hrtimer my_timer;
    ...
};

enum hrtimer_restart my_callback(struct hrtimer *hrtimer)
{
    struct my_struct my = container_of(hrtimer, struct my_struct, my_timer);
    my->my_something = 42;
    ...
}