这些函数是否等同于将 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()的条件。