*参照元 [#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]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS