这些函数是否等同于将 kthreads 绑定到特定核心?
Are these functions equivalent in binding kthreads to a specific core?
我正在尝试将内核线程绑定到特定的 CPU 内核。
不知道kthread_create_on_cpu()
+wake_up_process()
和kthread_run(...)
的效果一样吗+ kthread_bind()
在内核线程上设置它与特定 CPU 核心的关联?
P.S.: wake_up_process()
被调用是因为 kthread_create_on_cpu()
将把线程处于睡眠状态。
它们不等价。
kthread_create_on_cpu()
+ wake_up_process()
将在指定的 cpu 上创建一个 kthread
,并将唤醒线程,但是,内核不导出 kthread_create_on_cpu()
,因此只有 kthread_create()
可用(导出)。因此,如果您想将 kthread 绑定到特定核心,则需要 kthread_bind()
。
组合 kthread_run()
+ kthread_bind()
不起作用,因为要使用 kthread_bind()
线程 必须 被停止,如 the source code.
中所述
问题是kthread_run()
创建并唤醒线程,所以线程不满足kthread_bind()
的条件。
我正在尝试将内核线程绑定到特定的 CPU 内核。
不知道kthread_create_on_cpu()
+wake_up_process()
和kthread_run(...)
的效果一样吗+ kthread_bind()
在内核线程上设置它与特定 CPU 核心的关联?
P.S.: wake_up_process()
被调用是因为 kthread_create_on_cpu()
将把线程处于睡眠状态。
它们不等价。
kthread_create_on_cpu()
+ wake_up_process()
将在指定的 cpu 上创建一个 kthread
,并将唤醒线程,但是,内核不导出 kthread_create_on_cpu()
,因此只有 kthread_create()
可用(导出)。因此,如果您想将 kthread 绑定到特定核心,则需要 kthread_bind()
。
组合 kthread_run()
+ kthread_bind()
不起作用,因为要使用 kthread_bind()
线程 必须 被停止,如 the source code.
问题是kthread_run()
创建并唤醒线程,所以线程不满足kthread_bind()
的条件。