2013-08-04 3 views
0

в коде ниже. Я пытаюсь создать связанный список в модуле kerenl, почему я становлюсь ниже ошибки?инициализация связанного списка ядра

error(in LIST_HEAD(root->list)): expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘->’ token 


typedef struct 
{ 
    int a; 
    char* b; 
    struct list_head list; 

}mystruct; 

void add(mystruct* r) 
{ 
    mystruct* tmp = (mystruct*)vmalloc(sizeof(mystruct)); 
    tmp->a = 110; 
    tmp->b = (char*)vmalloc(sizeof(char)*10); 
    list_add_tail(&(tmp->list),&(r->list)); 
} 
int init_module(void) 
{ 
    mystruct *root; 
    LIST_HEAD(root->list); 
    add(root); 
} 

ответ

2

@Sweet, я изменил код выше, как показано ниже,

int list_init(void) 
{ 
    mystruct *root = (mystruct*)kmalloc(sizeof(mystruct), GFP_KERNEL); //or mystruct root; 

    INIT_LIST_HEAD(&root->list); //or INIT_LIST_HEAD(&root.list); 
    add(root); 

    return 0; 
} 

Он отлично работает для меня, пожалуйста, попробуйте на вашем конце :-).

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