2015-03-18 3 views
1

МетодLinux модуль ядра: метод ядра не определен (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 прототип. Но он не экспортируется.

В моем драйвере я хочу начать 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! 

Как мне продолжить? Как импортировать этот символ или что делать?

ответ

3

kthread_create_on_cpu не экспортируется ядром, это внутренняя функция, используемая потоками hotplug CPU (см. linux/smpboot.h).

Вместо этого я предлагаю вам использовать kthread_bind.

Смежные вопросы