核心中的連結串列資料結構

滕瑞發表於2016-11-01

很多介紹Linux核心的書中都會對核心中使用的連結串列進行描述。其描述可以在include/linux/types.h中找到:

struct list_head {
    struct list_head *next, *prev;
};

和普通連結串列不同的是:

  1. 這個連結串列是作為資料存放在其他結構體中,而不是將資料存放在連結串列中
  2. next/prev指標指向的是下一個list_head,而普通的連結串列需要指向自己型別的連結串列節點
  3. 通過list在所在資料結構中的偏移地址來得到資料的地址,從而運算元據

具體的就不詳細介紹了,總之這也是核心程式碼中的一個小技巧,記錄一下以備不時之需。

相關文章