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);
}
4

1 に答える 1

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;
}

それは私にとってはうまくいきます。最後に試してください:-)。

于 2013-08-05T11:25:00.650 に答える