linuxカーネルではlinux/list.hでリストを提供している。 リストはlist_head構造体と、その構造体のオブジェクトを操作するための関数によって構成される。 list_head構造体は以下のように定義されているため、一見しただけでは任意のデータをリストとしてどのように使用すればいいのかわからない。 struct list_head { struct list_head *next, *prev; }; 以下にリストの使い方を説明する。 1. リストの要素となる構造体を宣言する。 linuxカーネルの提供するリストを使う場合には、リストの要素となる構造体を宣言する。 リストの要素となる構造体は、struct list_head型のオブジェクトをメンバーに持つ。 例えば、int型の変数idをリストで扱う場合には以下のように構造体を宣言する。 struct test_data {