在linux内核模块中设置线程关联

时间:2013-08-05 17:41:47

标签: kernel-module setthreadaffinitymask

因为大多数C程序员都知道libc为线程cpu亲和性调优提供了一个非可移植的函数(pthread_attr_setaffinity_np())。但是,我真正不知道的是在实现内核模块时如何做到这一点。提及或重定向到一些真实示例的任何答案都会非常有用。

2 个答案:

答案 0 :(得分:3)

您应该使用 kthreads ,它代表内核线程。要在指定的cpu上创建此类,您应该调用kthread_create_on_cpu()。它在include/linux/kthread.h中定义。线程将在睡眠状态下创建,因此您应该在其上调用wake_up_process()。就是这样。

您可以在this问题的答案中找到一个使用kthreads的示例。

答案 1 :(得分:0)

您可以使用kthread_bind()函数。