*参照元 [#idda9923] #backlinks *説明 [#h16fe194] -パス: [[linux-4.4.1/include/linux/list.h]] -FIXME: これは何? --説明 list_for_each_entry() の内部で使うのが本来の用途だと思われるが、こんな風に使うこともできるはず。 struct hoge { int data_foo; struct list_head node; int data_bar; }; struct hoge hoge_1; struct hoge hoge_2; /* list_head は次の要素を指しているものとする、本当は list_add を使う */ /* list_head は次の要素の list_head を指しているものとする、本当は list_add を使う */ hoge_1.node.next = &hoge_2.node; /* リストの途中の要素を指すポインタがわかっているとする */ struct hoge *hoge_list_entry1 = &hoge_1; /* リストの途中の要素を指すポインタから、次の要素を指すポインタを取得できる */ struct hoge *hoge_list_entry2 = list_next_entry(hoge_list_entry1, node); **引数 [#v68f14d4] -pos --リストの要素を指すポインタ。 --例えば pos が struct hoge * だとしたら、struct hoge はメンバとして、struct list_head を持っている必要がある。 -member --struct list_node 型のメンバ変数の名前、値でもポインタでも無いので注意。 --上記の例であれば、struct hoge はメンバとして、struct list_head node; を持っているので、この引数には node を指定する。 **返り値 [#b5700212] -pos と同じ型のポインタ --pos が指す要素の次の要素が返る。 **参考 [#ta3251bd] *実装 [#f1fd89b3] /** * list_next_entry - get the next element in list * @pos: the type * to cursor * @member: the name of the list_head within the struct. */ #define list_next_entry(pos, member) \ list_entry((pos)->member.next, typeof(*(pos)), member) -pos の次の要素を取得する。 --[[linux-4.4.1/list_entry()]] *コメント [#ocf16be8]