簡體   English   中英

linux內核模塊:內核方法未定義(kthread_create_on_cpu)

[英]linux kernel module: kernel method undefined (kthread_create_on_cpu)

方法

struct task_struct *kthread_create_on_cpu(int(*threadfn)(void *data),
    void *data, unsigned int cpu,
    const char *namefmt)

在kthread.c文件中定義,並在kthread.h中原型化。 但是它不會導出。

在我的驅動程序中,我想在給定的CPU上啟動kthread,所以我這樣做:

#include <linux/kthread.h>

int udpsrv_start_single( unsigned int cpu)
{
     DEBUG_PRINT_INFO( "[udpsrv] udpsrv_start: Initializing...\n");
     //(...)
     kthread->thread = kthread_create_on_cpu((void *)kthread_start_single, 
                                                      NULL, cpu, "mpsrv");
     //(...)

我可以編譯,但是在解析MODPOST上的模塊符號時出現鏈接錯誤:

1>    LD [M]  /tmp/VisualKernel/mpsrvlkm.o
1>    Building modules, stage 2.
1>    MODPOST 1 modules
1>EXEC : warning : "kthread_create_on_cpu"[/tmp/VisualKernel/mpsrvlkm.ko] undefined!

我應該如何進行? 如何導入該符號或該怎么做?

kthread_create_on_cpu不會由內核導出,它是CPU熱插拔線程使用的內部函數(請參閱linux/smpboot.h )。

我建議您改用kthread_bind

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM