Как передать данные в kthread_run - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь сделать простой модуль ядра с многопоточностью. Поэтому я использую linux / kthread.h, ядро ​​v. 5.2.11

Проблема: я не могу передать массив символов в поток: ошибка сегментации.

Это то, что яделать:

typedef struct {
    int num; 
    char origin[MAXSTR]; //part of input for current thread
    struct completion wait_for_thread;      //completion struct
} kthread_arg;

Затем:

struct task_struct *task;
static kthread_arg kta_first_thread;
kta_first_thread.num = 1;
strncpy(kta_first_thread.origin, dat1, MAXSTR );

//Here I have normal char array 'origin'
init_completion(&kta_first_thread.wait_for_thread);
task = kthread_run(&thread_function, (void*)&kta_first_thread, "one");

И после этого у меня появляется ошибка. Более того, если вы удалите массив из структуры, то все работает. Я уверен, что делаешь что-то не так?

...