内核空间中的线程

时间:2016-03-18 08:40:36

标签: c multithreading kernel-module

我想在内核空间中为keepalive定时器创建线程。但是有一些问题:

1)KThreads:在我的回调函数中我做了循环

while (!kthread_should_stop()) {
    // some work
    unsigned long j0, j1;
    int delay = 5*HZ;
    j0 = jiffies;
    j1 = j0 + delay;
    printk("\n----------thread print----------");

    while (time_before(jiffies, j1))
            schedule();
    }
}

但是当我在模块中调用kthread_stop(keep_timer)时,它等待kthread停止并且我从0松开到延迟秒。我的模块等待这么长时间是一场灾难

2)Tasklet:tasklets是ATOMIC,我无法让它在回调函数内等待延迟秒数

我怎样才能创建一个带有计时器和回调函数的线程,它将处于一个连续的循环中,直到它从模块中被杀死而不等待线程停止?

0 个答案:

没有答案