*参照元 [#b82b100d]
#backlinks

*説明 [#i70a3452]
-パス: [[linux-4.4.1/include/linux/list.h]]

-FIXME: これは何?
--説明

リストの先頭を指す専用の struct list_head がある?
もしくは list_head は最後と最初が繋がっている循環リストなので、リストの最後の要素が分かっていても使えるかもしれない。

 struct some {
     int data_foo;
     struct list_head list;
     int data_bar;
 };
 struct some some_list[N];
 
 ...
 
 /* リストの先頭の要素が持ってる struct list_head */
 struct list_head *some_list_first = &some_list[0].list;
 
 /* リストの先頭の要素を指すためだけの struct list_head */
 struct list_head some_list_head;
 some_list_head.next = some_list_first;
 
 ...
 
 struct some *some_first = list_first_entry(&some_list_head, struct some, list);


**引数 [#g55960b8]
-struct list_head *ptr
--リストの先頭を次の要素(next メンバ)が指している、struct list_head のポインタ
--リストの先頭要素を next メンバが指している、struct list_head のポインタ
--[[linux-4.4.1/list_head]]
-type
--
--ptr に渡した struct list_head の next が指すリスト(A とする)
--A をメンバに持つ構造体の型名
-member
--
--ptr に渡した struct list_head の next が指すリスト(A とする)
--A が指している構造体のメンバ名


**返り値 [#gbf4f86b]
-
--
-type *
--ptr に渡した struct list_head の next が指すリスト(A とする)
--A をメンバに持つ構造体の先頭を指すポインタ


**参考 [#ve54fdf1]


*実装 [#p41aa079]
 /**
  * list_first_entry - get the first element from a list
  * @ptr:        the list head to take the element from.
  * @type:       the type of the struct this is embedded in.
  * @member:     the name of the list_head within the struct.
  *
  * Note, that list is expected to be not empty.
  */
 #define list_first_entry(ptr, type, member) \
         list_entry((ptr)->next, type, member)
-
-ptr は struct list_head * なので、next メンバを持っている。
--[[linux-4.4.1/list_entry()]]


*コメント [#q416727a]

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