€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ!/translations/zh_CN/core-api/list”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/zh_TW/core-api/list”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/it_IT/core-api/list”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/ja_JP/core-api/list”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/ko_KR/core-api/list”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/pt_BR/core-api/list”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ!/translations/sp_SP/core-api/list”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ!SPDX-License-Identifier: GPL-2.0+”h]”hŒ!SPDX-License-Identifier: GPL-2.0+”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ;/var/lib/git/docbuild/linux/Documentation/core-api/list.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒLinked Lists in Linux”h]”hŒLinked Lists in Linux”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œid1”uh1hÍhhÊh²hh³hÇh´KubhŒ field_list”“”)�”}”(hhh]”hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒAuthor”h]”hŒAuthor”…”�”}”(hhëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1héhhæh³hÇh´KubhŒ field_body”“”)�”}”(hŒ6Nicolas Frattaroli ”h]”hŒ paragraph”“”)�”}”(hŒ5Nicolas Frattaroli ”h]”(hŒNicolas Frattaroli <”…”�”}”(hjh²hh³Nh´NubhŒ reference”“”)�”}”(hŒ nicolas.frattaroli@collabora.com”h]”hŒ nicolas.frattaroli@collabora.com”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ'mailto:nicolas.frattaroli@collabora.com”uh1j hjubhŒ>”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Khhûubah}”(h]”h ]”h"]”h$]”h&]”uh1hùhhæubeh}”(h]”h ]”h"]”h$]”h&]”uh1häh³hÇh´Khháh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1hßhhÊh²hh³hÇh´KubhŒtopic”“”)�”}”(hŒ Contents ”h]”(hÎ)�”}”(hŒContents”h]”hŒContents”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj9h³hÇh´K ubhŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hhh]”(j)�”}”(hhh]”j )�”}”(hhh]”hŒLinked Lists in Linux”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”hÞah ]”h"]”h$]”h&]”Œrefid”Œlinked-lists-in-linux”uh1j hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjRubjL)�”}”(hhh]”(jQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒ Introduction”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”Œrefid”Œ introduction”uh1j hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhjmubjQ)�”}”(hhh]”(j)�”}”(hhh]”j )�”}”(hhh]”hŒ+Linux implementation of doubly linked lists”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”Œrefid”Œ+linux-implementation-of-doubly-linked-lists”uh1j hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj’ubjL)�”}”(hhh]”(jQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒDeclaring a node”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œdeclaring-a-node”uh1j hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒ!Declaring and initializing a list”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œ!declaring-and-initializing-a-list”uh1j hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒAdding nodes to the list”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”Œrefid”Œadding-nodes-to-the-list”uh1j hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒTraversing the list”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid7”ah ]”h"]”h$]”h&]”Œrefid”Œtraversing-the-list”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒRemoving nodes from the list”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”Œid8”ah ]”h"]”h$]”h&]”Œrefid”Œremoving-nodes-from-the-list”uh1j hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒ Traversing whilst removing nodes”…”�”}”(hjah²hh³Nh´Nubah}”(h]”Œid9”ah ]”h"]”h$]”h&]”Œrefid”Œ traversing-whilst-removing-nodes”uh1j hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒCutting a list”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”Œid10”ah ]”h"]”h$]”h&]”Œrefid”Œcutting-a-list”uh1j hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒ Moving entries and partial lists”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”Œid11”ah ]”h"]”h$]”h&]”Œrefid”Œ moving-entries-and-partial-lists”uh1j hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒRotating entries”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”Œid12”ah ]”h"]”h$]”h&]”Œrefid”Œrotating-entries”uh1j hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒSwapping entries”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”Œid13”ah ]”h"]”h$]”h&]”Œrefid”Œswapping-entries”uh1j hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒSplicing two lists together”…”�”}”(hj h²hh³Nh´Nubah}”(h]”Œid14”ah ]”h"]”h$]”h&]”Œrefid”Œsplicing-two-lists-together”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒConcurrency considerations”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”Œid15”ah ]”h"]”h$]”h&]”Œrefid”Œconcurrency-considerations”uh1j hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒFurther reading”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”Œid16”ah ]”h"]”h$]”h&]”Œrefid”Œfurther-reading”uh1j hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jKhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jPhjmubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒ Full List API”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”Œid17”ah ]”h"]”h$]”h&]”Œrefid”Œ full-list-api”uh1j hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhjmubjQ)�”}”(hhh]”j)�”}”(hhh]”j )�”}”(hhh]”hŒPrivate List API”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”Œid18”ah ]”h"]”h$]”h&]”Œrefid”Œprivate-list-api”uh1j hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jKhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jPhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jKhj9h²hh³Nh´Nubeh}”(h]”Œcontents”ah ]”Œcontents”ah"]”Œcontents”ah$]”h&]”uh1j7h³hÇh´K hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjuh1hÍhjÖh²hh³hÇh´K ubj)�”}”(hX<Linked lists are one of the most basic data structures used in many programs. The Linux kernel implements several different flavours of linked lists. The purpose of this document is not to explain linked lists in general, but to show new kernel developers how to use the Linux kernel implementations of linked lists.”h]”hX<Linked lists are one of the most basic data structures used in many programs. The Linux kernel implements several different flavours of linked lists. The purpose of this document is not to explain linked lists in general, but to show new kernel developers how to use the Linux kernel implementations of linked lists.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´KhjÖh²hubj)�”}”(hX¨Please note that while linked lists certainly are ubiquitous, they are rarely the best data structure to use in cases where a simple array doesn't already suffice. In particular, due to their poor data locality, linked lists are a bad choice in situations where performance may be of consideration. Familiarizing oneself with other in-kernel generic data structures, especially for concurrent accesses, is highly encouraged.”h]”hXªPlease note that while linked lists certainly are ubiquitous, they are rarely the best data structure to use in cases where a simple array doesn’t already suffice. In particular, due to their poor data locality, linked lists are a bad choice in situations where performance may be of consideration. Familiarizing oneself with other in-kernel generic data structures, especially for concurrent accesses, is highly encouraged.”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´KhjÖh²hubeh}”(h]”j…ah ]”h"]”Œ introduction”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ+Linux implementation of doubly linked lists”h]”hŒ+Linux implementation of doubly linked lists”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝj¡uh1hÍhj h²hh³hÇh´Kubj)�”}”(hŒ`Linux's linked list implementations can be used by including the header file ````.”h]”(hŒOLinux’s linked list implementations can be used by including the header file ”…”�”}”(hjh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ````”h]”hŒ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Khj h²hubj)�”}”(hŒŽThe doubly-linked list will likely be the most familiar to many readers. It's a list that can efficiently be traversed forwards and backwards.”h]”hŒ�The doubly-linked list will likely be the most familiar to many readers. It’s a list that can efficiently be traversed forwards and backwards.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K!hj h²hubj)�”}”(hXThe Linux kernel's doubly-linked list is circular in nature. This means that to get from the head node to the tail, we can just travel one edge backwards. Similarly, to get from the tail node to the head, we can simply travel forwards "beyond" the tail and arrive back at the head.”h]”hXThe Linux kernel’s doubly-linked list is circular in nature. This means that to get from the head node to the tail, we can just travel one edge backwards. Similarly, to get from the tail node to the head, we can simply travel forwards “beyondâ€� the tail and arrive back at the head.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K$hj h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDeclaring a node”h]”hŒDeclaring a node”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjÀuh1hÍhjYh²hh³hÇh´K*ubj)�”}”(hŒŠA node in a doubly-linked list is declared by adding a struct list_head member to the data structure you wish to be contained in the list:”h]”hŒŠA node in a doubly-linked list is declared by adding a struct list_head member to the data structure you wish to be contained in the list:”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K,hjYh²hubhŒ literal_block”“”)�”}”(hŒ‘struct clown { unsigned long long shoe_size; const char *name; struct list_head node; /* the aforementioned member */ };”h]”hŒ‘struct clown { unsigned long long shoe_size; const char *name; struct list_head node; /* the aforementioned member */ };”…”�”}”hjzsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œc”Œhighlight_args”}”uh1jxh³hÇh´K/hjYh²hubj)�”}”(hXZThis may be an unfamiliar approach to some, as the classical explanation of a linked list is a list node data structure with pointers to the previous and next list node, as well the payload data. Linux chooses this approach because it allows for generic list modification code regardless of what data structure is contained within the list. Since the struct list_head member is not a pointer but part of the data structure proper, the container_of() pattern can be used by the list implementation to access the payload data regardless of its type, while staying oblivious to what said type actually is.”h]”hXZThis may be an unfamiliar approach to some, as the classical explanation of a linked list is a list node data structure with pointers to the previous and next list node, as well the payload data. Linux chooses this approach because it allows for generic list modification code regardless of what data structure is contained within the list. Since the struct list_head member is not a pointer but part of the data structure proper, the container_of() pattern can be used by the list implementation to access the payload data regardless of its type, while staying oblivious to what said type actually is.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K7hjYh²hubeh}”(h]”jÆah ]”h"]”Œdeclaring a node”ah$]”h&]”uh1hÈhj h²hh³hÇh´K*ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ!Declaring and initializing a list”h]”hŒ!Declaring and initializing a list”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjâuh1hÍhj¢h²hh³hÇh´KAubj)�”}”(hŒÃA doubly-linked list can then be declared as just another struct list_head, and initialized with the LIST_HEAD_INIT() macro during initial assignment, or with the INIT_LIST_HEAD() function later:”h]”hŒÃA doubly-linked list can then be declared as just another struct list_head, and initialized with the LIST_HEAD_INIT() macro during initial assignment, or with the INIT_LIST_HEAD() function later:”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´KChj¢h²hubjy)�”}”(hXµstruct clown_car { int tyre_pressure[4]; struct list_head clowns; /* Looks like a node! */ }; /* ... Somewhere later in our driver ... */ static int circus_init(struct circus_priv *circus) { struct clown_car other_car = { .tyre_pressure = {10, 12, 11, 9}, .clowns = LIST_HEAD_INIT(other_car.clowns) }; INIT_LIST_HEAD(&circus->car.clowns); return 0; }”h]”hXµstruct clown_car { int tyre_pressure[4]; struct list_head clowns; /* Looks like a node! */ }; /* ... Somewhere later in our driver ... */ static int circus_init(struct circus_priv *circus) { struct clown_car other_car = { .tyre_pressure = {10, 12, 11, 9}, .clowns = LIST_HEAD_INIT(other_car.clowns) }; INIT_LIST_HEAD(&circus->car.clowns); return 0; }”…”�”}”hjÁsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´KGhj¢h²hubj)�”}”(hŒåA further point of confusion to some may be that the list itself doesn't really have its own type. The concept of the entire linked list and a struct list_head member that points to other entries in the list are one and the same.”h]”hŒçA further point of confusion to some may be that the list itself doesn’t really have its own type. The concept of the entire linked list and a struct list_head member that points to other entries in the list are one and the same.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K\hj¢h²hubeh}”(h]”jèah ]”h"]”Œ!declaring and initializing a list”ah$]”h&]”uh1hÈhj h²hh³hÇh´KAubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAdding nodes to the list”h]”hŒAdding nodes to the list”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjuh1hÍhjåh²hh³hÇh´Kbubj)�”}”(hŒFAdding a node to the linked list is done through the list_add() macro.”h]”hŒFAdding a node to the linked list is done through the list_add() macro.”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Kdhjåh²hubj)�”}”(hŒTWe'll return to our clown car example to illustrate how nodes get added to the list:”h]”hŒVWe’ll return to our clown car example to illustrate how nodes get added to the list:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Kfhjåh²hubjy)�”}”(hXÑstatic int circus_fill_car(struct circus_priv *circus) { struct clown_car *car = &circus->car; struct clown *grock; struct clown *dimitri; /* State 1 */ grock = kzalloc_obj(*grock); if (!grock) return -ENOMEM; grock->name = "Grock"; grock->shoe_size = 1000; /* Note that we're adding the "node" member */ list_add(&grock->node, &car->clowns); /* State 2 */ dimitri = kzalloc_obj(*dimitri); if (!dimitri) return -ENOMEM; dimitri->name = "Dimitri"; dimitri->shoe_size = 50; list_add(&dimitri->node, &car->clowns); /* State 3 */ return 0; }”h]”hXÑstatic int circus_fill_car(struct circus_priv *circus) { struct clown_car *car = &circus->car; struct clown *grock; struct clown *dimitri; /* State 1 */ grock = kzalloc_obj(*grock); if (!grock) return -ENOMEM; grock->name = "Grock"; grock->shoe_size = 1000; /* Note that we're adding the "node" member */ list_add(&grock->node, &car->clowns); /* State 2 */ dimitri = kzalloc_obj(*dimitri); if (!dimitri) return -ENOMEM; dimitri->name = "Dimitri"; dimitri->shoe_size = 50; list_add(&dimitri->node, &car->clowns); /* State 3 */ return 0; }”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´Kihjåh²hubj)�”}”(hŒ/In State 1, our list of clowns is still empty::”h]”hŒ.In State 1, our list of clowns is still empty:”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K‹hjåh²hubjy)�”}”(hŒB .------. v | .--------. | | clowns |--' '--------'”h]”hŒB .------. v | .--------. | | clowns |--' '--------'”…”�”}”hj/sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´K�hjåh²hubj)�”}”(hŒ£This diagram shows the singular "clowns" node pointing at itself. In this diagram, and all following diagrams, only the forward edges are shown, to aid in clarity.”h]”hŒ§This diagram shows the singular “clownsâ€� node pointing at itself. In this diagram, and all following diagrams, only the forward edges are shown, to aid in clarity.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K“hjåh²hubj)�”}”(hŒ3In State 2, we've added Grock after the list head::”h]”hŒ4In State 2, we’ve added Grock after the list head:”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K—hjåh²hubjy)�”}”(hŒˆ .--------------------. v | .--------. .-------. | | clowns |---->| Grock |--' '--------' '-------'”h]”hŒˆ .--------------------. v | .--------. .-------. | | clowns |---->| Grock |--' '--------' '-------'”…”�”}”hjYsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´K™hjåh²hubj)�”}”(hŒ‚This diagram shows the "clowns" node pointing at a new node labeled "Grock". The Grock node is pointing back at the "clowns" node.”h]”hŒŽThis diagram shows the “clownsâ€� node pointing at a new node labeled “Grockâ€�. The Grock node is pointing back at the “clownsâ€� node.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´KŸhjåh²hubj)�”}”(hŒQIn State 3, we've added Dimitri after the list head, resulting in the following::”h]”hŒRIn State 3, we’ve added Dimitri after the list head, resulting in the following:”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K¢hjåh²hubjy)�”}”(hŒØ .------------------------------------. v | .--------. .---------. .-------. | | clowns |---->| Dimitri |---->| Grock |--' '--------' '---------' '-------'”h]”hŒØ .------------------------------------. v | .--------. .---------. .-------. | | clowns |---->| Dimitri |---->| Grock |--' '--------' '---------' '-------'”…”�”}”hjƒsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´K¤hjåh²hubj)�”}”(hŒ¶This diagram shows the "clowns" node pointing at a new node labeled "Dimitri", which then points at the node labeled "Grock". The "Grock" node still points back at the "clowns" node.”h]”hŒÊThis diagram shows the “clownsâ€� node pointing at a new node labeled “Dimitriâ€�, which then points at the node labeled “Grockâ€�. The “Grockâ€� node still points back at the “clownsâ€� node.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Kªhjåh²hubj)�”}”(hŒƒIf we wanted to have Dimitri inserted at the end of the list instead, we'd use list_add_tail(). Our code would then look like this:”h]”hŒ…If we wanted to have Dimitri inserted at the end of the list instead, we’d use list_add_tail(). Our code would then look like this:”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K®hjåh²hubjy)�”}”(hŒ­static int circus_fill_car(struct circus_priv *circus) { /* ... */ list_add_tail(&dimitri->node, &car->clowns); /* State 3b */ return 0; }”h]”hŒ­static int circus_fill_car(struct circus_priv *circus) { /* ... */ list_add_tail(&dimitri->node, &car->clowns); /* State 3b */ return 0; }”…”�”}”hj­sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´K±hjåh²hubj)�”}”(hŒ$This results in the following list::”h]”hŒ#This results in the following list:”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´K¾hjåh²hubjy)�”}”(hŒØ .------------------------------------. v | .--------. .-------. .---------. | | clowns |---->| Grock |---->| Dimitri |--' '--------' '-------' '---------'”h]”hŒØ .------------------------------------. v | .--------. .-------. .---------. | | clowns |---->| Grock |---->| Dimitri |--' '--------' '-------' '---------'”…”�”}”hjÊsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´KÀhjåh²hubj)�”}”(hŒ·This diagram shows the "clowns" node pointing at the node labeled "Grock", which points at the new node labeled "Dimitri". The node labeled "Dimitri" points back at the "clowns" node.”h]”hŒËThis diagram shows the “clownsâ€� node pointing at the node labeled “Grockâ€�, which points at the new node labeled “Dimitriâ€�. The node labeled “Dimitriâ€� points back at the “clownsâ€� node.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´KÆhjåh²hubeh}”(h]”j ah ]”h"]”Œadding nodes to the list”ah$]”h&]”uh1hÈhj h²hh³hÇh´KbubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒTraversing the list”h]”hŒTraversing the list”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝj&uh1hÍhjíh²hh³hÇh´KËubj)�”}”(hŒXTo iterate the list, we can loop through all nodes within the list with list_for_each().”h]”hŒXTo iterate the list, we can loop through all nodes within the list with list_for_each().”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´KÍhjíh²hubj)�”}”(hŒJIn our clown example, this results in the following somewhat awkward code:”h]”hŒJIn our clown example, this results in the following somewhat awkward code:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´KÐhjíh²hubjy)�”}”(hX�static unsigned long long circus_get_max_shoe_size(struct circus_priv *circus) { unsigned long long res = 0; struct clown *e; struct list_head *cur; list_for_each(cur, &circus->car.clowns) { e = list_entry(cur, struct clown, node); if (e->shoe_size > res) res = e->shoe_size; } return res; }”h]”hX�static unsigned long long circus_get_max_shoe_size(struct circus_priv *circus) { unsigned long long res = 0; struct clown *e; struct list_head *cur; list_for_each(cur, &circus->car.clowns) { e = list_entry(cur, struct clown, node); if (e->shoe_size > res) res = e->shoe_size; } return res; }”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´KÒhjíh²hubj)�”}”(hŒŽThe list_entry() macro internally uses the aforementioned container_of() to retrieve the data structure instance that ``node`` is a member of.”h]”(hŒvThe list_entry() macro internally uses the aforementioned container_of() to retrieve the data structure instance that ”…”�”}”(hj)h²hh³Nh´Nubj$)�”}”(hŒ``node``”h]”hŒnode”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj)ubhŒ is a member of.”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Kãhjíh²hubj)�”}”(hXBNote how the additional list_entry() call is a little awkward here. It's only there because we're iterating through the ``node`` members, but we really want to iterate through the payload, i.e. the ``struct clown`` that contains each node's struct list_head. For this reason, there is a second macro: list_for_each_entry()”h]”(hŒ|Note how the additional list_entry() call is a little awkward here. It’s only there because we’re iterating through the ”…”�”}”(hjIh²hh³Nh´Nubj$)�”}”(hŒ``node``”h]”hŒnode”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjIubhŒF members, but we really want to iterate through the payload, i.e. the ”…”�”}”(hjIh²hh³Nh´Nubj$)�”}”(hŒ``struct clown``”h]”hŒ struct clown”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjIubhŒn that contains each node’s struct list_head. For this reason, there is a second macro: list_for_each_entry()”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Kæhjíh²hubj)�”}”(hŒ6Using it would change our code to something like this:”h]”hŒ6Using it would change our code to something like this:”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Kìhjíh²hubjy)�”}”(hX?static unsigned long long circus_get_max_shoe_size(struct circus_priv *circus) { unsigned long long res = 0; struct clown *e; list_for_each_entry(e, &circus->car.clowns, node) { if (e->shoe_size > res) res = e->shoe_size; } return res; }”h]”hX?static unsigned long long circus_get_max_shoe_size(struct circus_priv *circus) { unsigned long long res = 0; struct clown *e; list_for_each_entry(e, &circus->car.clowns, node) { if (e->shoe_size > res) res = e->shoe_size; } return res; }”…”�”}”hj‰sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´Kîhjíh²hubj)�”}”(hXThis eliminates the need for the list_entry() step, and our loop cursor is now of the type of our payload. The macro is given the member name that corresponds to the list's struct list_head within the clown data structure so that it can still walk the list.”h]”hXThis eliminates the need for the list_entry() step, and our loop cursor is now of the type of our payload. The macro is given the member name that corresponds to the list’s struct list_head within the clown data structure so that it can still walk the list.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Kýhjíh²hubeh}”(h]”j,ah ]”h"]”Œtraversing the list”ah$]”h&]”uh1hÈhj h²hh³hÇh´KËubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒRemoving nodes from the list”h]”hŒRemoving nodes from the list”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjHuh1hÍhj­h²hh³hÇh´Mubj)�”}”(hŒøThe list_del() function can be used to remove entries from the list. It not only removes the given entry from the list, but poisons the entry's ``prev`` and ``next`` pointers, so that unintended use of the entry after removal does not go unnoticed.”h]”(hŒ’The list_del() function can be used to remove entries from the list. It not only removes the given entry from the list, but poisons the entry’s ”…”�”}”(hj¾h²hh³Nh´Nubj$)�”}”(hŒ``prev``”h]”hŒprev”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¾ubhŒ and ”…”�”}”(hj¾h²hh³Nh´Nubj$)�”}”(hŒ``next``”h]”hŒnext”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¾ubhŒS pointers, so that unintended use of the entry after removal does not go unnoticed.”…”�”}”(hj¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mhj­h²hubj)�”}”(hŒ@We can extend our previous example to remove one of the entries:”h]”hŒ@We can extend our previous example to remove one of the entries:”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M hj­h²hubjy)�”}”(hŒástatic int circus_fill_car(struct circus_priv *circus) { /* ... */ list_add(&dimitri->node, &car->clowns); /* State 3 */ list_del(&dimitri->node); /* State 4 */ return 0; }”h]”hŒástatic int circus_fill_car(struct circus_priv *circus) { /* ... */ list_add(&dimitri->node, &car->clowns); /* State 3 */ list_del(&dimitri->node); /* State 4 */ return 0; }”…”�”}”hjþsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´M hj­h²hubj)�”}”(hŒ"The result of this would be this::”h]”hŒ!The result of this would be this:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mhj­h²hubjy)�”}”(hŒ¾ .--------------------. v | .--------. .-------. | .---------. | clowns |---->| Grock |--' | Dimitri | '--------' '-------' '---------'”h]”hŒ¾ .--------------------. v | .--------. .-------. | .---------. | clowns |---->| Grock |--' | Dimitri | '--------' '-------' '---------'”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´Mhj­h²hubj)�”}”(hŒËThis diagram shows the "clowns" node pointing at the node labeled "Grock", which points back at the "clowns" node. Off to the side is a lone node labeled "Dimitri", which has no arrows pointing anywhere.”h]”hŒÛThis diagram shows the “clownsâ€� node pointing at the node labeled “Grockâ€�, which points back at the “clownsâ€� node. Off to the side is a lone node labeled “Dimitriâ€�, which has no arrows pointing anywhere.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M%hj­h²hubj)�”}”(hŒ’Note how the Dimitri node does not point to itself; its pointers are intentionally set to a "poison" value that the list code refuses to traverse.”h]”hŒ–Note how the Dimitri node does not point to itself; its pointers are intentionally set to a “poisonâ€� value that the list code refuses to traverse.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M)hj­h²hubj)�”}”(hŒ“If we wanted to reinitialize the removed node instead to make it point at itself again like an empty list head, we can use list_del_init() instead:”h]”hŒ“If we wanted to reinitialize the removed node instead to make it point at itself again like an empty list head, we can use list_del_init() instead:”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M,hj­h²hubjy)�”}”(hŒçstatic int circus_fill_car(struct circus_priv *circus) { /* ... */ list_add(&dimitri->node, &car->clowns); /* State 3 */ list_del_init(&dimitri->node); /* State 4b */ return 0; }”h]”hŒçstatic int circus_fill_car(struct circus_priv *circus) { /* ... */ list_add(&dimitri->node, &car->clowns); /* State 3 */ list_del_init(&dimitri->node); /* State 4b */ return 0; }”…”�”}”hjSsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´M/hj­h²hubj)�”}”(hŒ;This results in the deleted node pointing to itself again::”h]”hŒ:This results in the deleted node pointing to itself again:”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M@hj­h²hubjy)�”}”(hŒì .--------------------. .-------. v | v | .--------. .-------. | .---------. | | clowns |---->| Grock |--' | Dimitri |--' '--------' '-------' '---------'”h]”hŒì .--------------------. .-------. v | v | .--------. .-------. | .---------. | | clowns |---->| Grock |--' | Dimitri |--' '--------' '-------' '---------'”…”�”}”hjpsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´MBhj­h²hubj)�”}”(hŒ¼This diagram shows the "clowns" node pointing at the node labeled "Grock", which points back at the "clowns" node. Off to the side is a lone node labeled "Dimitri", which points to itself.”h]”hŒÌThis diagram shows the “clownsâ€� node pointing at the node labeled “Grockâ€�, which points back at the “clownsâ€� node. Off to the side is a lone node labeled “Dimitriâ€�, which points to itself.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MHhj­h²hubeh}”(h]”jNah ]”h"]”Œremoving nodes from the list”ah$]”h&]”uh1hÈhj h²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Traversing whilst removing nodes”h]”hŒ Traversing whilst removing nodes”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjjuh1hÍhj“h²hh³hÇh´MMubj)�”}”(hX Deleting entries while we're traversing the list will cause problems if we use list_for_each() and list_for_each_entry(), as deleting the current entry would modify the ``next`` pointer of it, which means the traversal can't properly advance to the next list entry.”h]”(hŒ«Deleting entries while we’re traversing the list will cause problems if we use list_for_each() and list_for_each_entry(), as deleting the current entry would modify the ”…”�”}”(hj¤h²hh³Nh´Nubj$)�”}”(hŒ``next``”h]”hŒnext”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¤ubhŒZ pointer of it, which means the traversal can’t properly advance to the next list entry.”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MOhj“h²hubj)�”}”(hŒóThere is a solution to this however: list_for_each_safe() and list_for_each_entry_safe(). These take an additional parameter of a pointer to a struct list_head to use as temporary storage for the next entry during iteration, solving the issue.”h]”hŒóThere is a solution to this however: list_for_each_safe() and list_for_each_entry_safe(). These take an additional parameter of a pointer to a struct list_head to use as temporary storage for the next entry during iteration, solving the issue.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MThj“h²hubj)�”}”(hŒAn example of how to use it:”h]”hŒAn example of how to use it:”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MYhj“h²hubjy)�”}”(hXMstatic void circus_eject_insufficient_clowns(struct circus_priv *circus) { struct clown *e; struct clown *n; /* temporary storage for safe iteration */ list_for_each_entry_safe(e, n, &circus->car.clowns, node) { if (e->shoe_size < 500) list_del(&e->node); } }”h]”hXMstatic void circus_eject_insufficient_clowns(struct circus_priv *circus) { struct clown *e; struct clown *n; /* temporary storage for safe iteration */ list_for_each_entry_safe(e, n, &circus->car.clowns, node) { if (e->shoe_size < 500) list_del(&e->node); } }”…”�”}”hjàsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´M[hj“h²hubj)�”}”(hŒ™Proper memory management (i.e. freeing the deleted node while making sure nothing still references it) in this case is left as an exercise to the reader.”h]”hŒ™Proper memory management (i.e. freeing the deleted node while making sure nothing still references it) in this case is left as an exercise to the reader.”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mhhj“h²hubeh}”(h]”jpah ]”h"]”Œ traversing whilst removing nodes”ah$]”h&]”uh1hÈhj h²hh³hÇh´MMubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCutting a list”h]”hŒCutting a list”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjŒuh1hÍhjh²hh³hÇh´Mlubj)�”}”(hŒ‹There are two helper functions to cut lists with. Both take elements from the list ``head``, and replace the contents of the list ``list``.”h]”(hŒSThere are two helper functions to cut lists with. Both take elements from the list ”…”�”}”(hjh²hh³Nh´Nubj$)�”}”(hŒ``head``”h]”hŒhead”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjubhŒ', and replace the contents of the list ”…”�”}”(hjh²hh³Nh´Nubj$)�”}”(hŒ``list``”h]”hŒlist”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mnhjh²hubj)�”}”(hŒšThe first such function is list_cut_position(). It removes all list entries from ``head`` up to and including ``entry``, placing them in ``list`` instead.”h]”(hŒQThe first such function is list_cut_position(). It removes all list entries from ”…”�”}”(hjGh²hh³Nh´Nubj$)�”}”(hŒ``head``”h]”hŒhead”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjGubhŒ up to and including ”…”�”}”(hjGh²hh³Nh´Nubj$)�”}”(hŒ ``entry``”h]”hŒentry”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjGubhŒ, placing them in ”…”�”}”(hjGh²hh³Nh´Nubj$)�”}”(hŒ``list``”h]”hŒlist”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjGubhŒ instead.”…”�”}”(hjGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mqhjh²hubj)�”}”(hŒ@In this example, it's assumed we start with the following list::”h]”hŒAIn this example, it’s assumed we start with the following list:”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mthjh²hubjy)�”}”(hXd .----------------------------------------------------------------. v | .--------. .-------. .---------. .-----. .---------. | | clowns |---->| Grock |---->| Dimitri |---->| Pic |---->| Alfredo |--' '--------' '-------' '---------' '-----' '---------'”h]”hXd .----------------------------------------------------------------. v | .--------. .-------. .---------. .-----. .---------. | | clowns |---->| Grock |---->| Dimitri |---->| Pic |---->| Alfredo |--' '--------' '-------' '---------' '-----' '---------'”…”�”}”hj™sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´Mvhjh²hubj)�”}”(hŒ¶With the following code, every clown up to and including "Pic" is moved from the "clowns" list head to a separate struct list_head initialized at local stack variable ``retirement``:”h]”(hŒ¯With the following code, every clown up to and including “Picâ€� is moved from the “clownsâ€� list head to a separate struct list_head initialized at local stack variable ”…”�”}”(hj§h²hh³Nh´Nubj$)�”}”(hŒ``retirement``”h]”hŒ retirement”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj§ubhŒ:”…”�”}”(hj§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M|hjh²hubjy)�”}”(hXzstatic void circus_retire_clowns(struct circus_priv *circus) { struct list_head retirement = LIST_HEAD_INIT(retirement); struct clown *grock, *dimitri, *pic, *alfredo; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ list_cut_position(&retirement, &car->clowns, &pic->node); /* State 1 */ }”h]”hXzstatic void circus_retire_clowns(struct circus_priv *circus) { struct list_head retirement = LIST_HEAD_INIT(retirement); struct clown *grock, *dimitri, *pic, *alfredo; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ list_cut_position(&retirement, &car->clowns, &pic->node); /* State 1 */ }”…”�”}”hjÇsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´M€hjh²hubj)�”}”(hŒ2The resulting ``car->clowns`` list would be this::”h]”(hŒThe resulting ”…”�”}”(hjÖh²hh³Nh´Nubj$)�”}”(hŒ``car->clowns``”h]”hŒ car->clowns”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÖubhŒ list would be this:”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M�hjh²hubjy)�”}”(hŒ’ .----------------------. v | .--------. .---------. | | clowns |---->| Alfredo |--' '--------' '---------'”h]”hŒ’ .----------------------. v | .--------. .---------. | | clowns |---->| Alfredo |--' '--------' '---------'”…”�”}”hjösbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´M‘hjh²hubj)�”}”(hŒDMeanwhile, the ``retirement`` list is transformed to the following::”h]”(hŒMeanwhile, the ”…”�”}”(hj h²hh³Nh´Nubj$)�”}”(hŒ``retirement``”h]”hŒ retirement”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj ubhŒ& list is transformed to the following:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M—hjh²hubjy)�”}”(hX( .--------------------------------------------------. v | .------------. .-------. .---------. .-----. | | retirement |---->| Grock |---->| Dimitri |---->| Pic |--' '------------' '-------' '---------' '-----'”h]”hX( .--------------------------------------------------. v | .------------. .-------. .---------. .-----. | | retirement |---->| Grock |---->| Dimitri |---->| Pic |--' '------------' '-------' '---------' '-----'”…”�”}”hj$ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´M™hjh²hubj)�”}”(hX The second function, list_cut_before(), is much the same, except it cuts before the ``entry`` node, i.e. it removes all list entries from ``head`` up to but excluding ``entry``, placing them in ``list`` instead. This example assumes the same initial starting list as the previous example:”h]”(hŒTThe second function, list_cut_before(), is much the same, except it cuts before the ”…”�”}”(hj2 h²hh³Nh´Nubj$)�”}”(hŒ ``entry``”h]”hŒentry”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj2 ubhŒ- node, i.e. it removes all list entries from ”…”�”}”(hj2 h²hh³Nh´Nubj$)�”}”(hŒ``head``”h]”hŒhead”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj2 ubhŒ up to but excluding ”…”�”}”(hj2 h²hh³Nh´Nubj$)�”}”(hŒ ``entry``”h]”hŒentry”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj2 ubhŒ, placing them in ”…”�”}”(hj2 h²hh³Nh´Nubj$)�”}”(hŒ``list``”h]”hŒlist”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj2 ubhŒV instead. This example assumes the same initial starting list as the previous example:”…”�”}”(hj2 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MŸhjh²hubjy)�”}”(hXystatic void circus_retire_clowns(struct circus_priv *circus) { struct list_head retirement = LIST_HEAD_INIT(retirement); struct clown *grock, *dimitri, *pic, *alfredo; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ list_cut_before(&retirement, &car->clowns, &pic->node); /* State 1b */ }”h]”hXystatic void circus_retire_clowns(struct circus_priv *circus) { struct list_head retirement = LIST_HEAD_INIT(retirement); struct clown *grock, *dimitri, *pic, *alfredo; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ list_cut_before(&retirement, &car->clowns, &pic->node); /* State 1b */ }”…”�”}”hjˆ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´M¤hjh²hubj)�”}”(hŒ2The resulting ``car->clowns`` list would be this::”h]”(hŒThe resulting ”…”�”}”(hj— h²hh³Nh´Nubj$)�”}”(hŒ``car->clowns``”h]”hŒ car->clowns”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj— ubhŒ list would be this:”…”�”}”(hj— h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M³hjh²hubjy)�”}”(hŒÎ .----------------------------------. v | .--------. .-----. .---------. | | clowns |---->| Pic |---->| Alfredo |--' '--------' '-----' '---------'”h]”hŒÎ .----------------------------------. v | .--------. .-----. .---------. | | clowns |---->| Pic |---->| Alfredo |--' '--------' '-----' '---------'”…”�”}”hj· sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´Mµhjh²hubj)�”}”(hŒDMeanwhile, the ``retirement`` list is transformed to the following::”h]”(hŒMeanwhile, the ”…”�”}”(hjÅ h²hh³Nh´Nubj$)�”}”(hŒ``retirement``”h]”hŒ retirement”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÅ ubhŒ& list is transformed to the following:”…”�”}”(hjÅ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M»hjh²hubjy)�”}”(hŒì .--------------------------------------. v | .------------. .-------. .---------. | | retirement |---->| Grock |---->| Dimitri |--' '------------' '-------' '---------'”h]”hŒì .--------------------------------------. v | .------------. .-------. .---------. | | retirement |---->| Grock |---->| Dimitri |--' '------------' '-------' '---------'”…”�”}”hjå sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´M½hjh²hubj)�”}”(hŒ~It should be noted that both functions will destroy links to any existing nodes in the destination ``struct list_head *list``.”h]”(hŒcIt should be noted that both functions will destroy links to any existing nodes in the destination ”…”�”}”(hjó h²hh³Nh´Nubj$)�”}”(hŒ``struct list_head *list``”h]”hŒstruct list_head *list”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjó ubhŒ.”…”�”}”(hjó h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MÃhjh²hubeh}”(h]”j’ah ]”h"]”Œcutting a list”ah$]”h&]”uh1hÈhj h²hh³hÇh´MlubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Moving entries and partial lists”h]”hŒ Moving entries and partial lists”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝj®uh1hÍhj h²hh³hÇh´MÇubj)�”}”(hŒŽThe list_move() and list_move_tail() functions can be used to move an entry from one list to another, to either the start or end respectively.”h]”hŒŽThe list_move() and list_move_tail() functions can be used to move an entry from one list to another, to either the start or end respectively.”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MÉhj h²hubj)�”}”(hŒƒIn the following example, we'll assume we start with two lists ("clowns" and "sidewalk") in the following initial state "State 0"::”h]”hŒ�In the following example, we’ll assume we start with two lists (“clownsâ€� and “sidewalkâ€�) in the following initial state “State 0â€�:”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MÌhj h²hubjy)�”}”(hXî .----------------------------------------------------------------. v | .--------. .-------. .---------. .-----. .---------. | | clowns |---->| Grock |---->| Dimitri |---->| Pic |---->| Alfredo |--' '--------' '-------' '---------' '-----' '---------' .-------------------. v | .----------. .-----. | | sidewalk |---->| Pio |--' '----------' '-----'”h]”hXî .----------------------------------------------------------------. v | .--------. .-------. .---------. .-----. .---------. | | clowns |---->| Grock |---->| Dimitri |---->| Pic |---->| Alfredo |--' '--------' '-------' '---------' '-----' '---------' .-------------------. v | .----------. .-----. | | sidewalk |---->| Pio |--' '----------' '-----'”…”�”}”hjG sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´MÏhj h²hubj)�”}”(hŒ5We apply the following example code to the two lists:”h]”hŒ5We apply the following example code to the two lists:”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MÛhj h²hubjy)�”}”(hXÈstatic void circus_clowns_exit_car(struct circus_priv *circus) { struct list_head sidewalk = LIST_HEAD_INIT(sidewalk); struct clown *grock, *dimitri, *pic, *alfredo, *pio; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ /* State 0 */ list_move(&pic->node, &sidewalk); /* State 1 */ list_move_tail(&dimitri->node, &sidewalk); /* State 2 */ }”h]”hXÈstatic void circus_clowns_exit_car(struct circus_priv *circus) { struct list_head sidewalk = LIST_HEAD_INIT(sidewalk); struct clown *grock, *dimitri, *pic, *alfredo, *pio; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ /* State 0 */ list_move(&pic->node, &sidewalk); /* State 1 */ list_move_tail(&dimitri->node, &sidewalk); /* State 2 */ }”…”�”}”hjc sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´MÝhj h²hubj)�”}”(hŒ2In State 1, we arrive at the following situation::”h]”hŒ1In State 1, we arrive at the following situation:”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mòhj h²hubjy)�”}”(hX* .-----------------------------------------------------. | | v | .--------. .-------. .---------. .---------. | | clowns |---->| Grock |---->| Dimitri |---->| Alfredo |--' '--------' '-------' '---------' '---------' .-------------------------------. v | .----------. .-----. .-----. | | sidewalk |---->| Pic |---->| Pio |--' '----------' '-----' '-----'”h]”hX* .-----------------------------------------------------. | | v | .--------. .-------. .---------. .---------. | | clowns |---->| Grock |---->| Dimitri |---->| Alfredo |--' '--------' '-------' '---------' '---------' .-------------------------------. v | .----------. .-----. .-----. | | sidewalk |---->| Pic |---->| Pio |--' '----------' '-----' '-----'”…”�”}”hj€ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´Môhj h²hubj)�”}”(hŒaIn State 2, after we've moved Dimitri to the tail of sidewalk, the situation changes as follows::”h]”hŒbIn State 2, after we’ve moved Dimitri to the tail of sidewalk, the situation changes as follows:”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mhj h²hubjy)�”}”(hX .-------------------------------------. | | v | .--------. .-------. .---------. | | clowns |---->| Grock |---->| Alfredo |--' '--------' '-------' '---------' .-----------------------------------------------. v | .----------. .-----. .-----. .---------. | | sidewalk |---->| Pic |---->| Pio |---->| Dimitri |--' '----------' '-----' '-----' '---------'”h]”hX .-------------------------------------. | | v | .--------. .-------. .---------. | | clowns |---->| Grock |---->| Alfredo |--' '--------' '-------' '---------' .-----------------------------------------------. v | .----------. .-----. .-----. .---------. | | sidewalk |---->| Pic |---->| Pio |---->| Dimitri |--' '----------' '-----' '-----' '---------'”…”�”}”hjœ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´Mhj h²hubj)�”}”(hX*As long as the source and destination list head are part of the same list, we can also efficiently bulk move a segment of the list to the tail end of the list. We continue the previous example by adding a list_bulk_move_tail() after State 2, moving Pic and Pio to the tail end of the sidewalk list.”h]”hX*As long as the source and destination list head are part of the same list, we can also efficiently bulk move a segment of the list to the tail end of the list. We continue the previous example by adding a list_bulk_move_tail() after State 2, moving Pic and Pio to the tail end of the sidewalk list.”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mhj h²hubjy)�”}”(hX static void circus_clowns_exit_car(struct circus_priv *circus) { struct list_head sidewalk = LIST_HEAD_INIT(sidewalk); struct clown *grock, *dimitri, *pic, *alfredo, *pio; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ /* State 0 */ list_move(&pic->node, &sidewalk); /* State 1 */ list_move_tail(&dimitri->node, &sidewalk); /* State 2 */ list_bulk_move_tail(&sidewalk, &pic->node, &pio->node); /* State 3 */ }”h]”hX static void circus_clowns_exit_car(struct circus_priv *circus) { struct list_head sidewalk = LIST_HEAD_INIT(sidewalk); struct clown *grock, *dimitri, *pic, *alfredo, *pio; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ /* State 0 */ list_move(&pic->node, &sidewalk); /* State 1 */ list_move_tail(&dimitri->node, &sidewalk); /* State 2 */ list_bulk_move_tail(&sidewalk, &pic->node, &pio->node); /* State 3 */ }”…”�”}”hj¸ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´Mhj h²hubj)�”}”(hŒkFor the sake of brevity, only the altered "sidewalk" list at State 3 is depicted in the following diagram::”h]”hŒnFor the sake of brevity, only the altered “sidewalkâ€� list at State 3 is depicted in the following diagram:”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M/hj h²hubjy)�”}”(hX .-----------------------------------------------. v | .----------. .---------. .-----. .-----. | | sidewalk |---->| Dimitri |---->| Pic |---->| Pio |--' '----------' '---------' '-----' '-----'”h]”hX .-----------------------------------------------. v | .----------. .---------. .-----. .-----. | | sidewalk |---->| Dimitri |---->| Pic |---->| Pio |--' '----------' '---------' '-----' '-----'”…”�”}”hjÕ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´M2hj h²hubj)�”}”(hX Do note that list_bulk_move_tail() does not do any checking as to whether all three supplied ``struct list_head *`` parameters really do belong to the same list. If you use it outside the constraints the documentation gives, then the result is a matter between you and the implementation.”h]”(hŒ]Do note that list_bulk_move_tail() does not do any checking as to whether all three supplied ”…”�”}”(hjã h²hh³Nh´Nubj$)�”}”(hŒ``struct list_head *``”h]”hŒstruct list_head *”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjã ubhŒ­ parameters really do belong to the same list. If you use it outside the constraints the documentation gives, then the result is a matter between you and the implementation.”…”�”}”(hjã h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M8hj h²hubeh}”(h]”j´ah ]”h"]”Œ moving entries and partial lists”ah$]”h&]”uh1hÈhj h²hh³hÇh´MÇubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒRotating entries”h]”hŒRotating entries”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjÐuh1hÍhj h²hh³hÇh´M>ubj)�”}”(hŒšA common write operation on lists, especially when using them as queues, is to rotate it. A list rotation means entries at the front are sent to the back.”h]”hŒšA common write operation on lists, especially when using them as queues, is to rotate it. A list rotation means entries at the front are sent to the back.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M@hj h²hubj)�”}”(hXFFor rotation, Linux provides us with two functions: list_rotate_left() and list_rotate_to_front(). The former can be pictured like a bicycle chain, taking the entry after the supplied ``struct list_head *`` and moving it to the tail, which in essence means the entire list, due to its circular nature, rotates by one position.”h]”(hŒ¸For rotation, Linux provides us with two functions: list_rotate_left() and list_rotate_to_front(). The former can be pictured like a bicycle chain, taking the entry after the supplied ”…”�”}”(hj) h²hh³Nh´Nubj$)�”}”(hŒ``struct list_head *``”h]”hŒstruct list_head *”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj) ubhŒx and moving it to the tail, which in essence means the entire list, due to its circular nature, rotates by one position.”…”�”}”(hj) h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MChj h²hubj)�”}”(hŒµThe latter, list_rotate_to_front(), takes the same concept one step further: instead of advancing the list by one entry, it advances it *until* the specified entry is the new front.”h]”(hŒˆThe latter, list_rotate_to_front(), takes the same concept one step further: instead of advancing the list by one entry, it advances it ”…”�”}”(hjI h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*until*”h]”hŒuntil”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQ hjI ubhŒ& the specified entry is the new front.”…”�”}”(hjI h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MIhj h²hubj)�”}”(hŒIIn the following example, our starting state, State 0, is the following::”h]”hŒHIn the following example, our starting state, State 0, is the following:”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MMhj h²hubjy)�”}”(hXj .-----------------------------------------------------------------. v | .--------. .-------. .---------. .-----. .---------. .-----. | | clowns |-->| Grock |-->| Dimitri |-->| Pic |-->| Alfredo |-->| Pio |-' '--------' '-------' '---------' '-----' '---------' '-----'”h]”hXj .-----------------------------------------------------------------. v | .--------. .-------. .---------. .-----. .---------. .-----. | | clowns |-->| Grock |-->| Dimitri |-->| Pic |-->| Alfredo |-->| Pio |-' '--------' '-------' '---------' '-----' '---------' '-----'”…”�”}”hjy sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´MOhj h²hubj)�”}”(hŒKThe example code being used to demonstrate list rotations is the following:”h]”hŒKThe example code being used to demonstrate list rotations is the following:”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MUhj h²hubjy)�”}”(hX�static void circus_clowns_rotate(struct circus_priv *circus) { struct clown *grock, *dimitri, *pic, *alfredo, *pio; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ /* State 0 */ list_rotate_left(&car->clowns); /* State 1 */ list_rotate_to_front(&alfredo->node, &car->clowns); /* State 2 */ }”h]”hX�static void circus_clowns_rotate(struct circus_priv *circus) { struct clown *grock, *dimitri, *pic, *alfredo, *pio; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ /* State 0 */ list_rotate_left(&car->clowns); /* State 1 */ list_rotate_to_front(&alfredo->node, &car->clowns); /* State 2 */ }”…”�”}”hj• sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´MWhj h²hubj)�”}”(hŒ2In State 1, we arrive at the following situation::”h]”hŒ1In State 1, we arrive at the following situation:”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mlhj h²hubjy)�”}”(hXj .-----------------------------------------------------------------. v | .--------. .---------. .-----. .---------. .-----. .-------. | | clowns |-->| Dimitri |-->| Pic |-->| Alfredo |-->| Pio |-->| Grock |-' '--------' '---------' '-----' '---------' '-----' '-------'”h]”hXj .-----------------------------------------------------------------. v | .--------. .---------. .-----. .---------. .-----. .-------. | | clowns |-->| Dimitri |-->| Pic |-->| Alfredo |-->| Pio |-->| Grock |-' '--------' '---------' '-----' '---------' '-----' '-------'”…”�”}”hj² sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´Mnhj h²hubj)�”}”(hŒQNext, after the list_rotate_to_front() call, we arrive in the following State 2::”h]”hŒPNext, after the list_rotate_to_front() call, we arrive in the following State 2:”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mthj h²hubjy)�”}”(hXj .-----------------------------------------------------------------. v | .--------. .---------. .-----. .-------. .---------. .-----. | | clowns |-->| Alfredo |-->| Pio |-->| Grock |-->| Dimitri |-->| Pic |-' '--------' '---------' '-----' '-------' '---------' '-----'”h]”hXj .-----------------------------------------------------------------. v | .--------. .---------. .-----. .-------. .---------. .-----. | | clowns |-->| Alfredo |-->| Pio |-->| Grock |-->| Dimitri |-->| Pic |-' '--------' '---------' '-----' '-------' '---------' '-----'”…”�”}”hjÎ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´Mwhj h²hubj)�”}”(hŒuAs is hopefully evident from the diagrams, the entries in front of "Alfredo" were cycled to the tail end of the list.”h]”hŒyAs is hopefully evident from the diagrams, the entries in front of “Alfredoâ€� were cycled to the tail end of the list.”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M}hj h²hubeh}”(h]”jÖah ]”h"]”Œrotating entries”ah$]”h&]”uh1hÈhj h²hh³hÇh´M>ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSwapping entries”h]”hŒSwapping entries”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjòuh1hÍhjñ h²hh³hÇh´M�ubj)�”}”(hŒPAnother common operation is that two entries need to be swapped with each other.”h]”hŒPAnother common operation is that two entries need to be swapped with each other.”…”�”•}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mƒhjñ h²hubj)�”}”(hŒ-For this, Linux provides us with list_swap().”h]”hŒ-For this, Linux provides us with list_swap().”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M…hjñ h²hubj)�”}”(hŒ|In the following example, we have a list with three entries, and swap two of them. This is our starting state in "State 0"::”h]”hŒIn the following example, we have a list with three entries, and swap two of them. This is our starting state in “State 0â€�:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M‡hjñ h²hubjy)�”}”(hŒò .-----------------------------------------. v | .--------. .-------. .---------. .-----. | | clowns |-->| Grock |-->| Dimitri |-->| Pic |-' '--------' '-------' '---------' '-----'”h]”hŒò .-----------------------------------------. v | .--------. .-------. .---------. .-----. | | clowns |-->| Grock |-->| Dimitri |-->| Pic |-' '--------' '-------' '---------' '-----'”…”�”}”hj, sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´MŠhjñ h²hubjy)�”}”(hX0static void circus_clowns_swap(struct circus_priv *circus) { struct clown *grock, *dimitri, *pic; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ /* State 0 */ list_swap(&dimitri->node, &pic->node); /* State 1 */ }”h]”hX0static void circus_clowns_swap(struct circus_priv *circus) { struct clown *grock, *dimitri, *pic; struct clown_car *car = &circus->car; /* ... clown initialization, list adding ... */ /* State 0 */ list_swap(&dimitri->node, &pic->node); /* State 1 */ }”…”�”}”hj: sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´M�hjñ h²hubj)�”}”(hŒ0The resulting list at State 1 is the following::”h]”hŒ/The resulting list at State 1 is the following:”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M hjñ h²hubjy)�”}”(hŒò .-----------------------------------------. v | .--------. .-------. .-----. .---------. | | clowns |-->| Grock |-->| Pic |-->| Dimitri |-' '--------' '-------' '-----' '---------'”h]”hŒò .-----------------------------------------. v | .--------. .-------. .-----. .---------. | | clowns |-->| Grock |-->| Pic |-->| Dimitri |-' '--------' '-------' '-----' '---------'”…”�”}”hjW sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´M¢hjñ h²hubj)�”}”(hŒZAs is evident by comparing the diagrams, the "Pic" and "Dimitri" nodes have traded places.”h]”hŒbAs is evident by comparing the diagrams, the “Picâ€� and “Dimitriâ€� nodes have traded places.”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M¨hjñ h²hubeh}”(h]”jøah ]”h"]”Œswapping entries”ah$]”h&]”uh1hÈhj h²hh³hÇh´M�ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSplicing two lists together”h]”hŒSplicing two lists together”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjuh1hÍhjz h²hh³hÇh´M¬ubj)�”}”(hŒüSay we have two lists, in the following example one represented by a list head we call "knie" and one we call "stey". In a hypothetical circus acquisition, the two list of clowns should be spliced together. The following is our situation in "State 0"::”h]”hXSay we have two lists, in the following example one represented by a list head we call “knieâ€� and one we call “steyâ€�. In a hypothetical circus acquisition, the two list of clowns should be spliced together. The following is our situation in “State 0â€�:”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´M®hjz h²hubjy)�”}”(hXÎ .-----------------------------------------. | | v | .------. .-------. .---------. .-----. | | knie |-->| Grock |-->| Dimitri |-->| Pic |--' '------' '-------' '---------' '-----' .-----------------------------. v | .------. .---------. .-----. | | stey |-->| Alfredo |-->| Pio |--' '------' '---------' '-----'”h]”hXÎ .-----------------------------------------. | | v | .------. .-------. .---------. .-----. | | knie |-->| Grock |-->| Dimitri |-->| Pic |--' '------' '-------' '---------' '-----' .-----------------------------. v | .------. .---------. .-----. | | stey |-->| Alfredo |-->| Pio |--' '------' '---------' '-----'”…”�”}”hj™ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´M³hjz h²hubj)�”}”(hŒaThe function to splice these two lists together is list_splice(). Our example code is as follows:”h]”hŒaThe function to splice these two lists together is list_splice(). Our example code is as follows:”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MÀhjz h²hubjy)�”}”(hXKstatic void circus_clowns_splice(void) { struct clown *grock, *dimitri, *pic, *alfredo, *pio; struct list_head knie = LIST_HEAD_INIT(knie); struct list_head stey = LIST_HEAD_INIT(stey); /* ... Clown allocation and initialization here ... */ list_add_tail(&grock->node, &knie); list_add_tail(&dimitri->node, &knie); list_add_tail(&pic->node, &knie); list_add_tail(&alfredo->node, &stey); list_add_tail(&pio->node, &stey); /* State 0 */ list_splice(&stey, &dimitri->node); /* State 1 */ }”h]”hXKstatic void circus_clowns_splice(void) { struct clown *grock, *dimitri, *pic, *alfredo, *pio; struct list_head knie = LIST_HEAD_INIT(knie); struct list_head stey = LIST_HEAD_INIT(stey); /* ... Clown allocation and initialization here ... */ list_add_tail(&grock->node, &knie); list_add_tail(&dimitri->node, &knie); list_add_tail(&pic->node, &knie); list_add_tail(&alfredo->node, &stey); list_add_tail(&pio->node, &stey); /* State 0 */ list_splice(&stey, &dimitri->node); /* State 1 */ }”…”�”}”hjµ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjˆ‰j‰jŠj‹}”uh1jxh³hÇh´MÃhjz h²hubj)�”}”(hŒÖThe list_splice() call here adds all the entries in ``stey`` to the list ``dimitri``'s ``node`` list_head is in, after the ``node`` of ``dimitri``. A somewhat surprising diagram of the resulting "State 1" follows::”h]”(hŒ4The list_splice() call here adds all the entries in ”…”�”}”(hjÄ h²hh³Nh´Nubj$)�”}”(hŒ``stey``”h]”hŒstey”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÄ ubhŒ to the list ”…”�”}”(hjÄ h²hh³Nh´Nubj$)�”}”(hŒ ``dimitri``”h]”hŒdimitri”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÄ ubhŒ’s ”…”�”}”(hjÄ h²hh³Nh´Nubj$)�”}”(hŒ``node``”h]”hŒnode”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÄ ubhŒ list_head is in, after the ”…”�”}”(hjÄ h²hh³Nh´Nubj$)�”}”(hŒ``node``”h]”hŒnode”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÄ ubhŒ of ”…”�”}”(hjÄ h²hh³Nh´Nubj$)�”}”(hŒ ``dimitri``”h]”hŒdimitri”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÄ ubhŒG. A somewhat surprising diagram of the resulting “State 1â€� follows:”…”�”}”(hjÄ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´MÚhjz h²hubjy)�”}”(hX1 .-----------------------------------------------------------------. | | v | .------. .-------. .---------. .---------. .-----. .-----. | | knie |-->| Grock |-->| Dimitri |-->| Alfredo |-->| Pio |-->| Pic |--' '------' '-------' '---------' '---------' '-----' '-----' ^ .-------------------------------' | .------. | | stey |--' '------'”h]”hX1 .-----------------------------------------------------------------. | | v | .------. .-------. .---------. .---------. .-----. .-----. | | knie |-->| Grock |-->| Dimitri |-->| Alfredo |-->| Pio |-->| Pic |--' '------' '-------' '---------' '---------' '-----' '-----' ^ .-------------------------------' | .------. | | stey |--' '------'”…”�”}”hj, sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jxh³hÇh´MÞhjz h²hubj)�”}”(hŒºTraversing the ``stey`` list no longer results in correct behavior. A call of list_for_each() on ``stey`` results in an infinite loop, as it never returns back to the ``stey`` list head.”h]”(hŒTraversing the ”…”�”}”(hj: h²hh³Nh´Nubj$)�”}”(hŒ``stey``”h]”hŒstey”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj: ubhŒJ list no longer results in correct behavior. A call of list_for_each() on ”…”�”}”(hj: h²hh³Nh´Nubj$)�”}”(hŒ``stey``”h]”hŒstey”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj: ubhŒ> results in an infinite loop, as it never returns back to the ”…”�”}”(hj: h²hh³Nh´Nubj$)�”}”(hŒ``stey``”h]”hŒstey”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj: ubhŒ list head.”…”�”}”(hj: h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mëhjz h²hubj)�”}”(hŒ–This is because list_splice() did not reinitialize the list_head it took entries from, leaving its pointer pointing into what is now a different list.”h]”hŒ–This is because list_splice() did not reinitialize the list_head it took entries from, leaving its pointer pointing into what is now a different list.”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mïhjz h²hubj)�”}”(hŒ«If we want to avoid this situation, list_splice_init() can be used. It does the same thing as list_splice(), except reinitializes the donor list_head after the transplant.”h]”hŒ«If we want to avoid this situation, list_splice_init() can be used. It does the same thing as list_splice(), except reinitializes the donor list_head after the transplant.”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mòhjz h²hubeh}”(h]”jah ]”h"]”Œsplicing two lists together”ah$]”h&]”uh1hÈhj h²hh³hÇh´M¬ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒConcurrency considerations”h]”hŒConcurrency considerations”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝj6uh1hÍhj¡ h²hh³hÇh´M÷ubj)�”}”(hXDConcurrent access and modification of a list needs to be protected with a lock in most cases. Alternatively and preferably, one may use the RCU primitives for lists in read-mostly use-cases, where read accesses to the list are common but modifications to the list less so. See Documentation/RCU/listRCU.rst for more details.”h]”hXDConcurrent access and modification of a list needs to be protected with a lock in most cases. Alternatively and preferably, one may use the RCU primitives for lists in read-mostly use-cases, where read accesses to the list are common but modifications to the list less so. See Documentation/RCU/listRCU.rst for more details.”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³hÇh´Mùhj¡ h²hubeh}”(h]”j<ah ]”h"]”Œconcurrency considerations”ah$]”h&]”uh1hÈhj h²hh³hÇh´M÷ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFurther reading”h]”hŒFurther reading”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝjXuh1hÍhjÇ h²hh³hÇh´MubjL)�”}”(hhh]”jQ)�”}”(hŒl`How does the kernel implements Linked Lists? - KernelNewbies `_ ”h]”j)�”}”(hŒk`How does the kernel implements Linked Lists? - KernelNewbies `_”h]”(j )�”}”(hjá h]”hŒ”h]”h}”(h]”Œ9how-does-the-kernel-implements-linked-lists-kernelnewbies”ah ]”h"]”Œ`'s links to point to itself ”h]”j)�”}”(hŒNinitialize a :c:type:`struct list_head `'s links to point to itself”h]”(hŒ initialize a ”…”�”}”(hjÂh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hjÌh]”hŒstruct list_head”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”(Œxref”jŠŒc-type”eh"]”h$]”h&]”uh1j#hjÊubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ core-api/list”Œ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”sbŒ reftarget”Œ list_head”uh1hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´KhjÂubhŒ’s links to point to itself”…”�”}”(hjÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jôh´Khj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jôh´Khj&h²hubhŒ container”“”)�”}”(hŒ0**Parameters** ``name`` name of the list_head”h]”(j)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hj h]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´KhjubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ``name`` name of the list_head”h]”(hŒterm”“”)�”}”(hŒ``name``”h]”j$)�”}”(hj4h]”hŒname”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Khj,ubhŒ definition”“”)�”}”(hhh]”j)�”}”(hŒname of the list_head”h]”hŒname of the list_head”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´KhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jIh´Khj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒLIST_HEAD (C macro)”Œ c.LIST_HEAD”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ LIST_HEAD”h]”jT)�”}”(hŒ LIST_HEAD”h]”jZ)�”}”(hŒ LIST_HEAD”h]”j`)�”}”(hjŠh]”hŒ LIST_HEAD”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjŒh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjˆh²hh³j§h´Kubah}”(h]”jƒah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j§h´Khj…h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj…h²hh³j§h´Kubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjÀj jÀj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ``LIST_HEAD (name)``”h]”j$)�”}”(hjÆh]”hŒLIST_HEAD (name)”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K hj&h²hubj½)�”}”(hŒRdefinition of a :c:type:`struct list_head ` with initialization values ”h]”j)�”}”(hŒQdefinition of a :c:type:`struct list_head ` with initialization values”h]”(hŒdefinition of a ”…”�”}”(hjàh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hjêh]”hŒstruct list_head”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hjèubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´KhjàubhŒ with initialization values”…”�”}”(hjàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jh´KhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jh´Khj&h²hubj)�”}”(hŒ0**Parameters** ``name`` name of the list_head”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjh]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K"hjubj&)�”}”(hhh]”j+)�”}”(hŒ``name`` name of the list_head”h]”(j1)�”}”(hŒ``name``”h]”j$)�”}”(hj=h]”hŒname”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K$hj7ubjK)�”}”(hhh]”j)�”}”(hŒname of the list_head”h]”hŒname of the list_head”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´KhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jRh´K$hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒLIST_HEAD_GUARDED (C macro)”Œc.LIST_HEAD_GUARDED”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒLIST_HEAD_GUARDED”h]”jT)�”}”(hŒLIST_HEAD_GUARDED”h]”jZ)�”}”(hŒLIST_HEAD_GUARDED”h]”j`)�”}”(hj‘h]”hŒLIST_HEAD_GUARDED”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj—ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj“h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K%ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj�h²hh³j®h´K%ubah}”(h]”jŠah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j®h´K%hjŒh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjŒh²hh³j®h´K%ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjÇj jÇj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ"``LIST_HEAD_GUARDED (name, lock)``”h]”j$)�”}”(hjÍh]”hŒLIST_HEAD_GUARDED (name, lock)”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K'hj&h²hubj½)�”}”(hŒNdefine a :c:type:`struct list_head ` annotated with __guarded_by() ”h]”j)�”}”(hŒMdefine a :c:type:`struct list_head ` annotated with __guarded_by()”h]”(hŒ define a ”…”�”}”(hjçh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hjñh]”hŒstruct list_head”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hjïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K%hjçubhŒ annotated with __guarded_by()”…”�”}”(hjçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jh´K%hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jh´K%hj&h²hubj)�”}”(hŒU**Parameters** ``name`` name of the list_head ``lock`` lock protecting the list”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj%h]”hŒ Parameters”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K)hjubj&)�”}”(hhh]”(j+)�”}”(hŒ``name`` name of the list_head ”h]”(j1)�”}”(hŒ``name``”h]”j$)�”}”(hjDh]”hŒname”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K&hj>ubjK)�”}”(hhh]”j)�”}”(hŒname of the list_head”h]”hŒname of the list_head”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jYh´K&hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jYh´K&hj;ubj+)�”}”(hŒ!``lock`` lock protecting the list”h]”(j1)�”}”(hŒ``lock``”h]”j$)�”}”(hj}h]”hŒlock”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K(hjwubjK)�”}”(hhh]”j)�”}”(hŒlock protecting the list”h]”hŒlock protecting the list”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K'hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j’h´K(hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒINIT_LIST_HEAD (C function)”Œc.INIT_LIST_HEAD”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ,void INIT_LIST_HEAD (struct list_head *list)”h]”jT)�”}”(hŒ+void INIT_LIST_HEAD(struct list_head *list)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j×hjÓh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K-ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jéhjÓh²hh³jèh´K-ubjZ)�”}”(hŒINIT_LIST_HEAD”h]”j`)�”}”(hŒINIT_LIST_HEAD”h]”hŒINIT_LIST_HEAD”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjúubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÓh²hh³jèh´K-ubhŒdesc_parameterlist”“”)�”}”(hŒ(struct list_head *list)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct list_head *list”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jhjubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”Œ identifier”Œ reftarget”jBŒmodname”NŒ classname”Njêjí)�”}”jð]”jëŒ ASTIdentifier”“”)�”}”jVjsbŒc.INIT_LIST_HEAD”†”asbuh1hhjubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjubhŒdesc_sig_punctuation”“”)�”}”(hjh]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jqhjubj`)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÓh²hh³jèh´K-ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÏh²hh³jèh´K-ubah}”(h]”jÊah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jèh´K-hjÌh²hubj�)�”}”(hhh]”j)�”}”(hŒ Initialize a list_head structure”h]”hŒ Initialize a list_head structure”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K-hj¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjÌh²hh³jèh´K-ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjÃj jÃj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒÉ**Parameters** ``struct list_head *list`` list_head structure to be initialized. **Description** Initializes the list_head to point to itself. If it is a list header, the result is an empty list.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÍh]”hŒ Parameters”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K1hjÇubj&)�”}”(hhh]”j+)�”}”(hŒB``struct list_head *list`` list_head structure to be initialized. ”h]”(j1)�”}”(hŒ``struct list_head *list``”h]”j$)�”}”(hjìh]”hŒstruct list_head *list”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K.hjæubjK)�”}”(hhh]”j)�”}”(hŒ&list_head structure to be initialized.”h]”hŒ&list_head structure to be initialized.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jh´K.hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jh´K.hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÇubj)�”}”(hŒ**Description**”h]”j)�”}”(hj'h]”hŒ Description”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K0hjÇubj)�”}”(hŒcInitializes the list_head to point to itself. If it is a list header, the result is an empty list.”h]”hŒcInitializes the list_head to point to itself. If it is a list header, the result is an empty list.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´K/hjÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_add (C function)”Œ c.list_add”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ=void list_add (struct list_head *new, struct list_head *head)”h]”jT)�”}”(hŒnext pointer that points to it. This is useful for implementing queues, in particular one that the elements will be walked through forwards locklessly.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj!h]”hŒ Parameters”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´KÖhjubj&)�”}”(hhh]”(j+)�”}”(hŒ0``struct list_head *new`` new entry to be added ”h]”(j1)�”}”(hŒ``struct list_head *new``”h]”j$)�”}”(hj@h]”hŒstruct list_head *new”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´KÓhj:ubjK)�”}”(hhh]”j)�”}”(hŒnew entry to be added”h]”hŒnew entry to be added”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jUh´KÓhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jUh´KÓhj7ubj+)�”}”(hŒ6``struct list_head *head`` list head to add it before ”h]”(j1)�”}”(hŒ``struct list_head *head``”h]”j$)�”}”(hjyh]”hŒstruct list_head *head”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´KÔhjsubjK)�”}”(hhh]”j)�”}”(hŒlist head to add it before”h]”hŒlist head to add it before”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jŽh´KÔhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jŽh´KÔhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubj)�”}”(hŒ**Description**”h]”j)�”}”(hj´h]”hŒ Description”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´KÖhjubj)�”}”(hŒëInsert a new entry before the specified head, using a release barrier to set the ->next pointer that points to it. This is useful for implementing queues, in particular one that the elements will be walked through forwards locklessly.”h]”hŒëInsert a new entry before the specified head, using a release barrier to set the ->next pointer that points to it. This is useful for implementing queues, in particular one that the elements will be walked through forwards locklessly.”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´KÕhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_del (C function)”Œ c.list_del”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ'void list_del (struct list_head *entry)”h]”jT)�”}”(hŒ&void list_del(struct list_head *entry)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjõh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjõh²hh³jh´M ubjZ)�”}”(hŒlist_del”h]”j`)�”}”(hŒlist_del”h]”hŒlist_del”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjõh²hh³jh´M ubj)�”}”(hŒ(struct list_head *entry)”h]”j)�”}”(hŒstruct list_head *entry”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj2ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj2ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jVŒmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjsbŒ c.list_del”†”asbuh1hhj2ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj2ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj2ubj`)�”}”(hŒentry”h]”hŒentry”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj.ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjõh²hh³jh´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjñh²hh³jh´M ubah}”(h]”jìah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jh´M hjîh²hubj�)�”}”(hhh]”j)�”}”(hŒdeletes entry from list.”h]”hŒdeletes entry from list.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hj¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjîh²hh³jh´M ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjÑj jÑj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ¸**Parameters** ``struct list_head *entry`` the element to delete from the list. **Note** list_empty() on entry does not return true after this, the entry is in an undefined state.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÛh]”hŒ Parameters”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÕubj&)�”}”(hhh]”j+)�”}”(hŒA``struct list_head *entry`` the element to delete from the list. ”h]”(j1)�”}”(hŒ``struct list_head *entry``”h]”j$)�”}”(hjúh]”hŒstruct list_head *entry”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hjôubjK)�”}”(hhh]”j)�”}”(hŒ$the element to delete from the list.”h]”hŒ$the element to delete from the list.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jh´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jh´M hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÕubj)�”}”(hŒ**Note**”h]”j)�”}”(hj5h]”hŒNote”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÕubj)�”}”(hŒZlist_empty() on entry does not return true after this, the entry is in an undefined state.”h]”hŒZlist_empty() on entry does not return true after this, the entry is in an undefined state.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_replace (C function)”Œc.list_replace”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ@void list_replace (struct list_head *old, struct list_head *new)”h]”jT)�”}”(hŒ?void list_replace(struct list_head *old, struct list_head *new)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjvh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjvh²hh³jˆh´MubjZ)�”}”(hŒ list_replace”h]”j`)�”}”(hŒ list_replace”h]”hŒ list_replace”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj—ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjvh²hh³jˆh´Mubj)�”}”(hŒ.(struct list_head *old, struct list_head *new)”h]”(j)�”}”(hŒstruct list_head *old”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj³ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj³ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j׌modname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj�sbŒc.list_replace”†”asbuh1hhj³ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj³ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj³ubj`)�”}”(hŒold”h]”hŒold”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¯ubj)�”}”(hŒstruct list_head *new”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj%ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj%ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jIŒmodname”NŒ classname”Njêjí)�”}”jð]”jñŒc.list_replace”†”asbuh1hhj%ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj%ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj%ubj`)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjvh²hh³jˆh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjrh²hh³jˆh´Mubah}”(h]”jmah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jˆh´Mhjoh²hubj�)�”}”(hhh]”j)�”}”(hŒreplace old entry by new one”h]”hŒreplace old entry by new one”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjoh²hh³jˆh´Mubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjÂj jÂj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ½**Parameters** ``struct list_head *old`` the element to be replaced ``struct list_head *new`` the new element to insert **Description** If **old** was empty, it will be overwritten.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÌh]”hŒ Parameters”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÆubj&)�”}”(hhh]”(j+)�”}”(hŒ5``struct list_head *old`` the element to be replaced ”h]”(j1)�”}”(hŒ``struct list_head *old``”h]”j$)�”}”(hjëh]”hŒstruct list_head *old”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjåubjK)�”}”(hhh]”j)�”}”(hŒthe element to be replaced”h]”hŒthe element to be replaced”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jh´Mhjâubj+)�”}”(hŒ4``struct list_head *new`` the new element to insert ”h]”(j1)�”}”(hŒ``struct list_head *new``”h]”j$)�”}”(hj$h]”hŒstruct list_head *new”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjubjK)�”}”(hhh]”j)�”}”(hŒthe new element to insert”h]”hŒthe new element to insert”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j9h´Mhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j9h´Mhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÆubj)�”}”(hŒ**Description**”h]”j)�”}”(hj_h]”hŒ Description”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÆubj)�”}”(hŒ-If **old** was empty, it will be overwritten.”h]”(hŒIf ”…”�”}”(hjuh²hh³Nh´Nubj)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuubhŒ# was empty, it will be overwritten.”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_replace_init (C function)”Œc.list_replace_init”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒEvoid list_replace_init (struct list_head *old, struct list_head *new)”h]”jT)�”}”(hŒDvoid list_replace_init(struct list_head *old, struct list_head *new)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj²h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M)ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj²h²hh³jÄh´M)ubjZ)�”}”(hŒlist_replace_init”h]”j`)�”}”(hŒlist_replace_init”h]”hŒlist_replace_init”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÓubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj²h²hh³jÄh´M)ubj)�”}”(hŒ.(struct list_head *old, struct list_head *new)”h]”(j)�”}”(hŒstruct list_head *old”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjïubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjïubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jŒmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjÙsbŒc.list_replace_init”†”asbuh1hhjïubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjïubjr)�”}”(hjh]”hŒ*”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjïubj`)�”}”(hŒold”h]”hŒold”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjëubj)�”}”(hŒstruct list_head *new”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjaubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjaubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j…Œmodname”NŒ classname”Njêjí)�”}”jð]”j-Œc.list_replace_init”†”asbuh1hhjaubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjaubjr)�”}”(hjh]”hŒ*”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjaubj`)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjëubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj²h²hh³jÄh´M)ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj®h²hh³jÄh´M)ubah}”(h]”j©ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jÄh´M)hj«h²hubj�)�”}”(hhh]”j)�”}”(hŒ7replace old entry by new one and initialize the old one”h]”hŒ7replace old entry by new one and initialize the old one”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M)hjãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj«h²hh³jÄh´M)ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjþj jþj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ½**Parameters** ``struct list_head *old`` the element to be replaced ``struct list_head *new`` the new element to insert **Description** If **old** was empty, it will be overwritten.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjh]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M-hjubj&)�”}”(hhh]”(j+)�”}”(hŒ5``struct list_head *old`` the element to be replaced ”h]”(j1)�”}”(hŒ``struct list_head *old``”h]”j$)�”}”(hj'h]”hŒstruct list_head *old”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M*hj!ubjK)�”}”(hhh]”j)�”}”(hŒthe element to be replaced”h]”hŒthe element to be replaced”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j<h´M*hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j<h´M*hjubj+)�”}”(hŒ4``struct list_head *new`` the new element to insert ”h]”(j1)�”}”(hŒ``struct list_head *new``”h]”j$)�”}”(hj`h]”hŒstruct list_head *new”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M+hjZubjK)�”}”(hhh]”j)�”}”(hŒthe new element to insert”h]”hŒthe new element to insert”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³juh´M+hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³juh´M+hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubj)�”}”(hŒ**Description**”h]”j)�”}”(hj›h]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M-hjubj)�”}”(hŒ-If **old** was empty, it will be overwritten.”h]”(hŒIf ”…”�”}”(hj±h²hh³Nh´Nubj)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±ubhŒ# was empty, it will be overwritten.”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M,hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_swap (C function)”Œ c.list_swap”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒCvoid list_swap (struct list_head *entry1, struct list_head *entry2)”h]”jT)�”}”(hŒBvoid list_swap(struct list_head *entry1, struct list_head *entry2)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjîh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M7ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjîh²hh³j h´M7ubjZ)�”}”(hŒ list_swap”h]”j`)�”}”(hŒ list_swap”h]”hŒ list_swap”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjîh²hh³j h´M7ubj)�”}”(hŒ4(struct list_head *entry1, struct list_head *entry2)”h]”(j)�”}”(hŒstruct list_head *entry1”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj+ ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj+ ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjJ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jO Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj sbŒ c.list_swap”†”asbuh1hhj+ ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj+ ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”•h ]”j}ah"]”h$]”h&]”uh1jqhj+ ubj`)�”}”(hŒentry1”h]”hŒentry1”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj+ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj' ubj)�”}”(hŒstruct list_head *entry2”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj� ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj� ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¼ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jÁ Œmodname”NŒ classname”Njêjí)�”}”jð]”ji Œ c.list_swap”†”asbuh1hhj� ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj� ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj� ubj`)�”}”(hŒentry2”h]”hŒentry2”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj� ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj' ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjîh²hh³j h´M7ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjêh²hh³j h´M7ubah}”(h]”jåah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j h´M7hjçh²hubj�)�”}”(hhh]”j)�”}”(hŒAreplace entry1 with entry2 and re-add entry1 at entry2's position”h]”hŒCreplace entry1 with entry2 and re-add entry1 at entry2’s position”…”�”}”(hj"!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M7hj!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjçh²hh³j h´M7ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj:!j j:!j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒˆ**Parameters** ``struct list_head *entry1`` the location to place entry2 ``struct list_head *entry2`` the location to place entry1”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjD!h]”hŒ Parameters”…”�”}”(hjF!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjB!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M;hj>!ubj&)�”}”(hhh]”(j+)�”}”(hŒ:``struct list_head *entry1`` the location to place entry2 ”h]”(j1)�”}”(hŒ``struct list_head *entry1``”h]”j$)�”}”(hjc!h]”hŒstruct list_head *entry1”…”�”}”(hje!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hja!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M8hj]!ubjK)�”}”(hhh]”j)�”}”(hŒthe location to place entry2”h]”hŒthe location to place entry2”…”�”}”(hj|!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jx!h´M8hjy!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj]!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jx!h´M8hjZ!ubj+)�”}”(hŒ9``struct list_head *entry2`` the location to place entry1”h]”(j1)�”}”(hŒ``struct list_head *entry2``”h]”j$)�”}”(hjœ!h]”hŒstruct list_head *entry2”…”�”}”(hjž!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjš!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M:hj–!ubjK)�”}”(hhh]”j)�”}”(hŒthe location to place entry1”h]”hŒthe location to place entry1”…”�”}”(hjµ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M9hj²!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj–!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j±!h´M:hjZ!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj>!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_del_init (C function)”Œc.list_del_init”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ,void list_del_init (struct list_head *entry)”h]”jT)�”}”(hŒ+void list_del_init(struct list_head *entry)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjö!h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjò!h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MHubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjò!h²hh³j"h´MHubjZ)�”}”(hŒ list_del_init”h]”j`)�”}”(hŒ list_del_init”h]”hŒ list_del_init”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj"ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjò!h²hh³j"h´MHubj)�”}”(hŒ(struct list_head *entry)”h]”j)�”}”(hŒstruct list_head *entry”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj3"h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj/"ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@"h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj/"ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjQ"h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjN"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jS"Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj"sbŒc.list_del_init”†”asbuh1hhj/"ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq"h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj/"ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj/"ubj`)�”}”(hŒentry”h]”hŒentry”…”�”}”(hjŒ"h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj/"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj+"ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjò!h²hh³j"h´MHubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjî!h²hh³j"h´MHubah}”(h]”jé!ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j"h´MHhjë!h²hubj�)�”}”(hhh]”j)�”}”(hŒ,deletes entry from list and reinitialize it.”h]”hŒ,deletes entry from list and reinitialize it.”…”�”}”(hj¶"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MHhj³"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjë!h²hh³j"h´MHubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjÎ"j jÎ"j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒR**Parameters** ``struct list_head *entry`` the element to delete from the list.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjØ"h]”hŒ Parameters”…”�”}”(hjÚ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MLhjÒ"ubj&)�”}”(hhh]”j+)�”}”(hŒ@``struct list_head *entry`` the element to delete from the list.”h]”(j1)�”}”(hŒ``struct list_head *entry``”h]”j$)�”}”(hj÷"h]”hŒstruct list_head *entry”…”�”}”(hjù"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjõ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MNhjñ"ubjK)�”}”(hhh]”j)�”}”(hŒ$the element to delete from the list.”h]”hŒ$the element to delete from the list.”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MIhj #ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjñ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j #h´MNhjî"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÒ"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_move (C function)”Œ c.list_move”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ?void list_move (struct list_head *list, struct list_head *head)”h]”jT)�”}”(hŒ>void list_move(struct list_head *list, struct list_head *head)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjQ#h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjM#h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MRubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`#h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjM#h²hh³j_#h´MRubjZ)�”}”(hŒ list_move”h]”j`)�”}”(hŒ list_move”h]”hŒ list_move”…”�”}”(hjr#h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjn#ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjM#h²hh³j_#h´MRubj)�”}”(hŒ0(struct list_head *list, struct list_head *head)”h]”(j)�”}”(hŒstruct list_head *list”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjŽ#h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjŠ#ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›#h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjŠ#ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj¬#h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj©#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j®#Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjt#sbŒ c.list_move”†”asbuh1hhjŠ#ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ#h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjŠ#ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjÚ#h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjŠ#ubj`)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjç#h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjŠ#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj†#ubj)�”}”(hŒstruct list_head *head”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjü#ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjü#ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j $Œmodname”NŒ classname”Njêjí)�”}”jð]”jÈ#Œ c.list_move”†”asbuh1hhjü#ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<$h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjü#ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjJ$h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjü#ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjW$h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjü#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj†#ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjM#h²hh³j_#h´MRubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjI#h²hh³j_#h´MRubah}”(h]”jD#ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j_#h´MRhjF#h²hubj�)�”}”(hhh]”j)�”}”(hŒ.delete from one list and add as another's head”h]”hŒ0delete from one list and add as another’s head”…”�”}”(hj�$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MRhj~$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjF#h²hh³j_#h´MRubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj™$j j™$j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ�**Parameters** ``struct list_head *list`` the entry to move ``struct list_head *head`` the head that will precede our entry”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj£$h]”hŒ Parameters”…”�”}”(hj¥$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MVhj�$ubj&)�”}”(hhh]”(j+)�”}”(hŒ-``struct list_head *list`` the entry to move ”h]”(j1)�”}”(hŒ``struct list_head *list``”h]”j$)�”}”(hjÂ$h]”hŒstruct list_head *list”…”�”}”(hjÄ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÀ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MShj¼$ubjK)�”}”(hhh]”j)�”}”(hŒthe entry to move”h]”hŒthe entry to move”…”�”}”(hjÛ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j×$h´MShjØ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj¼$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j×$h´MShj¹$ubj+)�”}”(hŒ?``struct list_head *head`` the head that will precede our entry”h]”(j1)�”}”(hŒ``struct list_head *head``”h]”j$)�”}”(hjû$h]”hŒstruct list_head *head”…”�”}”(hjý$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjù$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MUhjõ$ubjK)�”}”(hhh]”j)�”}”(hŒ$the head that will precede our entry”h]”hŒ$the head that will precede our entry”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MThj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjõ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j%h´MUhj¹$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_move_tail (C function)”Œc.list_move_tail”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒDvoid list_move_tail (struct list_head *list, struct list_head *head)”h]”jT)�”}”(hŒCvoid list_move_tail(struct list_head *list, struct list_head *head)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjU%h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjQ%h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M]ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd%h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjQ%h²hh³jc%h´M]ubjZ)�”}”(hŒlist_move_tail”h]”j`)�”}”(hŒlist_move_tail”h]”hŒlist_move_tail”…”�”}”(hjv%h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjr%ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjQ%h²hh³jc%h´M]ubj)�”}”(hŒ0(struct list_head *list, struct list_head *head)”h]”(j)�”}”(hŒstruct list_head *list”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj’%h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjŽ%ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ%h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjŽ%ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj°%h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj­%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j²%Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjx%sbŒc.list_move_tail”†”asbuh1hhjŽ%ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ%h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjŽ%ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjÞ%h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjŽ%ubj`)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjë%h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjŽ%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŠ%ubj)�”}”(hŒstruct list_head *head”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj&ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj&ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj"&h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j$&Œmodname”NŒ classname”Njêjí)�”}”jð]”jÌ%Œc.list_move_tail”†”asbuh1hhj&ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@&h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj&ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjN&h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj&ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj[&h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŠ%ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjQ%h²hh³jc%h´M]ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjM%h²hh³jc%h´M]ubah}”(h]”jH%ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jc%h´M]hjJ%h²hubj�)�”}”(hhh]”j)�”}”(hŒ.delete from one list and add as another's tail”h]”hŒ0delete from one list and add as another’s tail”…”�”}”(hj…&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M]hj‚&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjJ%h²hh³jc%h´M]ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj�&j j�&j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ€**Parameters** ``struct list_head *list`` the entry to move ``struct list_head *head`` the head that will follow our entry”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj§&h]”hŒ Parameters”…”�”}”(hj©&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mahj¡&ubj&)�”}”(hhh]”(j+)�”}”(hŒ-``struct list_head *list`` the entry to move ”h]”(j1)�”}”(hŒ``struct list_head *list``”h]”j$)�”}”(hjÆ&h]”hŒstruct list_head *list”…”�”}”(hjÈ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÄ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M^hjÀ&ubjK)�”}”(hhh]”j)�”}”(hŒthe entry to move”h]”hŒthe entry to move”…”�”}”(hjß&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÛ&h´M^hjÜ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÀ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÛ&h´M^hj½&ubj+)�”}”(hŒ>``struct list_head *head`` the head that will follow our entry”h]”(j1)�”}”(hŒ``struct list_head *head``”h]”j$)�”}”(hjÿ&h]”hŒstruct list_head *head”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjý&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M`hjù&ubjK)�”}”(hhh]”j)�”}”(hŒ#the head that will follow our entry”h]”hŒ#the head that will follow our entry”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M_hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjù&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j'h´M`hj½&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ list_bulk_move_tail (C function)”Œc.list_bulk_move_tail”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒbvoid list_bulk_move_tail (struct list_head *head, struct list_head *first, struct list_head *last)”h]”jT)�”}”(hŒavoid list_bulk_move_tail(struct list_head *head, struct list_head *first, struct list_head *last)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY'h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjU'h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Miubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh'h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjU'h²hh³jg'h´MiubjZ)�”}”(hŒlist_bulk_move_tail”h]”j`)�”}”(hŒlist_bulk_move_tail”h]”hŒlist_bulk_move_tail”…”�”}”(hjz'h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjv'ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjU'h²hh³jg'h´Miubj)�”}”(hŒI(struct list_head *head, struct list_head *first, struct list_head *last)”h]”(j)�”}”(hŒstruct list_head *head”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj–'h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj’'ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£'h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj’'ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj´'h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj±'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j¶'Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj|'sbŒc.list_bulk_move_tail”†”asbuh1hhj’'ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ'h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj’'ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjâ'h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj’'ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjï'h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj’'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŽ'ubj)�”}”(hŒstruct list_head *first”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj(ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj(ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj&(h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj#(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j((Œmodname”NŒ classname”Njêjí)�”}”jð]”jÐ'Œc.list_bulk_move_tail”†”asbuh1hhj(ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD(h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj(ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjR(h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj(ubj`)�”}”(hŒfirst”h]”hŒfirst”…”�”}”(hj_(h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŽ'ubj)�”}”(hŒstruct list_head *last”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjx(h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjt(ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…(h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjt(ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj–(h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj“(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j˜(Œmodname”NŒ classname”Njêjí)�”}”jð]”jÐ'Œc.list_bulk_move_tail”†”asbuh1hhjt(ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´(h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjt(ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjÂ(h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjt(ubj`)�”}”(hŒlast”h]”hŒlast”…”�”}”(hjÏ(h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjt(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŽ'ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjU'h²hh³jg'h´Miubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjQ'h²hh³jg'h´Miubah}”(h]”jL'ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jg'h´MihjN'h²hubj�)�”}”(hhh]”j)�”}”(hŒ'move a subsection of a list to its tail”h]”hŒ'move a subsection of a list to its tail”…”�”}”(hjù(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mihjö(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjN'h²hh³jg'h´Miubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj)j j)j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hXb**Parameters** ``struct list_head *head`` the head that will follow our entry ``struct list_head *first`` first entry to move ``struct list_head *last`` last entry to move, can be the same as first **Description** Move all entries between **first** and including **last** before **head**. All three entries must belong to the same linked list.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj)h]”hŒ Parameters”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mmhj)ubj&)�”}”(hhh]”(j+)�”}”(hŒ?``struct list_head *head`` the head that will follow our entry ”h]”(j1)�”}”(hŒ``struct list_head *head``”h]”j$)�”}”(hj:)h]”hŒstruct list_head *head”…”�”}”(hj<)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj8)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mjhj4)ubjK)�”}”(hhh]”j)�”}”(hŒ#the head that will follow our entry”h]”hŒ#the head that will follow our entry”…”�”}”(hjS)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jO)h´MjhjP)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj4)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jO)h´Mjhj1)ubj+)�”}”(hŒ0``struct list_head *first`` first entry to move ”h]”(j1)�”}”(hŒ``struct list_head *first``”h]”j$)�”}”(hjs)h]”hŒstruct list_head *first”…”�”}”(hju)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjq)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mkhjm)ubjK)�”}”(hhh]”j)�”}”(hŒfirst entry to move”h]”hŒfirst entry to move”…”�”}”(hjŒ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jˆ)h´Mkhj‰)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjm)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jˆ)h´Mkhj1)ubj+)�”}”(hŒH``struct list_head *last`` last entry to move, can be the same as first ”h]”(j1)�”}”(hŒ``struct list_head *last``”h]”j$)�”}”(hj¬)h]”hŒstruct list_head *last”…”�”}”(hj®)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjª)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mlhj¦)ubjK)�”}”(hhh]”j)�”}”(hŒ,last entry to move, can be the same as first”h]”hŒ,last entry to move, can be the same as first”…”�”}”(hjÅ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÁ)h´MlhjÂ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj¦)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÁ)h´Mlhj1)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj)ubj)�”}”(hŒ**Description**”h]”j)�”}”(hjç)h]”hŒ Description”…”�”}”(hjé)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjå)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mnhj)ubj)�”}”(hŒ�Move all entries between **first** and including **last** before **head**. All three entries must belong to the same linked list.”h]”(hŒMove all entries between ”…”�”}”(hjý)h²hh³Nh´Nubj)�”}”(hŒ **first**”h]”hŒfirst”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý)ubhŒ and including ”…”�”}”(hjý)h²hh³Nh´Nubj)�”}”(hŒ**last**”h]”hŒlast”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý)ubhŒ before ”…”�”}”(hjý)h²hh³Nh´Nubj)�”}”(hŒ**head**”h]”hŒhead”…”�”}”(hj)*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý)ubhŒ8. All three entries must belong to the same linked list.”…”�”}”(hjý)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mmhj)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_is_first (C function)”Œc.list_is_first”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒNint list_is_first (const struct list_head *list, const struct list_head *head)”h]”jT)�”}”(hŒMint list_is_first(const struct list_head *list, const struct list_head *head)”h]”(jØ)�”}”(hŒint”h]”hŒint”…”�”}”(hjb*h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj^*h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M€ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq*h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj^*h²hh³jp*h´M€ubjZ)�”}”(hŒ list_is_first”h]”j`)�”}”(hŒ list_is_first”h]”hŒ list_is_first”…”�”}”(hjƒ*h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj*ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj^*h²hh³jp*h´M€ubj)�”}”(hŒ<(const struct list_head *list, const struct list_head *head)”h]”(j)�”}”(hŒconst struct list_head *list”h]”(j)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjŸ*h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj›*ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­*h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj›*ubj)�”}”(hj"h]”hŒstruct”…”�”}”(hj»*h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj›*ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ*h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj›*ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjÙ*h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÖ*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jÛ*Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj…*sbŒc.list_is_first”†”asbuh1hhj›*ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù*h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj›*ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj›*ubj`)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj›*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj—*ubj)�”}”(hŒconst struct list_head *head”h]”(j)�”}”(hj¡*h]”hŒconst”…”�”}”(hj-+h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj)+ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:+h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj)+ubj)�”}”(hj"h]”hŒstruct”…”�”}”(hjH+h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj)+ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU+h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj)+ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjf+h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjc+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jh+Œmodname”NŒ classname”Njêjí)�”}”jð]”jõ*Œc.list_is_first”†”asbuh1hhj)+ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„+h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj)+ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj’+h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj)+ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjŸ+h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj)+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj—*ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj^*h²hh³jp*h´M€ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjZ*h²hh³jp*h´M€ubah}”(h]”jU*ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jp*h´M€hjW*h²hubj�)�”}”(hhh]”jL)�”}”(hhh]”jQ)�”}”(hŒ:tests whether **list** is the first entry in list **head**”h]”j)�”}”(hjÎ+h]”(hŒtests whether ”…”�”}”(hjÐ+h²hh³Nh´Nubj)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj×+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐ+ubhŒ is the first entry in list ”…”�”}”(hjÐ+h²hh³Nh´Nubj)�”}”(hŒ**head**”h]”hŒhead”…”�”}”(hjé+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M€hjÌ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jPhjÉ+h²hh³jý+h´Nubah}”(h]”h ]”h"]”h$]”h&]”jŒ-”uh1jKh³jý+h´M€hjÆ+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjW*h²hh³jp*h´M€ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj,j j,j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ}**Parameters** ``const struct list_head *list`` the entry to test ``const struct list_head *head`` the head of the list”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj,h]”hŒ Parameters”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M„hj,ubj&)�”}”(hhh]”(j+)�”}”(hŒ3``const struct list_head *list`` the entry to test ”h]”(j1)�”}”(hŒ ``const struct list_head *list``”h]”j$)�”}”(hj=,h]”hŒconst struct list_head *list”…”�”}”(hj?,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj;,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hj7,ubjK)�”}”(hhh]”j)�”}”(hŒthe entry to test”h]”hŒthe entry to test”…”�”}”(hjV,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jR,h´M�hjS,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj7,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jR,h´M�hj4,ubj+)�”}”(hŒ5``const struct list_head *head`` the head of the list”h]”(j1)�”}”(hŒ ``const struct list_head *head``”h]”j$)�”}”(hjv,h]”hŒconst struct list_head *head”…”�”}”(hjx,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjt,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mƒhjp,ubjK)�”}”(hhh]”j)�”}”(hŒthe head of the list”h]”hŒthe head of the list”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M‚hjŒ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjp,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j‹,h´Mƒhj4,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_is_last (C function)”Œc.list_is_last”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒMint list_is_last (const struct list_head *list, const struct list_head *head)”h]”jT)�”}”(hŒLint list_is_last(const struct list_head *list, const struct list_head *head)”h]”(jØ)�”}”(hŒint”h]”hŒint”…”�”}”(hjÐ,h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÌ,h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŠubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß,h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÌ,h²hh³jÞ,h´MŠubjZ)�”}”(hŒ list_is_last”h]”j`)�”}”(hŒ list_is_last”h]”hŒ list_is_last”…”�”}”(hjñ,h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjí,ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÌ,h²hh³jÞ,h´MŠubj)�”}”(hŒ<(const struct list_head *list, const struct list_head *head)”h]”(j)�”}”(hŒconst struct list_head *list”h]”(j)�”}”(hj¡*h]”hŒconst”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj -ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj -ubj)�”}”(hj"h]”hŒstruct”…”�”}”(hj(-h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj -ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5-h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj -ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjF-h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjC-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jH-Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjó,sbŒc.list_is_last”†”asbuh1hhj -ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf-h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj -ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjt-h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj -ubj`)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj -ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj-ubj)�”}”(hŒconst struct list_head *head”h]”(j)�”}”(hj¡*h]”hŒconst”…”�”}”(hjš-h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj–-ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§-h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj–-ubj)�”}”(hj"h]”hŒstruct”…”�”}”(hjµ-h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj–-ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ-h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj–-ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjÓ-h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÐ-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jÕ-Œmodname”NŒ classname”Njêjí)�”}”jð]”jb-Œc.list_is_last”†”asbuh1hhj–-ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ-h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj–-ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjÿ-h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj–-ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj–-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj-ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÌ,h²hh³jÞ,h´MŠubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÈ,h²hh³jÞ,h´MŠubah}”(h]”jÃ,ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jÞ,h´MŠhjÅ,h²hubj�)�”}”(hhh]”j)�”}”(hŒ9tests whether **list** is the last entry in list **head**”h]”(hŒtests whether ”…”�”}”(hj6.h²hh³Nh´Nubj)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj>.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6.ubhŒ is the last entry in list ”…”�”}”(hj6.h²hh³Nh´Nubj)�”}”(hŒ**head**”h]”hŒhead”…”�”}”(hjP.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŠhj3.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjÅ,h²hh³jÞ,h´MŠubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjn.j jn.j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ}**Parameters** ``const struct list_head *list`` the entry to test ``const struct list_head *head`` the head of the list”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjx.h]”hŒ Parameters”…”�”}”(hjz.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjv.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŽhjr.ubj&)�”}”(hhh]”(j+)�”}”(hŒ3``const struct list_head *list`` the entry to test ”h]”(j1)�”}”(hŒ ``const struct list_head *list``”h]”j$)�”}”(hj—.h]”hŒconst struct list_head *list”…”�”}”(hj™.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj•.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M‹hj‘.ubjK)�”}”(hhh]”j)�”}”(hŒthe entry to test”h]”hŒthe entry to test”…”�”}”(hj°.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j¬.h´M‹hj­.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj‘.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¬.h´M‹hjŽ.ubj+)�”}”(hŒ5``const struct list_head *head`` the head of the list”h]”(j1)�”}”(hŒ ``const struct list_head *head``”h]”j$)�”}”(hjÐ.h]”hŒconst struct list_head *head”…”�”}”(hjÒ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÎ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hjÊ.ubjK)�”}”(hhh]”j)�”}”(hŒthe head of the list”h]”hŒthe head of the list”…”�”}”(hjé.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŒhjæ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÊ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jå.h´M�hjŽ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjr.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_is_head (C function)”Œc.list_is_head”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒMint list_is_head (const struct list_head *list, const struct list_head *head)”h]”jT)�”}”(hŒLint list_is_head(const struct list_head *list, const struct list_head *head)”h]”(jØ)�”}”(hŒint”h]”hŒint”…”�”}”(hj*/h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj&/h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M”ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9/h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj&/h²hh³j8/h´M”ubjZ)�”}”(hŒ list_is_head”h]”j`)�”}”(hŒ list_is_head”h]”hŒ list_is_head”…”�”}”(hjK/h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjG/ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj&/h²hh³j8/h´M”ubj)�”}”(hŒ<(const struct list_head *list, const struct list_head *head)”h]”(j)�”}”(hŒconst struct list_head *list”h]”(j)�”}”(hj¡*h]”hŒconst”…”�”}”(hjg/h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjc/ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt/h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjc/ubj)�”}”(hj"h]”hŒstruct”…”�”}”(hj‚/h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjc/ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjc/ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j¢/Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjM/sbŒc.list_is_head”†”asbuh1hhjc/ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ/h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjc/ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjÎ/h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjc/ubj`)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjÛ/h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjc/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj_/ubj)�”}”(hŒconst struct list_head *head”h]”(j)�”}”(hj¡*h]”hŒconst”…”�”}”(hjô/h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjð/ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjð/ubj)�”}”(hj"h]”hŒstruct”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjð/ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjð/ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj-0h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj*0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j/0Œmodname”NŒ classname”Njêjí)�”}”jð]”j¼/Œc.list_is_head”†”asbuh1hhjð/ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK0h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjð/ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjY0h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjð/ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjf0h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjð/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj_/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj&/h²hh³j8/h´M”ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj"/h²hh³j8/h´M”ubah}”(h]”j/ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j8/h´M”hj/h²hubj�)�”}”(hhh]”j)�”}”(hŒ+tests whether **list** is the list **head**”h]”(hŒtests whether ”…”�”}”(hj�0h²hh³Nh´Nubj)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj˜0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�0ubhŒ is the list ”…”�”}”(hj�0h²hh³Nh´Nubj)�”}”(hŒ**head**”h]”hŒhead”…”�”}”(hjª0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M”hj�0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj/h²hh³j8/h´M”ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjÈ0j jÈ0j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ}**Parameters** ``const struct list_head *list`` the entry to test ``const struct list_head *head`` the head of the list”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÒ0h]”hŒ Parameters”…”�”}”(hjÔ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M˜hjÌ0ubj&)�”}”(hhh]”(j+)�”}”(hŒ3``const struct list_head *list`` the entry to test ”h]”(j1)�”}”(hŒ ``const struct list_head *list``”h]”j$)�”}”(hjñ0h]”hŒconst struct list_head *list”…”�”}”(hjó0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjï0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M•hjë0ubjK)�”}”(hhh]”j)�”}”(hŒthe entry to test”h]”hŒthe entry to test”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j1h´M•hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjë0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j1h´M•hjè0ubj+)�”}”(hŒ5``const struct list_head *head`` the head of the list”h]”(j1)�”}”(hŒ ``const struct list_head *head``”h]”j$)�”}”(hj*1h]”hŒconst struct list_head *head”…”�”}”(hj,1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj(1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M—hj$1ubjK)�”}”(hhh]”j)�”}”(hŒthe head of the list”h]”hŒthe head of the list”…”�”}”(hjC1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M–hj@1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj$1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j?1h´M—hjè0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÌ0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_empty (C function)”Œ c.list_empty”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ-int list_empty (const struct list_head *head)”h]”jT)�”}”(hŒ,int list_empty(const struct list_head *head)”h]”(jØ)�”}”(hŒint”h]”hŒint”…”�”}”(hj„1h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj€1h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mžubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“1h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj€1h²hh³j’1h´MžubjZ)�”}”(hŒ list_empty”h]”j`)�”}”(hŒ list_empty”h]”hŒ list_empty”…”�”}”(hj¥1h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¡1ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj€1h²hh³j’1h´Mžubj)�”}”(hŒ(const struct list_head *head)”h]”j)�”}”(hŒconst struct list_head *head”h]”(j)�”}”(hj¡*h]”hŒconst”…”�”}”(hjÁ1h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj½1ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ1h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj½1ubj)�”}”(hj"h]”hŒstruct”…”�”}”(hjÜ1h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj½1ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé1h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj½1ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjú1h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj÷1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jü1Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj§1sbŒ c.list_empty”†”asbuh1hhj½1ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj½1ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj(2h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj½1ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj52h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj½1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¹1ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj€1h²hh³j’1h´Mžubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj|1h²hh³j’1h´Mžubah}”(h]”jw1ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j’1h´Mžhjy1h²hubj�)�”}”(hhh]”j)�”}”(hŒtests whether a list is empty”h]”hŒtests whether a list is empty”…”�”}”(hj_2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mžhj\2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjy1h²hh³j’1h´Mžubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjw2j jw2j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒD**Parameters** ``const struct list_head *head`` the list to test.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj�2h]”hŒ Parameters”…”�”}”(hjƒ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¢hj{2ubj&)�”}”(hhh]”j+)�”}”(hŒ2``const struct list_head *head`` the list to test.”h]”(j1)�”}”(hŒ ``const struct list_head *head``”h]”j$)�”}”(hj 2h]”hŒconst struct list_head *head”…”�”}”(hj¢2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjž2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¤hjš2ubjK)�”}”(hhh]”j)�”}”(hŒthe list to test.”h]”hŒthe list to test.”…”�”}”(hj¹2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŸhj¶2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjš2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jµ2h´M¤hj—2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj{2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ"list_del_init_careful (C function)”Œc.list_del_init_careful”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ4void list_del_init_careful (struct list_head *entry)”h]”jT)�”}”(hŒ3void list_del_init_careful(struct list_head *entry)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjú2h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjö2h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M§ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjö2h²hh³j3h´M§ubjZ)�”}”(hŒlist_del_init_careful”h]”j`)�”}”(hŒlist_del_init_careful”h]”hŒlist_del_init_careful”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj3ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjö2h²hh³j3h´M§ubj)�”}”(hŒ(struct list_head *entry)”h]”j)�”}”(hŒstruct list_head *entry”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj73h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj33ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD3h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj33ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjU3h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjR3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jW3Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj3sbŒc.list_del_init_careful”†”asbuh1hhj33ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju3h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj33ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjƒ3h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj33ubj`)�”}”(hŒentry”h]”hŒentry”…”�”}”(hj�3h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj33ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj/3ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjö2h²hh³j3h´M§ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjò2h²hh³j3h´M§ubah}”(h]”jí2ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j3h´M§hjï2h²hubj�)�”}”(hhh]”j)�”}”(hŒ,deletes entry from list and reinitialize it.”h]”hŒ,deletes entry from list and reinitialize it.”…”�”}”(hjº3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M§hj·3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjï2h²hh³j3h´M§ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjÒ3j jÒ3j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hX**Parameters** ``struct list_head *entry`` the element to delete from the list. **Description** This is the same as list_del_init(), except designed to be used together with list_empty_careful() in a way to guarantee ordering of other memory operations. Any memory operations done before a list_del_init_careful() are guaranteed to be visible after a list_empty_careful() test.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÜ3h]”hŒ Parameters”…”�”}”(hjÞ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M«hjÖ3ubj&)�”}”(hhh]”j+)�”}”(hŒA``struct list_head *entry`` the element to delete from the list. ”h]”(j1)�”}”(hŒ``struct list_head *entry``”h]”j$)�”}”(hjû3h]”hŒstruct list_head *entry”…”�”}”(hjý3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjù3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¨hjõ3ubjK)�”}”(hhh]”j)�”}”(hŒ$the element to delete from the list.”h]”hŒ$the element to delete from the list.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j4h´M¨hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjõ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j4h´M¨hjò3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÖ3ubj)�”}”(hŒ**Description**”h]”j)�”}”(hj64h]”hŒ Description”…”�”}”(hj84h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj44ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MªhjÖ3ubj)�”}”(hŒ�This is the same as list_del_init(), except designed to be used together with list_empty_careful() in a way to guarantee ordering of other memory operations.”h]”hŒ�This is the same as list_del_init(), except designed to be used together with list_empty_careful() in a way to guarantee ordering of other memory operations.”…”�”}”(hjL4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M©hjÖ3ubj)�”}”(hŒ{Any memory operations done before a list_del_init_careful() are guaranteed to be visible after a list_empty_careful() test.”h]”hŒ{Any memory operations done before a list_del_init_careful() are guaranteed to be visible after a list_empty_careful() test.”…”�”}”(hj[4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M­hjÖ3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_empty_careful (C function)”Œc.list_empty_careful”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ5int list_empty_careful (const struct list_head *head)”h]”jT)�”}”(hŒ4int list_empty_careful(const struct list_head *head)”h]”(jØ)�”}”(hŒint”h]”hŒint”…”�”}”(hjŠ4h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj†4h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¹ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™4h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj†4h²hh³j˜4h´M¹ubjZ)�”}”(hŒlist_empty_careful”h]”j`)�”}”(hŒlist_empty_careful”h]”hŒlist_empty_careful”…”�”}”(hj«4h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj§4ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj†4h²hh³j˜4h´M¹ubj)�”}”(hŒ(const struct list_head *head)”h]”j)�”}”(hŒconst struct list_head *head”h]”(j)�”}”(hj¡*h]”hŒconst”…”�”}”(hjÇ4h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjÃ4ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ4h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÃ4ubj)�”}”(hj"h]”hŒstruct”…”�”}”(hjâ4h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjÃ4ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï4h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÃ4ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjý4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j5Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj­4sbŒc.list_empty_careful”†”asbuh1hhjÃ4ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÃ4ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj.5h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjÃ4ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj;5h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÃ4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj¿4ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj†4h²hh³j˜4h´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj‚4h²hh³j˜4h´M¹ubah}”(h]”j}4ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j˜4h´M¹hj4h²hubj�)�”}”(hhh]”j)�”}”(hŒ4tests whether a list is empty and not being modified”h]”hŒ4tests whether a list is empty and not being modified”…”�”}”(hje5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¹hjb5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj4h²hh³j˜4h´M¹ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj}5j j}5j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hX«**Parameters** ``const struct list_head *head`` the list to test **Description** tests whether a list is empty _and_ checks that no other CPU might be in the process of modifying either member (next or prev) **NOTE** using list_empty_careful() without synchronization can only be safe if the only activity that can happen to the list entry is list_del_init(). Eg. it cannot be used if another CPU could re-list_add() it.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj‡5h]”hŒ Parameters”…”�”}”(hj‰5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M½hj�5ubj&)�”}”(hhh]”j+)�”}”(hŒ2``const struct list_head *head`` the list to test ”h]”(j1)�”}”(hŒ ``const struct list_head *head``”h]”j$)�”}”(hj¦5h]”hŒconst struct list_head *head”…”�”}”(hj¨5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¤5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mºhj 5ubjK)�”}”(hhh]”j)�”}”(hŒthe list to test”h]”hŒthe list to test”…”�”}”(hj¿5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j»5h´Mºhj¼5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj 5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j»5h´Mºhj�5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�5ubj)�”}”(hŒ**Description**”h]”j)�”}”(hjá5h]”hŒ Description”…”�”}”(hjã5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjß5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¼hj�5ubj)�”}”(hŒ~tests whether a list is empty _and_ checks that no other CPU might be in the process of modifying either member (next or prev)”h]”hŒ~tests whether a list is empty _and_ checks that no other CPU might be in the process of modifying either member (next or prev)”…”�”}”(hj÷5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¼hj�5ubj)�”}”(hŒ**NOTE**”h]”j)�”}”(hj6h]”hŒNOTE”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¿hj�5ubj)�”}”(hŒËusing list_empty_careful() without synchronization can only be safe if the only activity that can happen to the list entry is list_del_init(). Eg. it cannot be used if another CPU could re-list_add() it.”h]”hŒËusing list_empty_careful() without synchronization can only be safe if the only activity that can happen to the list entry is list_del_init(). Eg. it cannot be used if another CPU could re-list_add() it.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÀhj�5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_rotate_left (C function)”Œc.list_rotate_left”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ.void list_rotate_left (struct list_head *head)”h]”jT)�”}”(hŒ-void list_rotate_left(struct list_head *head)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjM6h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjI6h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÍubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\6h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjI6h²hh³j[6h´MÍubjZ)�”}”(hŒlist_rotate_left”h]”j`)�”}”(hŒlist_rotate_left”h]”hŒlist_rotate_left”…”�”}”(hjn6h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjj6ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjI6h²hh³j[6h´MÍubj)�”}”(hŒ(struct list_head *head)”h]”j)�”}”(hŒstruct list_head *head”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjŠ6h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj†6ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—6h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj†6ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj¨6h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¥6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jª6Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjp6sbŒc.list_rotate_left”†”asbuh1hhj†6ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ6h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj†6ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjÖ6h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj†6ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjã6h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj†6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‚6ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjI6h²hh³j[6h´MÍubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjE6h²hh³j[6h´MÍubah}”(h]”j@6ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j[6h´MÍhjB6h²hubj�)�”}”(hhh]”j)�”}”(hŒrotate the list to the left”h]”hŒrotate the list to the left”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÍhj 7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjB6h²hh³j[6h´MÍubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj%7j j%7j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒA**Parameters** ``struct list_head *head`` the head of the list”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj/7h]”hŒ Parameters”…”�”}”(hj17h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÑhj)7ubj&)�”}”(hhh]”j+)�”}”(hŒ/``struct list_head *head`` the head of the list”h]”(j1)�”}”(hŒ``struct list_head *head``”h]”j$)�”}”(hjN7h]”hŒstruct list_head *head”…”�”}”(hjP7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjL7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÓhjH7ubjK)�”}”(hhh]”j)�”}”(hŒthe head of the list”h]”hŒthe head of the list”…”�”}”(hjg7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÎhjd7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjH7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jc7h´MÓhjE7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj)7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ!list_rotate_to_front (C function)”Œc.list_rotate_to_front”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒJvoid list_rotate_to_front (struct list_head *list, struct list_head *head)”h]”jT)�”}”(hŒIvoid list_rotate_to_front(struct list_head *list, struct list_head *head)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¨7h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¤7h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÛubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·7h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj¤7h²hh³j¶7h´MÛubjZ)�”}”(hŒlist_rotate_to_front”h]”j`)�”}”(hŒlist_rotate_to_front”h]”hŒlist_rotate_to_front”…”�”}”(hjÉ7h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÅ7ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¤7h²hh³j¶7h´MÛubj)�”}”(hŒ0(struct list_head *list, struct list_head *head)”h]”(j)�”}”(hŒstruct list_head *list”h]”(j)�”}”(hj"h•]”hŒstruct”…”�”}”(hjå7h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjá7ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò7h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjá7ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j8Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjË7sbŒc.list_rotate_to_front”†”asbuh1hhjá7ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#8h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjá7ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj18h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjá7ubj`)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj>8h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjá7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÝ7ubj)�”}”(hŒstruct list_head *head”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjW8h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjS8ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd8h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjS8ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hju8h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjr8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jw8Œmodname”NŒ classname”Njêjí)�”}”jð]”j8Œc.list_rotate_to_front”†”asbuh1hhjS8ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“8h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjS8ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj¡8h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjS8ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj®8h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjS8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjÝ7ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¤7h²hh³j¶7h´MÛubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj 7h²hh³j¶7h´MÛubah}”(h]”j›7ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j¶7h´MÛhj�7h²hubj�)�”}”(hhh]”j)�”}”(hŒRotate list to specific item.”h]”hŒRotate list to specific item.”…”�”}”(hjØ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÛhjÕ8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj�7h²hh³j¶7h´MÛubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjð8j jð8j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒÖ**Parameters** ``struct list_head *list`` The desired new front of the list. ``struct list_head *head`` The head of the list. **Description** Rotates list so that **list** becomes the new front of the list.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjú8h]”hŒ Parameters”…”�”}”(hjü8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjø8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mßhjô8ubj&)�”}”(hhh]”(j+)�”}”(hŒ>``struct list_head *list`` The desired new front of the list. ”h]”(j1)�”}”(hŒ``struct list_head *list``”h]”j$)�”}”(hj9h]”hŒstruct list_head *list”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÜhj9ubjK)�”}”(hhh]”j)�”}”(hŒ"The desired new front of the list.”h]”hŒ"The desired new front of the list.”…”�”}”(hj29h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j.9h´MÜhj/9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j.9h´MÜhj9ubj+)�”}”(hŒ1``struct list_head *head`` The head of the list. ”h]”(j1)�”}”(hŒ``struct list_head *head``”h]”j$)�”}”(hjR9h]”hŒstruct list_head *head”…”�”}”(hjT9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjP9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÝhjL9ubjK)�”}”(hhh]”j)�”}”(hŒThe head of the list.”h]”hŒThe head of the list.”…”�”}”(hjk9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jg9h´MÝhjh9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjL9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jg9h´MÝhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjô8ubj)�”}”(hŒ**Description**”h]”j)�”}”(hj�9h]”hŒ Description”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mßhjô8ubj)�”}”(hŒ@Rotates list so that **list** becomes the new front of the list.”h]”(hŒRotates list so that ”…”�”}”(hj£9h²hh³Nh´Nubj)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj«9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£9ubhŒ# becomes the new front of the list.”…”�”}”(hj£9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÞhjô8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_is_singular (C function)”Œc.list_is_singular”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ3int list_is_singular (const struct list_head *head)”h]”jT)�”}”(hŒ2int list_is_singular(const struct list_head *head)”h]”(jØ)�”}”(hŒint”h]”hŒint”…”�”}”(hjä9h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjà9h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Míubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó9h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjà9h²hh³jò9h´MíubjZ)�”}”(hŒlist_is_singular”h]”j`)�”}”(hŒlist_is_singular”h]”hŒlist_is_singular”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj:ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjà9h²hh³jò9h´Míubj)�”}”(hŒ(const struct list_head *head)”h]”j)�”}”(hŒconst struct list_head *head”h]”(j)�”}”(hj¡*h]”hŒconst”…”�”}”(hj!:h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj:ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.:h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj:ubj)�”}”(hj"h]”hŒstruct”…”�”}”(hj<:h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj:ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI:h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj:ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjZ:h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjW:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j\:Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj:sbŒc.list_is_singular”†”asbuh1hhj:ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz:h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj:ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjˆ:h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj:ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj•:h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj:ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjà9h²hh³jò9h´Míubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÜ9h²hh³jò9h´Míubah}”(h]”j×9ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jò9h´MíhjÙ9h²hubj�)�”}”(hhh]”j)�”}”(hŒ(tests whether a list has just one entry.”h]”hŒ(tests whether a list has just one entry.”…”�”}”(hj¿:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Míhj¼:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjÙ9h²hh³jò9h´Míubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj×:j j×:j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒD**Parameters** ``const struct list_head *head`` the list to test.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjá:h]”hŒ Parameters”…”�”}”(hjã:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjß:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MñhjÛ:ubj&)�”}”(hhh]”j+)�”}”(hŒ2``const struct list_head *head`` the list to test.”h]”(j1)�”}”(hŒ ``const struct list_head *head``”h]”j$)�”}”(hj;h]”hŒconst struct list_head *head”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjþ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Móhjú:ubjK)�”}”(hhh]”j)�”}”(hŒthe list to test.”h]”hŒthe list to test.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mîhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjú:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j;h´Móhj÷:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÛ:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_cut_position (C function)”Œc.list_cut_position”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ`void list_cut_position (struct list_head *list, struct list_head *head, struct list_head *entry)”h]”jT)�”}”(hŒ_void list_cut_position(struct list_head *list, struct list_head *head, struct list_head *entry)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjZ;h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjV;h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji;h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjV;h²hh³jh;h´MubjZ)�”}”(hŒlist_cut_position”h]”j`)�”}”(hŒlist_cut_position”h]”hŒlist_cut_position”…”�”}”(hj{;h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjw;ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjV;h²hh³jh;h´Mubj)�”}”(hŒI(struct list_head *list, struct list_head *head, struct list_head *entry)”h]”(j)�”}”(hŒstruct list_head *list”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj—;h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj“;ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤;h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj“;ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjµ;h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj²;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j·;Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj};sbŒc.list_cut_position”†”asbuh1hhj“;ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ;h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj“;ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjã;h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj“;ubj`)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjð;h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj“;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj�;ubj)�”}”(hŒstruct list_head *head”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj<ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj<ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj'<h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj$<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j)<Œmodname”NŒ classname”Njêjí)�”}”jð]”jÑ;Œc.list_cut_position”†”asbuh1hhj<ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE<h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj<ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjS<h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj<ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj`<h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj�;ubj)�”}”(hŒstruct list_head *entry”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjy<h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhju<ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†<h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhju<ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj—<h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj”<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j™<Œmodname”NŒ classname”Njêjí)�”}”jð]”jÑ;Œc.list_cut_position”†”asbuh1hhju<ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ<h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhju<ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjÃ<h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhju<ubj`)�”}”(hŒentry”h]”hŒentry”…”�”}”(hjÐ<h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hju<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj�;ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjV;h²hh³jh;h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjR;h²hh³jh;h´Mubah}”(h]”jM;ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jh;h´MhjO;h²hubj�)�”}”(hhh]”j)�”}”(hŒcut a list into two”h]”hŒcut a list into two”…”�”}”(hjú<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj÷<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjO;h²hh³jh;h´Mubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj=j j=j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hX**Parameters** ``struct list_head *list`` a new list to add all removed entries ``struct list_head *head`` a list with entries ``struct list_head *entry`` an entry within head, could be the head itself and if so we won't cut the list **Description** This helper moves the initial part of **head**, up to and including **entry**, from **head** to **list**. You should pass on **entry** an element you know is on **head**. **list** should be an empty list or a list you do not care about losing its data.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj=h]”hŒ Parameters”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj=ubj&)�”}”(hhh]”(j+)�”}”(hŒA``struct list_head *list`` a new list to add all removed entries ”h]”(j1)�”}”(hŒ``struct list_head *list``”h]”j$)�”}”(hj;=h]”hŒstruct list_head *list”…”�”}”(hj==h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj9=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj5=ubjK)�”}”(hhh]”j)�”}”(hŒ%a new list to add all removed entries”h]”hŒ%a new list to add all removed entries”…”�”}”(hjT=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jP=h´MhjQ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj5=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jP=h´Mhj2=ubj+)�”}”(hŒ/``struct list_head *head`` a list with entries ”h]”(j1)�”}”(hŒ``struct list_head *head``”h]”j$)�”}”(hjt=h]”hŒstruct list_head *head”…”�”}”(hjv=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjr=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhjn=ubjK)�”}”(hhh]”j)�”}”(hŒa list with entries”h]”hŒa list with entries”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j‰=h´MhjŠ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjn=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j‰=h´Mhj2=ubj+)�”}”(hŒk``struct list_head *entry`` an entry within head, could be the head itself and if so we won't cut the list ”h]”(j1)�”}”(hŒ``struct list_head *entry``”h]”j$)�”}”(hj­=h]”hŒstruct list_head *entry”…”�”}”(hj¯=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj«=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj§=ubjK)�”}”(hhh]”j)�”}”(hŒNan entry within head, could be the head itself and if so we won't cut the list”h]”hŒPan entry within head, could be the head itself and if so we won’t cut the list”…”�”}”(hjÆ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÃ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj§=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÂ=h´Mhj2=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj=ubj)�”}”(hŒ**Description**”h]”j)�”}”(hjé=h]”hŒ Description”…”�”}”(hjë=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjç=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj=ubj)�”}”(hŒüThis helper moves the initial part of **head**, up to and including **entry**, from **head** to **list**. You should pass on **entry** an element you know is on **head**. **list** should be an empty list or a list you do not care about losing its data.”h]”(hŒ&This helper moves the initial part of ”…”�”}”(hjÿ=h²hh³Nh´Nubj)�”}”(hŒ**head**”h]”hŒhead”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ=ubhŒ, up to and including ”…”�”}”(hjÿ=h²hh³Nh´Nubj)�”}”(hŒ **entry**”h]”hŒentry”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ=ubhŒ, from ”…”�”}”(hjÿ=h²hh³Nh´Nubj)�”}”(hŒ**head**”h]”hŒhead”…”�”}”(hj+>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ=ubhŒ to ”…”�”}”(hjÿ=h²hh³Nh´Nubj)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj=>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ=ubhŒ. You should pass on ”…”�”}”(hjÿ=h²hh³Nh´Nubj)�”}”(hŒ **entry**”h]”hŒentry”…”�”}”(hjO>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ=ubhŒ an element you know is on ”…”�”}”(hjÿ=h²hh³Nh´Nubj)�”}”(hŒ**head**”h]”hŒhead”…”�”}”(hja>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ=ubhŒ. ”…”�”}”(hjÿ=h²hh³Nh´Nubj)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hjs>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿ=ubhŒI should be an empty list or a list you do not care about losing its data.”…”�”}”(hjÿ=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_cut_before (C function)”Œc.list_cut_before”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ^void list_cut_before (struct list_head *list, struct list_head *head, struct list_head *entry)”h]”jT)�”}”(hŒ]void list_cut_before(struct list_head *list, struct list_head *head, struct list_head *entry)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¬>h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj¨>h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»>h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj¨>h²hh³jº>h´MubjZ)�”}”(hŒlist_cut_before”h]”j`)�”}”(hŒlist_cut_before”h]”hŒlist_cut_before”…”�”}”(hjÍ>h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÉ>ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¨>h²hh³jº>h´Mubj)�”}”(hŒI(struct list_head *list, struct list_head *head, struct list_head *entry)”h]”(j)�”}”(hŒstruct list_head *list”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjé>h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjå>ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö>h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjå>ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j ?Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjÏ>sbŒc.list_cut_before”†”asbuh1hhjå>ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'?h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjå>ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj5?h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjå>ubj`)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjB?h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjå>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjá>ubj)�”}”(hŒstruct list_head *head”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj[?h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjW?ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh?h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjW?ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjy?h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjv?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j{?Œmodname”NŒ classname”Njêjí)�”}”jð]”j#?Œc.list_cut_before”†”asbuh1hhjW?ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—?h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjW?ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj¥?h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjW?ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj²?h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjW?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjá>ubj)�”}”(hŒstruct list_head *entry”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjË?h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjÇ?ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ?h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÇ?ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjé?h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjæ?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jë?Œmodname”NŒ classname”Njêjí)�”}”jð]”j#?Œc.list_cut_before”†”asbuh1hhjÇ?ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÇ?ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjÇ?ubj`)�”}”(hŒentry”h]”hŒentry”…”�”}”(hj"@h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÇ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjá>ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj¨>h²hh³jº>h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj¤>h²hh³jº>h´Mubah}”(h]”jŸ>ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jº>h´Mhj¡>h²hubj�)�”}”(hhh]”j)�”}”(hŒ'cut a list into two, before given entry”h]”hŒ'cut a list into two, before given entry”…”�”}”(hjL@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjI@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj¡>h²hh³jº>h´Mubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjd@j jd@j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hX,**Parameters** ``struct list_head *list`` a new list to add all removed entries ``struct list_head *head`` a list with entries ``struct list_head *entry`` an entry within head, could be the head itself **Description** This helper moves the initial part of **head**, up to but excluding **entry**, from **head** to **list**. You should pass in **entry** an element you know is on **head**. **list** should be an empty list or a list you do not care about losing its data. If **entry** == **head**, all entries on **head** are moved to **list**.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjn@h]”hŒ Parameters”…”�”}”(hjp@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjl@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M!hjh@ubj&)�”}”(hhh]”(j+)�”}”(hŒA``struct list_head *list`` a new list to add all removed entries ”h]”(j1)�”}”(hŒ``struct list_head *list``”h]”j$)�”}”(hj�@h]”hŒstruct list_head *list”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj‹@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj‡@ubjK)�”}”(hhh]”j)�”}”(hŒ%a new list to add all removed entries”h]”hŒ%a new list to add all removed entries”…”�”}”(hj¦@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j¢@h´Mhj£@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj‡@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¢@h´Mhj„@ubj+)�”}”(hŒ/``struct list_head *head`` a list with entries ”h]”(j1)�”}”(hŒ``struct list_head *head``”h]”j$)�”}”(hjÆ@h]”hŒstruct list_head *head”…”�”}”(hjÈ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÄ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÀ@ubjK)�”}”(hhh]”j)�”}”(hŒa list with entries”h]”hŒa list with entries”…”�”}”(hjß@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÛ@h´MhjÜ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÀ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÛ@h´Mhj„@ubj+)�”}”(hŒK``struct list_head *entry`` an entry within head, could be the head itself ”h]”(j1)�”}”(hŒ``struct list_head *entry``”h]”j$)�”}”(hjÿ@h]”hŒstruct list_head *entry”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjý@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hjù@ubjK)�”}”(hhh]”j)�”}”(hŒ.an entry within head, could be the head itself”h]”hŒ.an entry within head, could be the head itself”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jAh´M hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjù@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jAh´M hj„@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjh@ubj)�”}”(hŒ**Description**”h]”j)�”}”(hj:Ah]”hŒ Description”…”�”}”(hjKh´M‚hj&h²hubj)�”}”(hŒÀ**Parameters** ``ptr`` the :c:type:`struct list_head ` pointer. ``type`` the type of the struct this is embedded in. ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjKKh]”hŒ Parameters”…”�”}”(hjMKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIKubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M†hjEKubj&)�”}”(hhh]”(j+)�”}”(hŒ<``ptr`` the :c:type:`struct list_head ` pointer. ”h]”(j1)�”}”(hŒ``ptr``”h]”j$)�”}”(hjjKh]”hŒptr”…”�”}”(hjlKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjhKubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MƒhjdKubjK)�”}”(hhh]”j)�”}”(hŒ3the :c:type:`struct list_head ` pointer.”h]”(hŒthe ”…”�”}”(hjƒKh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hj�Kh]”hŒstruct list_head”…”�”}”(hj�Kh²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hj‹Kubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³jKh´MƒhjƒKubhŒ pointer.”…”�”}”(hjƒKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jKh´Mƒhj€Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjdKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jKh´MƒhjaKubj+)�”}”(hŒ5``type`` the type of the struct this is embedded in. ”h]”(j1)�”}”(hŒ``type``”h]”j$)�”}”(hjÆKh]”hŒtype”…”�”}”(hjÈKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÄKubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M„hjÀKubjK)�”}”(hhh]”j)�”}”(hŒ+the type of the struct this is embedded in.”h]”hŒ+the type of the struct this is embedded in.”…”�”}”(hjßKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÛKh´M„hjÜKubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÀKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÛKh´M„hjaKubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjÿKh]”hŒmember”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjýKubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M†hjùKubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M…hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjùKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jLh´M†hjaKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjEKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_first_entry (C macro)”Œc.list_first_entry”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_first_entry”h]”jT)�”}”(hŒlist_first_entry”h]”jZ)�”}”(hŒlist_first_entry”h]”j`)�”}”(hjSLh]”hŒlist_first_entry”…”�”}”(hj]Lh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjYLubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjULh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M‹ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjQLh²hh³jpLh´M‹ubah}”(h]”jLLah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jpLh´M‹hjNLh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjNLh²hh³jpLh´M‹ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj‰Lj j‰Lj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ(``list_first_entry (ptr, type, member)``”h]”j$)�”}”(hj�Lh]”hŒ$list_first_entry (ptr, type, member)”…”�”}”(hj‘Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj�Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hj&h²hubj½)�”}”(hŒ"get the first element from a list ”h]”j)�”}”(hŒ!get the first element from a list”h]”hŒ!get the first element from a list”…”�”}”(hj©Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M‹hj¥Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j·Lh´M‹hj&h²hubj)�”}”(hŒó**Parameters** ``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. **Description** Note, that list is expected to be not empty.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÄLh]”hŒ Parameters”…”�”}”(hjÆLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂLubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hj¾Lubj&)�”}”(hhh]”(j+)�”}”(hŒ0``ptr`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``ptr``”h]”j$)�”}”(hjãLh]”hŒptr”…”�”}”(hjåLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjáLubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŒhjÝLubjK)�”}”(hhh]”j)�”}”(hŒ'the list head to take the element from.”h]”hŒ'the list head to take the element from.”…”�”}”(hjüLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jøLh´MŒhjùLubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÝLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jøLh´MŒhjÚLubj+)�”}”(hŒ5``type`` the type of the struct this is embedded in. ”h]”(j1)�”}”(hŒ``type``”h]”j$)�”}”(hjMh]”hŒtype”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hjMubjK)�”}”(hhh]”j)�”}”(hŒ+the type of the struct this is embedded in.”h]”hŒ+the type of the struct this is embedded in.”…”�”}”(hj5Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j1Mh´M�hj2Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j1Mh´M�hjÚLubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjUMh]”hŒmember”…”�”}”(hjWMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjSMubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŽhjOMubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjnMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jjMh´MŽhjkMubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjOMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jjMh´MŽhjÚLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¾Lubj)�”}”(hŒ**Description**”h]”j)�”}”(hj�Mh]”hŒ Description”…”�”}”(hj’Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hj¾Lubj)�”}”(hŒ,Note, that list is expected to be not empty.”h]”hŒ,Note, that list is expected to be not empty.”…”�”}”(hj¦Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hj¾Lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_last_entry (C macro)”Œc.list_last_entry”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_last_entry”h]”jT)�”}”(hŒlist_last_entry”h]”jZ)�”}”(hŒlist_last_entry”h]”j`)�”}”(hjÏMh]”hŒlist_last_entry”…”�”}”(hjÙMh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÕMubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÑMh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M–ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÍMh²hh³jìMh´M–ubah}”(h]”jÈMah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jìMh´M–hjÊMh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjÊMh²hh³jìMh´M–ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjNj jNj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ'``list_last_entry (ptr, type, member)``”h]”j$)�”}”(hj Nh]”hŒ#list_last_entry (ptr, type, member)”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M˜hj&h²hubj½)�”}”(hŒ!get the last element from a list ”h]”j)�”}”(hŒ get the last element from a list”h]”hŒ get the last element from a list”…”�”}”(hj%Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M–hj!Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j3Nh´M–hj&h²hubj)�”}”(hŒó**Parameters** ``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. **Description** Note, that list is expected to be not empty.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj@Nh]”hŒ Parameters”…”�”}”(hjBNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mšhj:Nubj&)�”}”(hhh]”(j+)�”}”(hŒ0``ptr`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``ptr``”h]”j$)�”}”(hj_Nh]”hŒptr”…”�”}”(hjaNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj]Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M—hjYNubjK)�”}”(hhh]”j)�”}”(hŒ'the list head to take the element from.”h]”hŒ'the list head to take the element from.”…”�”}”(hjxNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jtNh´M—hjuNubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjYNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jtNh´M—hjVNubj+)�”}”(hŒ5``type`` the type of the struct this is embedded in. ”h]”(j1)�”}”(hŒ``type``”h]”j$)�”}”(hj˜Nh]”hŒtype”…”�”}”(hjšNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj–Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M˜hj’NubjK)�”}”(hhh]”j)�”}”(hŒ+the type of the struct this is embedded in.”h]”hŒ+the type of the struct this is embedded in.”…”�”}”(hj±Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j­Nh´M˜hj®Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj’Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j­Nh´M˜hjVNubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjÑNh]”hŒmember”…”�”}”(hjÓNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÏNubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M™hjËNubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”•h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjêNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jæNh´M™hjçNubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjËNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jæNh´M™hjVNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj:Nubj)�”}”(hŒ**Description**”h]”j)�”}”(hj Oh]”hŒ Description”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Oubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M›hj:Nubj)�”}”(hŒ,Note, that list is expected to be not empty.”h]”hŒ,Note, that list is expected to be not empty.”…”�”}”(hj"Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mšhj:Nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ"list_first_entry_or_null (C macro)”Œc.list_first_entry_or_null”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_first_entry_or_null”h]”jT)�”}”(hŒlist_first_entry_or_null”h]”jZ)�”}”(hŒlist_first_entry_or_null”h]”j`)�”}”(hjKOh]”hŒlist_first_entry_or_null”…”�”}”(hjUOh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjQOubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjMOh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¡ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjIOh²hh³jhOh´M¡ubah}”(h]”jDOah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jhOh´M¡hjFOh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjFOh²hh³jhOh´M¡ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj�Oj j�Oj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ0``list_first_entry_or_null (ptr, type, member)``”h]”j$)�”}”(hj‡Oh]”hŒ,list_first_entry_or_null (ptr, type, member)”…”�”}”(hj‰Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj…Oubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M£hj&h²hubj½)�”}”(hŒ"get the first element from a list ”h]”j)�”}”(hŒ!get the first element from a list”h]”hŒ!get the first element from a list”…”�”}”(hj¡Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¡hj�Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j¯Oh´M¡hj&h²hubj)�”}”(hŒ÷**Parameters** ``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. **Description** Note that if the list is empty, it returns NULL.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj¼Oh]”hŒ Parameters”…”�”}”(hj¾Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºOubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¥hj¶Oubj&)�”}”(hhh]”(j+)�”}”(hŒ0``ptr`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``ptr``”h]”j$)�”}”(hjÛOh]”hŒptr”…”�”}”(hjÝOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÙOubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¢hjÕOubjK)�”}”(hhh]”j)�”}”(hŒ'the list head to take the element from.”h]”hŒ'the list head to take the element from.”…”�”}”(hjôOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jðOh´M¢hjñOubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÕOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jðOh´M¢hjÒOubj+)�”}”(hŒ5``type`` the type of the struct this is embedded in. ”h]”(j1)�”}”(hŒ``type``”h]”j$)�”}”(hjPh]”hŒtype”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M£hjPubjK)�”}”(hhh]”j)�”}”(hŒ+the type of the struct this is embedded in.”h]”hŒ+the type of the struct this is embedded in.”…”�”}”(hj-Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j)Ph´M£hj*Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j)Ph´M£hjÒOubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjMPh]”hŒmember”…”�”}”(hjOPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjKPubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¤hjGPubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjfPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jbPh´M¤hjcPubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjGPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jbPh´M¤hjÒOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¶Oubj)�”}”(hŒ**Description**”h]”j)�”}”(hjˆPh]”hŒ Description”…”�”}”(hjŠPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¦hj¶Oubj)�”}”(hŒ0Note that if the list is empty, it returns NULL.”h]”hŒ0Note that if the list is empty, it returns NULL.”…”�”}”(hjžPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¥hj¶Oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ*list_first_entry_or_null_acquire (C macro)”Œ"c.list_first_entry_or_null_acquire”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ list_first_entry_or_null_acquire”h]”jT)�”}”(hŒ list_first_entry_or_null_acquire”h]”jZ)�”}”(hŒ list_first_entry_or_null_acquire”h]”j`)�”}”(hjÇPh]”hŒ list_first_entry_or_null_acquire”…”�”}”(hjÑPh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÍPubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÉPh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¯ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÅPh²hh³jäPh´M¯ubah}”(h]”jÀPah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jäPh´M¯hjÂPh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjÂPh²hh³jäPh´M¯ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjýPj jýPj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ8``list_first_entry_or_null_acquire (ptr, type, member)``”h]”j$)�”}”(hjQh]”hŒ4list_first_entry_or_null_acquire (ptr, type, member)”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M±hj&h²hubj½)�”}”(hŒ/get the first element from a list with barrier ”h]”j)�”}”(hŒ.get the first element from a list with barrier”h]”hŒ.get the first element from a list with barrier”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¯hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j+Qh´M¯hj&h²hubj)�”}”(hŒ÷**Parameters** ``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. **Description** Note that if the list is empty, it returns NULL.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj8Qh]”hŒ Parameters”…”�”}”(hj:Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6Qubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M³hj2Qubj&)�”}”(hhh]”(j+)�”}”(hŒ0``ptr`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``ptr``”h]”j$)�”}”(hjWQh]”hŒptr”…”�”}”(hjYQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjUQubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M°hjQQubjK)�”}”(hhh]”j)�”}”(hŒ'the list head to take the element from.”h]”hŒ'the list head to take the element from.”…”�”}”(hjpQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jlQh´M°hjmQubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjQQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jlQh´M°hjNQubj+)�”}”(hŒ5``type`` the type of the struct this is embedded in. ”h]”(j1)�”}”(hŒ``type``”h]”j$)�”}”(hj�Qh]”hŒtype”…”�”}”(hj’Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjŽQubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M±hjŠQubjK)�”}”(hhh]”j)�”}”(hŒ+the type of the struct this is embedded in.”h]”hŒ+the type of the struct this is embedded in.”…”�”}”(hj©Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j¥Qh´M±hj¦Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjŠQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¥Qh´M±hjNQubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjÉQh]”hŒmember”…”�”}”(hjËQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÇQubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M²hjÃQubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjâQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÞQh´M²hjßQubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÃQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÞQh´M²hjNQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj2Qubj)�”}”(hŒ**Description**”h]”j)�”}”(hjRh]”hŒ Description”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M´hj2Qubj)�”}”(hŒ0Note that if the list is empty, it returns NULL.”h]”hŒ0Note that if the list is empty, it returns NULL.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M³hj2Qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ!list_last_entry_or_null (C macro)”Œc.list_last_entry_or_null”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_last_entry_or_null”h]”jT)�”}”(hŒlist_last_entry_or_null”h]”jZ)�”}”(hŒlist_last_entry_or_null”h]”j`)�”}”(hjCRh]”hŒlist_last_entry_or_null”…”�”}”(hjMRh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjIRubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjERh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M½ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjARh²hh³j`Rh´M½ubah}”(h]”jRh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj>Rh²hh³j`Rh´M½ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjyRj jyRj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ/``list_last_entry_or_null (ptr, type, member)``”h]”j$)�”}”(hjRh]”hŒ+list_last_entry_or_null (ptr, type, member)”…”�”}”(hj�Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj}Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¿hj&h²hubj½)�”}”(hŒ!get the last element from a list ”h]”j)�”}”(hŒ get the last element from a list”h]”hŒ get the last element from a list”…”�”}”(hj™Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M½hj•Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j§Rh´M½hj&h²hubj)�”}”(hŒ÷**Parameters** ``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. **Description** Note that if the list is empty, it returns NULL.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj´Rh]”hŒ Parameters”…”�”}”(hj¶Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÁhj®Rubj&)�”}”(hhh]”(j+)�”}”(hŒ0``ptr`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``ptr``”h]”j$)�”}”(hjÓRh]”hŒptr”…”�”}”(hjÕRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÑRubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¾hjÍRubjK)�”}”(hhh]”j)�”}”(hŒ'the list head to take the element from.”h]”hŒ'the list head to take the element from.”…”�”}”(hjìRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jèRh´M¾hjéRubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÍRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jèRh´M¾hjÊRubj+)�”}”(hŒ5``type`` the type of the struct this is embedded in. ”h]”(j1)�”}”(hŒ``type``”h]”j$)�”}”(hj Sh]”hŒtype”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj Subah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¿hjSubjK)�”}”(hhh]”j)�”}”(hŒ+the type of the struct this is embedded in.”h]”hŒ+the type of the struct this is embedded in.”…”�”}”(hj%Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j!Sh´M¿hj"Subah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j!Sh´M¿hjÊRubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjESh]”hŒmember”…”�”}”(hjGSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjCSubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÀhj?SubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj^Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jZSh´MÀhj[Subah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj?Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jZSh´MÀhjÊRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj®Rubj)�”}”(hŒ**Description**”h]”j)�”}”(hj€Sh]”hŒ Description”…”�”}”(hj‚Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~Subah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÂhj®Rubj)�”}”(hŒ0Note that if the list is empty, it returns NULL.”h]”hŒ0Note that if the list is empty, it returns NULL.”…”�”}”(hj–Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÁhj®Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_next_entry (C macro)”Œc.list_next_entry”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_next_entry”h]”jT)�”}”(hŒlist_next_entry”h]”jZ)�”}”(hŒlist_next_entry”h]”j`)�”}”(hj¿Sh]”hŒlist_next_entry”…”�”}”(hjÉSh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÅSubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÁSh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MËubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj½Sh²hh³jÜSh´MËubah}”(h]”j¸Sah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jÜSh´MËhjºSh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjºSh²hh³jÜSh´MËubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjõSj jõSj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ!``list_next_entry (pos, member)``”h]”j$)�”}”(hjûSh]”hŒlist_next_entry (pos, member)”…”�”}”(hjýSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjùSubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÍhj&h²hubj½)�”}”(hŒget the next element in list ”h]”j)�”}”(hŒget the next element in list”h]”hŒget the next element in list”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MËhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j#Th´MËhj&h²hubj)�”}”(hŒi**Parameters** ``pos`` the type * to cursor ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj0Th]”hŒ Parameters”…”�”}”(hj2Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÏhj*Tubj&)�”}”(hhh]”(j+)�”}”(hŒ``pos`` the type * to cursor ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjOTh]”hŒpos”…”�”}”(hjQTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjMTubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÌhjITubjK)�”}”(hhh]”j)�”}”(hŒthe type * to cursor”h]”hŒthe type * to cursor”…”�”}”(hjhTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jdTh´MÌhjeTubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjITubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jdTh´MÌhjFTubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjˆTh]”hŒmember”…”�”}”(hjŠTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj†Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÎhj‚TubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj¡Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÍhjžTubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj‚Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j�Th´MÎhjFTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj*Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ"list_next_entry_circular (C macro)”Œc.list_next_entry_circular”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_next_entry_circular”h]”jT)�”}”(hŒlist_next_entry_circular”h]”jZ)�”}”(hŒlist_next_entry_circular”h]”j`)�”}”(hjÜTh]”hŒlist_next_entry_circular”…”�”}”(hjæTh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjâTubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÞTh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÓubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÚTh²hh³jùTh´MÓubah}”(h]”jÕTah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jùTh´MÓhj×Th²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj×Th²hh³jùTh´MÓubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjUj jUj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ0``list_next_entry_circular (pos, head, member)``”h]”j$)�”}”(hjUh]”hŒ,list_next_entry_circular (pos, head, member)”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÕhj&h²hubj½)�”}”(hŒget the next element in list ”h]”j)�”}”(hŒget the next element in list”h]”hŒget the next element in list”…”�”}”(hj2Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÓhj.Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j@Uh´MÓhj&h²hubj)�”}”(hX**Parameters** ``pos`` the type * to cursor. ``head`` the list head to take the element from. ``member`` the name of the list_head within the struct. **Description** Wraparound if pos is the last element (return the first element). Note, that list is expected to be not empty.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjMUh]”hŒ Parameters”…”�”}”(hjOUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKUubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M×hjGUubj&)�”}”(hhh]”(j+)�”}”(hŒ``pos`` the type * to cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjlUh]”hŒpos”…”�”}”(hjnUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÔhjfUubjK)�”}”(hhh]”j)�”}”(hŒthe type * to cursor.”h]”hŒthe type * to cursor.”…”�”}”(hj…Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j�Uh´MÔhj‚Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjfUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j�Uh´MÔhjcUubj+)�”}”(hŒ1``head`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj¥Uh]”hŒhead”…”�”}”(hj§Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj£Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÕhjŸUubjK)�”}”(hhh]”j)�”}”(hŒ'the list head to take the element from.”h]”hŒ'the list head to take the element from.”…”�”}”(hj¾Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jºUh´MÕhj»Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjŸUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jºUh´MÕhjcUubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjÞUh]”hŒmember”…”�”}”(hjàUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÜUubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÖhjØUubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj÷Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jóUh´MÖhjôUubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjØUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jóUh´MÖhjcUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjGUubj)�”}”(hŒ**Description**”h]”j)�”}”(hjVh]”hŒ Description”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MØhjGUubj)�”}”(hŒnWraparound if pos is the last element (return the first element). Note, that list is expected to be not empty.”h]”hŒnWraparound if pos is the last element (return the first element). Note, that list is expected to be not empty.”…”�”}”(hj/Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M×hjGUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_prev_entry (C macro)”Œc.list_prev_entry”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_prev_entry”h]”jT)�”}”(hŒlist_prev_entry”h]”jZ)�”}”(hŒlist_prev_entry”h]”j`)�”}”(hjXVh]”hŒlist_prev_entry”…”�”}”(hjbVh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj^Vubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjZVh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Màubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjVVh²hh³juVh´Màubah}”(h]”jQVah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³juVh´MàhjSVh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjSVh²hh³juVh´Màubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjŽVj jŽVj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ!``list_prev_entry (pos, member)``”h]”j$)�”}”(hj”Vh]”hŒlist_prev_entry (pos, member)”…”�”}”(hj–Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj’Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mâhj&h²hubj½)�”}”(hŒget the prev element in list ”h]”j)�”}”(hŒget the prev element in list”h]”hŒget the prev element in list”…”�”}”(hj®Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MàhjªVubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j¼Vh´Màhj&h²hubj)�”}”(hŒi**Parameters** ``pos`` the type * to cursor ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÉVh]”hŒ Parameters”…”�”}”(hjËVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇVubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MähjÃVubj&)�”}”(hhh]”(j+)�”}”(hŒ``pos`` the type * to cursor ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjèVh]”hŒpos”…”�”}”(hjêVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjæVubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MáhjâVubjK)�”}”(hhh]”j)�”}”(hŒthe type * to cursor”h]”hŒthe type * to cursor”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jýVh´MáhjþVubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjâVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jýVh´MáhjßVubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj!Wh]”hŒmember”…”�”}”(hj#Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MãhjWubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj:Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mâhj7Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j6Wh´MãhjßVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÃVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ"list_prev_entry_circular (C macro)”Œc.list_prev_entry_circular”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_prev_entry_circular”h]”jT)�”}”(hŒlist_prev_entry_circular”h]”jZ)�”}”(hŒlist_prev_entry_circular”h]”j`)�”}”(hjuWh]”hŒlist_prev_entry_circular”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj{Wubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjwWh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mèubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjsWh²hh³j’Wh´Mèubah}”(h]”jnWah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j’Wh´MèhjpWh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjpWh²hh³j’Wh´Mèubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj«Wj j«Wj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ0``list_prev_entry_circular (pos, head, member)``”h]”j$)�”}”(hj±Wh]”hŒ,list_prev_entry_circular (pos, head, member)”…”�”}”(hj³Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¯Wubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mêhj&h²hubj½)�”}”(hŒget the prev element in list ”h]”j)�”}”(hŒget the prev element in list”h]”hŒget the prev element in list”…”�”}”(hjËWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MèhjÇWubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jÙWh´Mèhj&h²hubj)�”}”(hX**Parameters** ``pos`` the type * to cursor. ``head`` the list head to take the element from. ``member`` the name of the list_head within the struct. **Description** Wraparound if pos is the first element (return the last element). Note, that list is expected to be not empty.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjæWh]”hŒ Parameters”…”�”}”(hjèWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäWubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MìhjàWubj&)�”}”(hhh]”(j+)�”}”(hŒ``pos`` the type * to cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjXh]”hŒpos”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MéhjÿWubjK)�”}”(hhh]”j)�”}”(hŒthe type * to cursor.”h]”hŒthe type * to cursor.”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jXh´MéhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÿWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jXh´MéhjüWubj+)�”}”(hŒ1``head`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj>Xh]”hŒhead”…”�”}”(hj@Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj` to use as a loop cursor. ``head`` the head for your list.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjbYh]”hŒ Parameters”…”�”}”(hjdYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`Yubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mùhj\Yubj&)�”}”(hhh]”(j+)�”}”(hŒL``pos`` the :c:type:`struct list_head ` to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj�Yh]”hŒpos”…”�”}”(hjƒYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Möhj{YubjK)�”}”(hhh]”j)�”}”(hŒCthe :c:type:`struct list_head ` to use as a loop cursor.”h]”(hŒthe ”…”�”}”(hjšYh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hj¤Yh]”hŒstruct list_head”…”�”}”(hj¦Yh²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hj¢Yubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³j–Yh´MöhjšYubhŒ to use as a loop cursor.”…”�”}”(hjšYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j–Yh´Möhj—Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj{Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j–Yh´MöhjxYubj+)�”}”(hŒ ``head`` the head for your list.”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjÝYh]”hŒhead”…”�”}”(hjßYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÛYubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Møhj×YubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjöYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M÷hjóYubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj×Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jòYh´MøhjxYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj\Yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ list_for_each_continue (C macro)”Œc.list_for_each_continue”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_for_each_continue”h]”jT)�”}”(hŒlist_for_each_continue”h]”jZ)�”}”(hŒlist_for_each_continue”h]”j`)�”}”(hj1Zh]”hŒlist_for_each_continue”…”�”}”(hj;Zh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj7Zubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj3Zh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mýubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj/Zh²hh³jNZh´Mýubah}”(h]”j*Zah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jNZh´Mýhj,Zh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj,Zh²hh³jNZh´Mýubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjgZj jgZj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ&``list_for_each_continue (pos, head)``”h]”j$)�”}”(hjmZh]”hŒ"list_for_each_continue (pos, head)”…”�”}”(hjoZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjkZubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mÿhj&h²hubj½)�”}”(hŒcontinue iteration over a list ”h]”j)�”}”(hŒcontinue iteration over a list”h]”hŒcontinue iteration over a list”…”�”}”(hj‡Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MýhjƒZubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j•Zh´Mýhj&h²hubj)�”}”(hŒÛ**Parameters** ``pos`` the :c:type:`struct list_head ` to use as a loop cursor. ``head`` the head for your list. **Description** Continue to iterate over a list, continuing after the current position.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj¢Zh]”hŒ Parameters”…”�”}”(hj¤Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Zubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjœZubj&)�”}”(hhh]”(j+)�”}”(hŒL``pos`` the :c:type:`struct list_head ` to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjÁZh]”hŒpos”…”�”}”(hjÃZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¿Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mþhj»ZubjK)�”}”(hhh]”j)�”}”(hŒCthe :c:type:`struct list_head ` to use as a loop cursor.”h]”(hŒthe ”…”�”}”(hjÚZh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hjäZh]”hŒstruct list_head”…”�”}”(hjæZh²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hjâZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³jÖZh´MþhjÚZubhŒ to use as a loop cursor.”…”�”}”(hjÚZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÖZh´Mþhj×Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj»Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÖZh´Mþhj¸Zubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj[h]”hŒhead”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjbah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mÿhj[ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj6[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j2[h´Mÿhj3[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j2[h´Mÿhj¸Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjœZubj)�”}”(hŒ**Description**”h]”j)�”}”(hjX[h]”hŒ Description”…”�”}”(hjZ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjV[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjœZubj)�”}”(hŒGContinue to iterate over a list, continuing after the current position.”h]”hŒGContinue to iterate over a list, continuing after the current position.”…”�”}”(hjn[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjœZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_for_each_prev (C macro)”Œc.list_for_each_prev”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_for_each_prev”h]”jT)�”}”(hŒlist_for_each_prev”h]”jZ)�”}”(hŒlist_for_each_prev”h]”j`)�”}”(hj—[h]”hŒlist_for_each_prev”…”�”}”(hj¡[h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�[ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj™[h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj•[h²hh³j´[h´Mubah}”(h]”j�[ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j´[h´Mhj’[h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj’[h²hh³j´[h´Mubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjÍ[j jÍ[j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ"``list_for_each_prev (pos, head)``”h]”j$)�”}”(hjÓ[h]”hŒlist_for_each_prev (pos, head)”…”�”}”(hjÕ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÑ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hj&h²hubj½)�”}”(hŒiterate over a list backwards ”h]”j)�”}”(hŒiterate over a list backwards”h]”hŒiterate over a list backwards”…”�”}”(hjí[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhjé[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jû[h´Mhj&h²hubj)�”}”(hŒ�**Parameters** ``pos`` the :c:type:`struct list_head ` to use as a loop cursor. ``head`` the head for your list.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj\h]”hŒ Parameters”…”�”}”(hj \h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hj\ubj&)�”}”(hhh]”(j+)�”}”(hŒL``pos`` the :c:type:`struct list_head ` to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj'\h]”hŒpos”…”�”}”(hj)\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj%\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj!\ubjK)�”}”(hhh]”j)�”}”(hŒCthe :c:type:`struct list_head ` to use as a loop cursor.”h]”(hŒthe ”…”�”}”(hj@\h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hjJ\h]”hŒstruct list_head”…”�”}”(hjL\h²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hjH\ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³j<\h´Mhj@\ubhŒ to use as a loop cursor.”…”�”}”(hj@\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j<\h´Mhj=\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj!\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j<\h´Mhj\ubj+)�”}”(hŒ ``head`` the head for your list.”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjƒ\h]”hŒhead”…”�”}”(hj…\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj�\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hj}\ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjœ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hj™\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj}\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j˜\h´M hj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_for_each_safe (C macro)”Œc.list_for_each_safe”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_for_each_safe”h]”jT)�”}”(hŒlist_for_each_safe”h]”jZ)�”}”(hŒlist_for_each_safe”h]”j`)�”}”(hj×\h]”hŒlist_for_each_safe”…”�”}”(hjá\h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÝ\ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÙ\h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÕ\h²hh³jô\h´Mubah}”(h]”jÐ\ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jô\h´MhjÒ\h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjÒ\h²hh³jô\h´Mubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj ]j j ]j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ%``list_for_each_safe (pos, n, head)``”h]”j$)�”}”(hj]h]”hŒ!list_for_each_safe (pos, n, head)”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj&h²hubj½)�”}”(hŒ7iterate over a list safe against removal of list entry ”h]”j)�”}”(hŒ6iterate over a list safe against removal of list entry”h]”hŒ6iterate over a list safe against removal of list entry”…”�”}”(hj-]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj)]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j;]h´Mhj&h²hubj)�”}”(hŒÕ**Parameters** ``pos`` the :c:type:`struct list_head ` to use as a loop cursor. ``n`` another :c:type:`struct list_head ` to use as temporary storage ``head`` the head for your list.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjH]h]”hŒ Parameters”…”�”}”(hjJ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjF]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjB]ubj&)�”}”(hhh]”(j+)�”}”(hŒL``pos`` the :c:type:`struct list_head ` to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjg]h]”hŒpos”…”�”}”(hji]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hje]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhja]ubjK)�”}”(hhh]”j)�”}”(hŒCthe :c:type:`struct list_head ` to use as a loop cursor.”h]”(hŒthe ”…”�”}”(hj€]h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hjŠ]h]”hŒstruct list_head”…”�”}”(hjŒ]h²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hjˆ]ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³j|]h´Mhj€]ubhŒ to use as a loop cursor.”…”�”}”(hj€]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j|]h´Mhj}]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhja]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j|]h´Mhj^]ubj+)�”}”(hŒQ``n`` another :c:type:`struct list_head ` to use as temporary storage ”h]”(j1)�”}”(hŒ``n``”h]”j$)�”}”(hjÃ]h]”hŒn”…”�”}”(hjÅ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÁ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj½]ubjK)�”}”(hhh]”j)�”}”(hŒJanother :c:type:`struct list_head ` to use as temporary storage”h]”(hŒanother ”…”�”}”(hjÜ]h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hjæ]h]”hŒstruct list_head”…”�”}”(hjè]h²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hjä]ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³jØ]h´MhjÜ]ubhŒ to use as temporary storage”…”�”}”(hjÜ]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jØ]h´MhjÙ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj½]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jØ]h´Mhj^]ubj+)�”}”(hŒ ``head`` the head for your list.”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj^h]”hŒhead”…”�”}”(hj!^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj^ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj8^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj5^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j4^h´Mhj^]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjB]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ!list_for_each_prev_safe (C macro)”Œc.list_for_each_prev_safe”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_for_each_prev_safe”h]”jT)�”}”(hŒlist_for_each_prev_safe”h]”jZ)�”}”(hŒlist_for_each_prev_safe”h]”j`)�”}”(hjs^h]”hŒlist_for_each_prev_safe”…”�”}”(hj}^h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjy^ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhju^h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjq^h²hh³j�^h´Mubah}”(h]”jl^ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j�^h´Mhjn^h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjn^h²hh³j�^h´Mubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj©^j j©^j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ*``list_for_each_prev_safe (pos, n, head)``”h]”j$)�”}”(hj¯^h]”hŒ&list_for_each_prev_safe (pos, n, head)”…”�”}”(hj±^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj­^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj&h²hubj½)�”}”(hŒAiterate over a list backwards safe against removal of list entry ”h]”j)�”}”(hŒ@iterate over a list backwards safe against removal of list entry”h]”hŒ@iterate over a list backwards safe against removal of list entry”…”�”}”(hjÉ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÅ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j×^h´Mhj&h²hubj)�”}”(hŒÕ**Parameters** ``pos`` the :c:type:`struct list_head ` to use as a loop cursor. ``n`` another :c:type:`struct list_head ` to use as temporary storage ``head`` the head for your list.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjä^h]”hŒ Parameters”…”�”}”(hjæ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÞ^ubj&)�”}”(hhh]”(j+)�”}”(hŒL``pos`` the :c:type:`struct list_head ` to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj_h]”hŒpos”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhjý^ubjK)�”}”(hhh]”j)�”}”(hŒCthe :c:type:`struct list_head ` to use as a loop cursor.”h]”(hŒthe ”…”�”}”(hj_h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hj&_h]”hŒstruct list_head”…”�”}”(hj(_h²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hj$_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³j_h´Mhj_ubhŒ to use as a loop cursor.”…”�”}”(hj_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j_h´Mhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjý^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j_h´Mhjú^ubj+)�”}”(hŒQ``n`` another :c:type:`struct list_head ` to use as temporary storage ”h]”(j1)�”}”(hŒ``n``”h]”j$)�”}”(hj__h]”hŒn”…”�”}”(hja_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj]_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjY_ubjK)�”}”(hhh]”j)�”}”(hŒJanother :c:type:`struct list_head ` to use as temporary storage”h]”(hŒanother ”…”�”}”(hjx_h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hj‚_h]”hŒstruct list_head”…”�”}”(hj„_h²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hj€_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³jt_h´Mhjx_ubhŒ to use as temporary storage”…”�”}”(hjx_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jt_h´Mhju_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjY_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jt_h´Mhjú^ubj+)�”}”(hŒ ``head`` the head for your list.”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj»_h]”hŒhead”…”�”}”(hj½_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¹_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhjµ_ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjÔ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÑ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjµ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÐ_h´Mhjú^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÞ^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_count_nodes (C function)”Œc.list_count_nodes”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ0size_t list_count_nodes (struct list_head *head)”h]”jT)�”}”(hŒ/size_t list_count_nodes(struct list_head *head)”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j`Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVŒlist_count_nodes”sbŒc.list_count_nodes”†”asbuh1hhj`h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M%ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:`h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj`h²hh³j9`h´M%ubjZ)�”}”(hŒlist_count_nodes”h]”j`)�”}”(hj6`h]”hŒlist_count_nodes”…”�”}”(hjL`h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjH`ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj`h²hh³j9`h´M%ubj)�”}”(hŒ(struct list_head *head)”h]”j)�”}”(hŒstruct list_head *head”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjg`h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjc`ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt`h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjc`ubh)�”}”(hhh]”j`)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj…`h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj‚`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j‡`Œmodname”NŒ classname”Njêjí)�”}”jð]”j4`Œc.list_count_nodes”†”asbuh1hhjc`ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£`h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjc`ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj±`h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjc`ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj¾`h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjc`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj_`ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj`h²hh³j9`h´M%ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj `h²hh³j9`h´M%ubah}”(h]”j`ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j9`h´M%hj `h²hubj�)�”}”(hhh]”j)�”}”(hŒcount nodes in the list”h]”hŒcount nodes in the list”…”�”}”(hjè`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M%hjå`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj `h²hh³j9`h´M%ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjaj jaj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒD**Parameters** ``struct list_head *head`` the head for your list.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj ah]”hŒ Parameters”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M)hjaubj&)�”}”(hhh]”j+)�”}”(hŒ2``struct list_head *head`` the head for your list.”h]”(j1)�”}”(hŒ``struct list_head *head``”h]”j$)�”}”(hj)ah]”hŒstruct list_head *head”…”�”}”(hj+ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj'aubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M+hj#aubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjBah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M&hj?aubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj#aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j>ah´M+hj aubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_entry_is_head (C macro)”Œc.list_entry_is_head”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_entry_is_head”h]”jT)�”}”(hŒlist_entry_is_head”h]”jZ)�”}”(hŒlist_entry_is_head”h]”j`)�”}”(hj}ah]”hŒlist_entry_is_head”…”�”}”(hj‡ah²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjƒaubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjah²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M4ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj{ah²hh³jšah´M4ubah}”(h]”jvaah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jšah´M4hjxah²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjxah²hh³jšah´M4ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj³aj j³aj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ*``list_entry_is_head (pos, head, member)``”h]”j$)�”}”(hj¹ah]”hŒ&list_entry_is_head (pos, head, member)”…”�”}”(hj»ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj·aubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M6hj&h²hubj½)�”}”(hŒ1test if the entry points to the head of the list ”h]”j)�”}”(hŒ0test if the entry points to the head of the list”h]”hŒ0test if the entry points to the head of the list”…”�”}”(hjÓah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M4hjÏaubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jáah´M4hj&h²hubj)�”}”(hŒ�**Parameters** ``pos`` the type * to cursor ``head`` the head for your list. ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjîah]”hŒ Parameters”…”�”}”(hjðah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìaubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M8hjèaubj&)�”}”(hhh]”(j+)�”}”(hŒ``pos`` the type * to cursor ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj bh]”hŒpos”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj bubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M5hjbubjK)�”}”(hhh]”j)�”}”(hŒthe type * to cursor”h]”hŒthe type * to cursor”…”�”}”(hj&bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j"bh´M5hj#bubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j"bh´M5hjbubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjFbh]”hŒhead”…”�”}”(hjHbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjDbubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M6hj@bubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj_bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j[bh´M6hj\bubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj@bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j[bh´M6hjbubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjbh]”hŒmember”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj}bubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M8hjybubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj˜bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M7hj•bubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjybubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j”bh´M8hjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjèaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_for_each_entry (C macro)”Œc.list_for_each_entry”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_for_each_entry”h]”jT)�”}”(hŒlist_for_each_entry”h]”jZ)�”}”(hŒlist_for_each_entry”h]”j`)�”}”(hjÓbh]”hŒlist_for_each_entry”…”�”}”(hjÝbh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÙbubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÕbh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M=ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÑbh²hh³jðbh´M=ubah}”(h]”jÌbah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jðbh´M=hjÎbh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjÎbh²hh³jðbh´M=ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj cj j cj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ+``list_for_each_entry (pos, head, member)``”h]”j$)�”}”(hjch]”hŒ'list_for_each_entry (pos, head, member)”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj cubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M?hj&h²hubj½)�”}”(hŒ iterate over list of given type ”h]”j)�”}”(hŒiterate over list of given type”h]”hŒiterate over list of given type”…”�”}”(hj)ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M=hj%cubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j7ch´M=hj&h²hubj)�”}”(hŒœ**Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjDch]”hŒ Parameters”…”�”}”(hjFch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBcubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MAhj>cubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjcch]”hŒpos”…”�”}”(hjech²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjacubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M>hj]cubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hj|ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jxch´M>hjycubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj]cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jxch´M>hjZcubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjœch]”hŒhead”…”�”}”(hjžch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjšcubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”•rh´M?hj–cubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjµch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j±ch´M?hj²cubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj–cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j±ch´M?hjZcubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjÕch]”hŒmember”…”�”}”(hj×ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÓcubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MAhjÏcubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjîch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M@hjëcubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÏcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jêch´MAhjZcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj>cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ%list_for_each_entry_reverse (C macro)”Œc.list_for_each_entry_reverse”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_for_each_entry_reverse”h]”jT)�”}”(hŒlist_for_each_entry_reverse”h]”jZ)�”}”(hŒlist_for_each_entry_reverse”h]”j`)�”}”(hj)dh]”hŒlist_for_each_entry_reverse”…”�”}”(hj3dh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj/dubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj+dh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MHubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj'dh²hh³jFdh´MHubah}”(h]”j"dah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jFdh´MHhj$dh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj$dh²hh³jFdh´MHubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj_dj j_dj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ3``list_for_each_entry_reverse (pos, head, member)``”h]”j$)�”}”(hjedh]”hŒ/list_for_each_entry_reverse (pos, head, member)”…”�”}”(hjgdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjcdubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MJhj&h²hubj½)�”}”(hŒ+iterate backwards over list of given type. ”h]”j)�”}”(hŒ*iterate backwards over list of given type.”h]”hŒ*iterate backwards over list of given type.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MHhj{dubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j�dh´MHhj&h²hubj)�”}”(hŒœ**Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjšdh]”hŒ Parameters”…”�”}”(hjœdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜dubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MLhj”dubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj¹dh]”hŒpos”…”�”}”(hj»dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj·dubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MIhj³dubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjÒdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÎdh´MIhjÏdubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj³dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÎdh´MIhj°dubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjòdh]”hŒhead”…”�”}”(hjôdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjðdubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MJhjìdubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jeh´MJhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjìdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jeh´MJhj°dubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj+eh]”hŒmember”…”�”}”(hj-eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj)eubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MLhj%eubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjDeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MKhjAeubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj%eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j@eh´MLhj°dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj”dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_prepare_entry (C macro)”Œc.list_prepare_entry”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_prepare_entry”h]”jT)�”}”(hŒlist_prepare_entry”h]”jZ)�”}”(hŒlist_prepare_entry”h]”j`)�”}”(hjeh]”hŒlist_prepare_entry”…”�”}”(hj‰eh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj…eubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj�eh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MSubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj}eh²hh³jœeh´MSubah}”(h]”jxeah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jœeh´MShjzeh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjzeh²hh³jœeh´MSubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjµej jµej¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ*``list_prepare_entry (pos, head, member)``”h]”j$)�”}”(hj»eh]”hŒ&list_prepare_entry (pos, head, member)”…”�”}”(hj½eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¹eubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MUhj&h²hubj½)�”}”(hŒ>prepare a pos entry for use in list_for_each_entry_continue() ”h]”j)�”}”(hŒ=prepare a pos entry for use in list_for_each_entry_continue()”h]”hŒ=prepare a pos entry for use in list_for_each_entry_continue()”…”�”}”(hjÕeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MShjÑeubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jãeh´MShj&h²hubj)�”}”(hŒû**Parameters** ``pos`` the type * to use as a start point ``head`` the head of the list ``member`` the name of the list_head within the struct. **Description** Prepares a pos entry for use as a start point in list_for_each_entry_continue().”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjðeh]”hŒ Parameters”…”�”}”(hjòeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîeubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MWhjêeubj&)�”}”(hhh]”(j+)�”}”(hŒ+``pos`` the type * to use as a start point ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjfh]”hŒpos”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj fubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MThj fubjK)�”}”(hhh]”j)�”}”(hŒ"the type * to use as a start point”h]”hŒ"the type * to use as a start point”…”�”}”(hj(fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j$fh´MThj%fubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j$fh´MThjfubj+)�”}”(hŒ``head`` the head of the list ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjHfh]”hŒhead”…”�”}”(hjJfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjFfubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MUhjBfubjK)�”}”(hhh]”j)�”}”(hŒthe head of the list”h]”hŒthe head of the list”…”�”}”(hjafh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j]fh´MUhj^fubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjBfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j]fh´MUhjfubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj�fh]”hŒmember”…”�”}”(hjƒfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MVhj{fubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjšfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j–fh´MVhj—fubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj{fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j–fh´MVhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjêeubj)�”}”(hŒ**Description**”h]”j)�”}”(hj¼fh]”hŒ Description”…”�”}”(hj¾fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºfubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MXhjêeubj)�”}”(hŒPPrepares a pos entry for use as a start point in list_for_each_entry_continue().”h]”hŒPPrepares a pos entry for use as a start point in list_for_each_entry_continue().”…”�”}”(hjÒfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MWhjêeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ&list_for_each_entry_continue (C macro)”Œc.list_for_each_entry_continue”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_for_each_entry_continue”h]”jT)�”}”(hŒlist_for_each_entry_continue”h]”jZ)�”}”(hŒlist_for_each_entry_continue”h]”j`)�”}”(hjûfh]”hŒlist_for_each_entry_continue”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjgubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjýfh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M^ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjùfh²hh³jgh´M^ubah}”(h]”jôfah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jgh´M^hjöfh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjöfh²hh³jgh´M^ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj1gj j1gj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ4``list_for_each_entry_continue (pos, head, member)``”h]”j$)�”}”(hj7gh]”hŒ0list_for_each_entry_continue (pos, head, member)”…”�”}”(hj9gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj5gubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M`hj&h²hubj½)�”}”(hŒ+continue iteration over list of given type ”h]”j)�”}”(hŒ*continue iteration over list of given type”h]”hŒ*continue iteration over list of given type”…”�”}”(hjQgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M^hjMgubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j_gh´M^hj&h²hubj)�”}”(hX**Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct. **Description** Continue to iterate over list of given type, continuing after the current position.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjlgh]”hŒ Parameters”…”�”}”(hjngh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjgubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mbhjfgubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj‹gh]”hŒpos”…”�”}”(hj�gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj‰gubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M_hj…gubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hj¤gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j gh´M_hj¡gubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj…gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j gh´M_hj‚gubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjÄgh]”hŒhead”…”�”}”(hjÆgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÂgubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M`hj¾gubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjÝgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÙgh´M`hjÚgubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj¾gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÙgh´M`hj‚gubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjýgh]”hŒmember”…”�”}”(hjÿgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjûgubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mahj÷gubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jhh´Mahjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj÷gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jhh´Mahj‚gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjfgubj)�”}”(hŒ**Description**”h]”j)�”}”(hj8hh]”hŒ Description”…”�”}”(hj:hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mchjfgubj)�”}”(hŒSContinue to iterate over list of given type, continuing after the current position.”h]”hŒSContinue to iterate over list of given type, continuing after the current position.”…”�”}”(hjNhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mbhjfgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ.list_for_each_entry_continue_reverse (C macro)”Œ&c.list_for_each_entry_continue_reverse”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ$list_for_each_entry_continue_reverse”h]”jT)�”}”(hŒ$list_for_each_entry_continue_reverse”h]”jZ)�”}”(hŒ$list_for_each_entry_continue_reverse”h]”j`)�”}”(hjwhh]”hŒ$list_for_each_entry_continue_reverse”…”�”}”(hj�hh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj}hubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjyhh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mlubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjuhh²hh³j”hh´Mlubah}”(h]”jphah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j”hh´Mlhjrhh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjrhh²hh³j”hh´Mlubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj­hj j­hj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ<``list_for_each_entry_continue_reverse (pos, head, member)``”h]”j$)�”}”(hj³hh]”hŒ8list_for_each_entry_continue_reverse (pos, head, member)”…”�”}”(hjµhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj±hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mnhj&h²hubj½)�”}”(hŒ'iterate backwards from the given point ”h]”j)�”}”(hŒ&iterate backwards from the given point”h]”hŒ&iterate backwards from the given point”…”�”}”(hjÍhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MlhjÉhubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jÛhh´Mlhj&h²hubj)�”}”(hX **Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct. **Description** Start to iterate over list of given type backwards, continuing after the current position.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjèhh]”hŒ Parameters”…”�”}”(hjêhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæhubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mphjâhubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjih]”hŒpos”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MmhjiubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jih´Mmhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jih´Mmhjþhubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj@ih]”hŒhead”…”�”}”(hjBih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj>iubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mnhj:iubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjYih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jUih´MnhjViubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj:iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jUih´Mnhjþhubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjyih]”hŒmember”…”�”}”(hj{ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjwiubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MohjsiubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj’ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jŽih´Mohj�iubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjsiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jŽih´Mohjþhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjâhubj)�”}”(hŒ**Description**”h]”j)�”}”(hj´ih]”hŒ Description”…”�”}”(hj¶ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj²iubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mqhjâhubj)�”}”(hŒZStart to iterate over list of given type backwards, continuing after the current position.”h]”hŒZStart to iterate over list of given type backwards, continuing after the current position.”…”�”}”(hjÊih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mphjâhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ"list_for_each_entry_from (C macro)”Œc.list_for_each_entry_from”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_for_each_entry_from”h]”jT)�”}”(hŒlist_for_each_entry_from”h]”jZ)�”}”(hŒlist_for_each_entry_from”h]”j`)�”}”(hjóih]”hŒlist_for_each_entry_from”…”�”}”(hjýih²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjùiubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjõih²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mzubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjñih²hh³jjh´Mzubah}”(h]”jìiah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jjh´Mzhjîih²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjîih²hh³jjh´Mzubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj)jj j)jj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ0``list_for_each_entry_from (pos, head, member)``”h]”j$)�”}”(hj/jh]”hŒ,list_for_each_entry_from (pos, head, member)”…”�”}”(hj1jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj-jubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M|hj&h²hubj½)�”}”(hŒ7iterate over list of given type from the current point ”h]”j)�”}”(hŒ6iterate over list of given type from the current point”h]”hŒ6iterate over list of given type from the current point”…”�”}”(hjIjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MzhjEjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jWjh´Mzhj&h²hubj)�”}”(hŒñ**Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct. **Description** Iterate over list of given type, continuing from current position.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjdjh]”hŒ Parameters”…”�”}”(hjfjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M~hj^jubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjƒjh]”hŒpos”…”�”}”(hj…jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj�jubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M{hj}jubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjœjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j˜jh´M{hj™jubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj}jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j˜jh´M{hjzjubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj¼jh]”hŒhead”…”�”}”(hj¾jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjºjubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M|hj¶jubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjÕjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÑjh´M|hjÒjubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj¶jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÑjh´M|hjzjubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjõjh]”hŒmember”…”�”}”(hj÷jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjójubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M}hjïjubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j kh´M}hj kubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjïjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j kh´M}hjzjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj^jubj)�”}”(hŒ**Description**”h]”j)�”}”(hj0kh]”hŒ Description”…”�”}”(hj2kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj^jubj)�”}”(hŒBIterate over list of given type, continuing from current position.”h]”hŒBIterate over list of given type, continuing from current position.”…”�”}”(hjFkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M~hj^jubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ*list_for_each_entry_from_reverse (C macro)”Œ"c.list_for_each_entry_from_reverse”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ list_for_each_entry_from_reverse”h]”jT)�”}”(hŒ list_for_each_entry_from_reverse”h]”jZ)�”}”(hŒ list_for_each_entry_from_reverse”h]”j`)�”}”(hjokh]”hŒ list_for_each_entry_from_reverse”…”�”}”(hjykh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjukubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjqkh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M†ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjmkh²hh³jŒkh´M†ubah}”(h]”jhkah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jŒkh´M†hjjkh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjjkh²hh³jŒkh´M†ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj¥kj j¥kj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ8``list_for_each_entry_from_reverse (pos, head, member)``”h]”j$)�”}”(hj«kh]”hŒ4list_for_each_entry_from_reverse (pos, head, member)”…”�”}”(hj­kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj©kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mˆhj&h²hubj½)�”}”(hŒAiterate backwards over list of given type from the current point ”h]”j)�”}”(hŒ@iterate backwards over list of given type from the current point”h]”hŒ@iterate backwards over list of given type from the current point”…”�”}”(hjÅkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M†hjÁkubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jÓkh´M†hj&h²hubj)�”}”(hŒû**Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct. **Description** Iterate backwards over list of given type, continuing from current position.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjàkh]”hŒ Parameters”…”�”}”(hjâkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞkubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŠhjÚkubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjÿkh]”hŒpos”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjýkubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MˆhjùkubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jlh´Mˆhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjùkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jlh´Mˆhjökubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj8lh]”hŒhead”…”�”}”(hj:lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj6lubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M‰hj2lubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjQlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jMlh´M‰hjNlubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj2lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jMlh´M‰hjökubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjqlh]”hŒmember”…”�”}”(hjslh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjolubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŠhjklubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjŠlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j†lh´MŠhj‡lubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjklubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j†lh´MŠhjökubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÚkubj)�”}”(hŒ**Description**”h]”j)�”}”(hj¬lh]”hŒ Description”…”�”}”(hj®lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªlubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŒhjÚkubj)�”}”(hŒLIterate backwards over list of given type, continuing from current position.”h]”hŒLIterate backwards over list of given type, continuing from current position.”…”�”}”(hjÂlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M‹hjÚkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ"list_for_each_entry_safe (C macro)”Œc.list_for_each_entry_safe”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_for_each_entry_safe”h]”jT)�”}”(hŒlist_for_each_entry_safe”h]”jZ)�”}”(hŒlist_for_each_entry_safe”h]”j`)�”}”(hjëlh]”hŒlist_for_each_entry_safe”…”�”}”(hjõlh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjñlubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjílh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M“ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjélh²hh³jmh´M“ubah}”(h]”jälah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jmh´M“hjælh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjælh²hh³jmh´M“ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj!mj j!mj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ3``list_for_each_entry_safe (pos, n, head, member)``”h]”j$)�”}”(hj'mh]”hŒ/list_for_each_entry_safe (pos, n, head, member)”…”�”}”(hj)mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj%mubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M•hj&h²hubj½)�”}”(hŒCiterate over list of given type safe against removal of list entry ”h]”j)�”}”(hŒBiterate over list of given type safe against removal of list entry”h]”hŒBiterate over list of given type safe against removal of list entry”…”�”}”(hjAmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M“hj=mubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jOmh´M“hj&h²hubj)�”}”(hŒÐ**Parameters** ``pos`` the type * to use as a loop cursor. ``n`` another type * to use as temporary storage ``head`` the head for your list. ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj\mh]”hŒ Parameters”…”�”}”(hj^mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZmubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M—hjVmubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj{mh]”hŒpos”…”�”}”(hj}mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjymubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M”hjumubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hj”mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j�mh´M”hj‘mubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjumubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j�mh´M”hjrmubj+)�”}”(hŒ1``n`` another type * to use as temporary storage ”h]”(j1)�”}”(hŒ``n``”h]”j$)�”}”(hj´mh]”hŒn”…”�”}”(hj¶mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj²mubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M•hj®mubjK)�”}”(hhh]”j)�”}”(hŒ*another type * to use as temporary storage”h]”hŒ*another type * to use as temporary storage”…”�”}”(hjÍmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÉmh´M•hjÊmubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj®mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÉmh´M•hjrmubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjímh]”hŒhead”…”�”}”(hjïmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjëmubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M–hjçmubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jnh´M–hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjçmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jnh´M–hjrmubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj&nh]”hŒmember”…”�”}”(hj(nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj$nubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M˜hj nubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj?nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M—hjth´MÐhj?tubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj#tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j>th´MÐhj tubj+)�”}”(hŒ9``n`` temporary storage used in list_for_each_entry_safe ”h]”(j1)�”}”(hŒ``n``”h]”j$)�”}”(hjbth]”hŒn”…”�”}”(hjdth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj`tubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÑhj\tubjK)�”}”(hhh]”j)�”}”(hŒ2temporary storage used in list_for_each_entry_safe”h]”hŒ2temporary storage used in list_for_each_entry_safe”…”�”}”(hj{th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jwth´MÑhjxtubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj\tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jwth´MÑhj tubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj›th]”hŒmember”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj™tubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÒhj•tubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj´th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j°th´MÒhj±tubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj•tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j°th´MÒhj tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjtubj)�”}”(hŒ**Description**”h]”j)�”}”(hjÖth]”hŒ Description”…”�”}”(hjØth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔtubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÔhjtubj)�”}”(hXLlist_safe_reset_next is not safe to use in general if the list may be modified concurrently (eg. the lock is dropped in the loop body). An exception to this is if the cursor element (pos) is pinned in the list, and list_safe_reset_next is called after re-taking the lock and before completing the current iteration of the loop body.”h]”hXLlist_safe_reset_next is not safe to use in general if the list may be modified concurrently (eg. the lock is dropped in the loop body). An exception to this is if the cursor element (pos) is pinned in the list, and list_safe_reset_next is called after re-taking the lock and before completing the current iteration of the loop body.”…”�”}”(hjìth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÓhjtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_unhashed (C function)”Œc.hlist_unhashed”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ/int hlist_unhashed (const struct hlist_node *h)”h]”jT)�”}”(hŒ.int hlist_unhashed(const struct hlist_node *h)”h]”(jØ)�”}”(hŒint”h]”hŒint”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjuh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mîubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*uh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjuh²hh³j)uh´MîubjZ)�”}”(hŒhlist_unhashed”h]”j`)�”}”(hŒhlist_unhashed”h]”hŒhlist_unhashed”…”�”}”(hjusbŒc.hlist_unhashed”†”asbuh1hhjTuubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±uh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjTuubjr)�”}”(hjh]”hŒ*”…”�”}”(hj¿uh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjTuubj`)�”}”(hŒh”h]”hŒh”…”�”}”(hjÌuh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjTuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjPuubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjuh²hh³j)uh´Mîubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjuh²hh³j)uh´Mîubah}”(h]”juah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j)uh´Mîhjuh²hubj�)�”}”(hhh]”j)�”}”(hŒ2Has node been removed from list and reinitialized?”h]”hŒ2Has node been removed from list and reinitialized?”…”�”}”(hjöuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mîhjóuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjuh²hh³j)uh´Mîubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjvj jvj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hX **Parameters** ``const struct hlist_node *h`` Node to be checked **Description** Not that not all removal functions will leave a node in unhashed state. For example, hlist_nulls_del_init_rcu() does leave the node in unhashed state, but hlist_nulls_del() does not.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjvh]”hŒ Parameters”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mòhjvubj&)�”}”(hhh]”j+)�”}”(hŒ2``const struct hlist_node *h`` Node to be checked ”h]”(j1)�”}”(hŒ``const struct hlist_node *h``”h]”j$)�”}”(hj7vh]”hŒconst struct hlist_node *h”…”�”}”(hj9vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj5vubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mïhj1vubjK)�”}”(hhh]”j)�”}”(hŒNode to be checked”h]”hŒNode to be checked”…”�”}”(hjPvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jLvh´MïhjMvubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj1vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jLvh´Mïhj.vubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjvubj)�”}”(hŒ**Description**”h]”j)�”}”(hjrvh]”hŒ Description”…”�”}”(hjtvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpvubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mñhjvubj)�”}”(hŒ·Not that not all removal functions will leave a node in unhashed state. For example, hlist_nulls_del_init_rcu() does leave the node in unhashed state, but hlist_nulls_del() does not.”h]”hŒ·Not that not all removal functions will leave a node in unhashed state. For example, hlist_nulls_del_init_rcu() does leave the node in unhashed state, but hlist_nulls_del() does not.”…”�”}”(hjˆvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mðhjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ$hlist_unhashed_lockless (C function)”Œc.hlist_unhashed_lockless”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ8int hlist_unhashed_lockless (const struct hlist_node *h)”h]”jT)�”}”(hŒ7int hlist_unhashed_lockless(const struct hlist_node *h)”h]”(jØ)�”}”(hŒint”h]”hŒint”…”�”}”(hj·vh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj³vh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mûubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆvh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj³vh²hh³jÅvh´MûubjZ)�”}”(hŒhlist_unhashed_lockless”h]”j`)�”}”(hŒhlist_unhashed_lockless”h]”hŒhlist_unhashed_lockless”…”�”}”(hjØvh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÔvubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj³vh²hh³jÅvh´Mûubj)�”}”(hŒ(const struct hlist_node *h)”h]”j)�”}”(hŒconst struct hlist_node *h”h]”(j)�”}”(hj¡*h]”hŒconst”…”�”}”(hjôvh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjðvubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjðvubj)�”}”(hj"h]”hŒstruct”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjðvubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjðvubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hj-wh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj*wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j/wŒmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjÚvsbŒc.hlist_unhashed_lockless”†”asbuh1hhjðvubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMwh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjðvubjr)�”}”(hjh]”hŒ*”…”�”}”(hj[wh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjðvubj`)�”}”(hjÎuh]”hŒh”…”�”}”(hjhwh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjðvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjìvubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj³vh²hh³jÅvh´Mûubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj¯vh²hh³jÅvh´Mûubah}”(h]”jªvah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jÅvh´Mûhj¬vh²hubj�)�”}”(hhh]”j)�”}”(hŒ*Version of hlist_unhashed for lockless use”h]”hŒ*Version of hlist_unhashed for lockless use”…”�”}”(hj‘wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MûhjŽwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj¬vh²hh³jÅvh´Mûubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj©wj j©wj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hX**Parameters** ``const struct hlist_node *h`` Node to be checked **Description** This variant of hlist_unhashed() must be used in lockless contexts to avoid potential load-tearing. The READ_ONCE() is paired with the various WRITE_ONCE() in hlist helpers that are defined below.”•(h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj³wh]”hŒ Parameters”…”�”}”(hjµwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±wubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mÿhj­wubj&)�”}”(hhh]”j+)�”}”(hŒ2``const struct hlist_node *h`` Node to be checked ”h]”(j1)�”}”(hŒ``const struct hlist_node *h``”h]”j$)�”}”(hjÒwh]”hŒconst struct hlist_node *h”…”�”}”(hjÔwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÐwubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MühjÌwubjK)�”}”(hhh]”j)�”}”(hŒNode to be checked”h]”hŒNode to be checked”…”�”}”(hjëwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jçwh´Mühjèwubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÌwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jçwh´MühjÉwubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj­wubj)�”}”(hŒ**Description**”h]”j)�”}”(hj xh]”hŒ Description”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj xubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mþhj­wubj)�”}”(hŒÅThis variant of hlist_unhashed() must be used in lockless contexts to avoid potential load-tearing. The READ_ONCE() is paired with the various WRITE_ONCE() in hlist helpers that are defined below.”h]”hŒÅThis variant of hlist_unhashed() must be used in lockless contexts to avoid potential load-tearing. The READ_ONCE() is paired with the various WRITE_ONCE() in hlist helpers that are defined below.”…”�”}”(hj#xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mýhj­wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_empty (C function)”Œ c.hlist_empty”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ,int hlist_empty (const struct hlist_head *h)”h]”jT)�”}”(hŒ+int hlist_empty(const struct hlist_head *h)”h]”(jØ)�”}”(hŒint”h]”hŒint”…”�”}”(hjRxh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjNxh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaxh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjNxh²hh³j`xh´MubjZ)�”}”(hŒ hlist_empty”h]”j`)�”}”(hŒ hlist_empty”h]”hŒ hlist_empty”…”�”}”(hjsxh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjoxubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjNxh²hh³j`xh´Mubj)�”}”(hŒ(const struct hlist_head *h)”h]”j)�”}”(hŒconst struct hlist_head *h”h]”(j)�”}”(hj¡*h]”hŒconst”…”�”}”(hj�xh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj‹xubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœxh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj‹xubj)�”}”(hj"h]”hŒstruct”…”�”}”(hjªxh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj‹xubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·xh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj‹xubh)�”}”(hhh]”j`)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjÈxh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÅxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jÊxŒmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjuxsbŒ c.hlist_empty”†”asbuh1hhj‹xubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèxh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj‹xubjr)�”}”(hjh]”hŒ*”…”�”}”(hjöxh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj‹xubj`)�”}”(hjÎuh]”hŒh”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj‹xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj‡xubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjNxh²hh³j`xh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjJxh²hh³j`xh´Mubah}”(h]”jExah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j`xh´MhjGxh²hubj�)�”}”(hhh]”j)�”}”(hŒ5Is the specified hlist_head structure an empty hlist?”h]”hŒ5Is the specified hlist_head structure an empty hlist?”…”�”}”(hj,yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj)yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjGxh²hh³j`xh´Mubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjDyj jDyj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒD**Parameters** ``const struct hlist_head *h`` Structure to check.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjNyh]”hŒ Parameters”…”�”}”(hjPyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLyubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hjHyubj&)�”}”(hhh]”j+)�”}”(hŒ2``const struct hlist_head *h`` Structure to check.”h]”(j1)�”}”(hŒ``const struct hlist_head *h``”h]”j$)�”}”(hjmyh]”hŒconst struct hlist_head *h”…”�”}”(hjoyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjkyubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjgyubjK)�”}”(hhh]”j)�”}”(hŒStructure to check.”h]”hŒStructure to check.”…”�”}”(hj†yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hjƒyubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjgyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j‚yh´Mhjdyubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjHyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_del (C function)”Œ c.hlist_del”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ%void hlist_del (struct hlist_node *n)”h]”jT)�”}”(hŒ$void hlist_del(struct hlist_node *n)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÇyh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjÃyh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖyh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÃyh²hh³jÕyh´MubjZ)�”}”(hŒ hlist_del”h]”j`)�”}”(hŒ hlist_del”h]”hŒ hlist_del”…”�”}”(hjèyh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjäyubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÃyh²hh³jÕyh´Mubj)�”}”(hŒ(struct hlist_node *n)”h]”j)�”}”(hŒstruct hlist_node *n”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjzubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjzubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hj"zh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j$zŒmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjêysbŒ c.hlist_del”†”asbuh1hhjzubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBzh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjzubjr)�”}”(hjh]”hŒ*”…”�”}”(hjPzh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjzubj`)�”}”(hjkh]”hŒn”…”�”}”(hj]zh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjüyubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjÃyh²hh³jÕyh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj¿yh²hh³jÕyh´Mubah}”(h]”jºyah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jÕyh´Mhj¼yh²hubj�)�”}”(hhh]”j)�”}”(hŒ-Delete the specified hlist_node from its list”h]”hŒ-Delete the specified hlist_node from its list”…”�”}”(hj†zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhjƒzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj¼yh²hh³jÕyh´Mubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjžzj jžzj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ¿**Parameters** ``struct hlist_node *n`` Node to delete. **Description** Note that this function leaves the node in hashed state. Use hlist_del_init() or similar instead to unhash **n**.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj¨zh]”hŒ Parameters”…”�”}”(hjªzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦zubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj¢zubj&)�”}”(hhh]”j+)�”}”(hŒ)``struct hlist_node *n`` Node to delete. ”h]”(j1)�”}”(hŒ``struct hlist_node *n``”h]”j$)�”}”(hjÇzh]”hŒstruct hlist_node *n”…”�”}”(hjÉzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÅzubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MhjÁzubjK)�”}”(hhh]”j)�”}”(hŒNode to delete.”h]”hŒNode to delete.”…”�”}”(hjàzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÜzh´MhjÝzubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÁzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÜzh´Mhj¾zubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢zubj)�”}”(hŒ**Description**”h]”j)�”}”(hj{h]”hŒ Description”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj¢zubj)�”}”(hŒrNote that this function leaves the node in hashed state. Use hlist_del_init() or similar instead to unhash **n**.”h]”(hŒlNote that this function leaves the node in hashed state. Use hlist_del_init() or similar instead to unhash ”…”�”}”(hj{h²hh³Nh´Nubj)�”}”(hŒ**n**”h]”hŒn”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{ubhŒ.”…”�”}”(hj{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj¢zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_del_init (C function)”Œc.hlist_del_init”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ*void hlist_del_init (struct hlist_node *n)”h]”jT)�”}”(hŒ)void hlist_del_init(struct hlist_node *n)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY{h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjU{h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M)ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh{h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjU{h²hh³jg{h´M)ubjZ)�”}”(hŒhlist_del_init”h]”j`)�”}”(hŒhlist_del_init”h]”hŒhlist_del_init”…”�”}”(hjz{h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjv{ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjU{h²hh³jg{h´M)ubj)�”}”(hŒ(struct hlist_node *n)”h]”j)�”}”(hŒstruct hlist_node *n”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj–{h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj’{ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£{h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj’{ubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hj´{h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj±{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j¶{Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj|{sbŒc.hlist_del_init”†”asbuh1hhj’{ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ{h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj’{ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjâ{h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj’{ubj`)�”}”(hjkh]”hŒn”…”�”}”(hjï{h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj’{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjŽ{ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjU{h²hh³jg{h´M)ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjQ{h²hh³jg{h´M)ubah}”(h]”jL{ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jg{h´M)hjN{h²hubj�)�”}”(hhh]”j)�”}”(hŒh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj:ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj:ubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j^Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj$sbŒc.hlist_add_before”†”asbuh1hhj:ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj:ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj:ubj`)�”}”(hjkh]”hŒn”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6ubj)�”}”(hŒstruct hlist_node *next”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj«ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj«ubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jÏŒmodname”NŒ classname”Njêjí)�”}”jð]”jxŒc.hlist_add_before”†”asbuh1hhj«ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj«ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj«ubj`)�”}”(hŒnext”h]”hŒnext”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj6ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjý~h²hh³jh´MIubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjù~h²hh³jh´MIubah}”(h]”jô~ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jh´MIhjö~h²hubj�)�”}”(hhh]”j)�”}”(hŒ(add a new entry before the one specified”h]”hŒ(add a new entry before the one specified”…”�”}”(hj0€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MIhj-€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjö~h²hh³jh´MIubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjH€j jH€j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ“**Parameters** ``struct hlist_node *n`` new entry to be added ``struct hlist_node *next`` hlist node to add it before, which must be non-NULL”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjR€h]”hŒ Parameters”…”�”}”(hjT€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MMhjL€ubj&)�”}”(hhh]”(j+)�”}”(hŒ/``struct hlist_node *n`` new entry to be added ”h]”(j1)�”}”(hŒ``struct hlist_node *n``”h]”j$)�”}”(hjq€h]”hŒstruct hlist_node *n”…”�”}”(hjs€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjo€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MJhjk€ubjK)�”}”(hhh]”j)�”}”(hŒnew entry to be added”h]”hŒnew entry to be added”…”�”}”(hjŠ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j†€h´MJhj‡€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjk€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j†€h´MJhjh€ubj+)�”}”(hŒO``struct hlist_node *next`` hlist node to add it before, which must be non-NULL”h]”(j1)�”}”(hŒ``struct hlist_node *next``”h]”j$)�”}”(hjª€h]”hŒstruct hlist_node *next”…”�”}”(hj¬€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¨€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MLhj¤€ubjK)�”}”(hhh]”j)�”}”(hŒ3hlist node to add it before, which must be non-NULL”h]”hŒ3hlist node to add it before, which must be non-NULL”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MKhjÀ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj¤€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¿€h´MLhjh€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjL€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_add_behind (C function)”Œc.hlist_add_behind”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒEvoid hlist_add_behind (struct hlist_node *n, struct hlist_node *prev)”h]”jT)�”}”(hŒDvoid hlist_add_behind(struct hlist_node *n, struct hlist_node *prev)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj�h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MWubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj�h²hh³j�h´MWubjZ)�”}”(hŒhlist_add_behind”h]”j`)�”}”(hŒhlist_add_behind”h]”hŒhlist_add_behind”…”�”}”(hj%�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj!�ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj�h²hh³j�h´MWubj)�”}”(hŒ/(struct hlist_node *n, struct hlist_node *prev)”h]”(j)�”}”(hŒstruct hlist_node *n”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjA�h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj=�ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN�h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj=�ubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hj_�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj\�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”ja�Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj'�sbŒc.hlist_add_behind”†”asbuh1hhj=�ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj=�ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj=�ubj`)�”}”(hjkh]”hŒn”…”�”}”(hjš�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj=�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj9�ubj)�”}”(hŒstruct hlist_node *prev”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj®�ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿�h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj®�ubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjÐ�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÍ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jÒ�Œmodname”NŒ classname”Njêjí)�”}”jð]”j{�Œc.hlist_add_behind”†”asbuh1hhj®�ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî�h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj®�ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjü�h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj®�ubj`)�”}”(hŒprev”h]”hŒprev”…”�”}”(hj ‚h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj®�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj9�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj�h²hh³j�h´MWubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjü€h²hh³j�h´MWubah}”(h]”j÷€ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j�h´MWhjù€h²hubj�)�”}”(hhh]”j)�”}”(hŒ'add a new entry after the one specified”h]”hŒ'add a new entry after the one specified”…”�”}”(hj3‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MWhj0‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjù€h²hh³j�h´MWubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjK‚j jK‚j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ’**Parameters** ``struct hlist_node *n`` new entry to be added ``struct hlist_node *prev`` hlist node to add it after, which must be non-NULL”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjU‚h]”hŒ Parameters”…”�”}”(hjW‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjS‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M[hjO‚ubj&)�”}”(hhh]”(j+)�”}”(hŒ/``struct hlist_node *n`` new entry to be added ”h]”(j1)�”}”(hŒ``struct hlist_node *n``”h]”j$)�”}”(hjt‚h]”hŒstruct hlist_node *n”…”�”}”(hjv‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjr‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MXhjn‚ubjK)�”}”(hhh]”j)�”}”(hŒnew entry to be added”h]”hŒnew entry to be added”…”�”}”(hj�‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j‰‚h´MXhjŠ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjn‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j‰‚h´MXhjk‚ubj+)�”}”(hŒN``struct hlist_node *prev`` hlist node to add it after, which must be non-NULL”h]”(j1)�”}”(hŒ``struct hlist_node *prev``”h]”j$)�”}”(hj­‚h]”hŒstruct hlist_node *prev”…”�”}”(hj¯‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj«‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MZhj§‚ubjK)�”}”(hhh]”j)�”}”(hŒ2hlist node to add it after, which must be non-NULL”h]”hŒ2hlist node to add it after, which must be non-NULL”…”�”}”(hjÆ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MYhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj§‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j‚h´MZhjk‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjO‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_add_fake (C function)”Œc.hlist_add_fake”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ*void hlist_add_fake (struct hlist_node *n)”h]”jT)�”}”(hŒ)void hlist_add_fake(struct hlist_node *n)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjƒh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mgubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjƒh²hh³jƒh´MgubjZ)�”}”(hŒhlist_add_fake”h]”j`)�”}”(hŒhlist_add_fake”h]”hŒhlist_add_fake”…”�”}”(hj(ƒh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj$ƒubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjƒh²hh³jƒh´Mgubj)�”}”(hŒ(struct hlist_node *n)”h]”j)�”}”(hŒstruct hlist_node *n”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjDƒh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj@ƒubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQƒh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj@ƒubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjbƒh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj_ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jdƒŒmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj*ƒsbŒc.hlist_add_fake”†”asbuh1hhj@ƒubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚ƒh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj@ƒubjr)�”}”(hjh]”hŒ*”…”�”}”(hj�ƒh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj@ƒubj`)�”}”(hjkh]”hŒn”…”�”}”(hj�ƒh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj@ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj<ƒubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjƒh²hh³jƒh´Mgubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÿ‚h²hh³jƒh´Mgubah}”(h]”jú‚ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jƒh´Mghjü‚h²hubj�)�”}”(hhh]”j)�”}”(hŒ8create a fake hlist consisting of a single headless node”h]”hŒ8create a fake hlist consisting of a single headless node”…”�”}”(hjƃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MghjÃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjü‚h²hh³jƒh´Mgubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjÞƒj jÞƒj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hX **Parameters** ``struct hlist_node *n`` Node to make a fake list out of **Description** This makes **n** appear to be its own predecessor on a headless hlist. The point of this is to allow things like hlist_del() to work correctly in cases where there is no list.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjèƒh]”hŒ Parameters”…”�”}”(hjêƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mkhjâƒubj&)�”}”(hhh]”j+)�”}”(hŒ9``struct hlist_node *n`` Node to make a fake list out of ”h]”(j1)�”}”(hŒ``struct hlist_node *n``”h]”j$)�”}”(hj„h]”hŒstruct hlist_node *n”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhhj„ubjK)�”}”(hhh]”j)�”}”(hŒNode to make a fake list out of”h]”hŒNode to make a fake list out of”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j„h´Mhhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j„h´Mhhjþƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjâƒubj)�”}”(hŒ**Description**”h]”j)�”}”(hjB„h]”hŒ Description”…”�”}”(hjD„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mjhjâƒubj)�”}”(hŒ¯This makes **n** appear to be its own predecessor on a headless hlist. The point of this is to allow things like hlist_del() to work correctly in cases where there is no list.”h]”(hŒ This makes ”…”�”}”(hjX„h²hh³Nh´Nubj)�”}”(hŒ**n**”h]”hŒn”…”�”}”(hj`„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX„ubhŒŸ appear to be its own predecessor on a headless hlist. The point of this is to allow things like hlist_del() to work correctly in cases where there is no list.”…”�”}”(hjX„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mihjâƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_fake (C function)”Œ c.hlist_fake”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ&bool hlist_fake (struct hlist_node *h)”h]”jT)�”}”(hŒ%bool hlist_fake(struct hlist_node *h)”h]”(jØ)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj™„h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj•„h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mtubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨„h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj•„h²hh³j§„h´MtubjZ)�”}”(hŒ hlist_fake”h]”j`)�”}”(hŒ hlist_fake”h]”hŒ hlist_fake”…”�”}”(hjº„h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¶„ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj•„h²hh³j§„h´Mtubj)�”}”(hŒ(struct hlist_node *h)”h]”j)�”}”(hŒstruct hlist_node *h”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjÖ„h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjÒ„ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã„h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÒ„ubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjô„h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjñ„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jö„Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj¼„sbŒ c.hlist_fake”†”asbuh1hhjÒ„ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjÒ„ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj"…h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjÒ„ubj`)�”}”(hjÎuh]”hŒh”…”�”}”(hj/…h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÒ„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj΄ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj•„h²hh³j§„h´Mtubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj‘„h²hh³j§„h´Mtubah}”(h]”jŒ„ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j§„h´MthjŽ„h²hubj�)�”}”(hhh]”j)�”}”(hŒIs this node a fake hlist?”h]”hŒIs this node a fake hlist?”…”�”}”(hjX…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MthjU…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjŽ„h²hh³j§„h´Mtubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjp…j jp…j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒa**Parameters** ``struct hlist_node *h`` Node to check for being a self-referential fake hlist.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjz…h]”hŒ Parameters”…”�”}”(hj|…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjx…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mxhjt…ubj&)�”}”(hhh]”j+)�”}”(hŒO``struct hlist_node *h`` Node to check for being a self-referential fake hlist.”h]”(j1)�”}”(hŒ``struct hlist_node *h``”h]”j$)�”}”(hj™…h]”hŒstruct hlist_node *h”…”�”}”(hj›…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj—…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mzhj“…ubjK)�”}”(hhh]”j)�”}”(hŒ6Node to check for being a self-referential fake hlist.”h]”hŒ6Node to check for being a self-referential fake hlist.”…”�”}”(hj²…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Muhj¯…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj“…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j®…h´Mzhj�…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjt…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ#hlist_is_singular_node (C function)”Œc.hlist_is_singular_node”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒHbool hlist_is_singular_node (struct hlist_node *n, struct hlist_head *h)”h]”jT)�”}”(hŒGbool hlist_is_singular_node(struct hlist_node *n, struct hlist_head *h)”h]”(jØ)�”}”(hj›„h]”hŒbool”…”�”}”(hjó…h²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjï…h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M}ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjï…h²hh³j†h´M}ubjZ)�”}”(hŒhlist_is_singular_node”h]”j`)�”}”(hŒhlist_is_singular_node”h]”hŒhlist_is_singular_node”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj†ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjï…h²hh³j†h´M}ubj)�”}”(hŒ,(struct hlist_node *n, struct hlist_head *h)”h]”(j)�”}”(hŒstruct hlist_node *n”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj/†h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj+†ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<†h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj+†ubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjM†h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjJ†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jO†Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj†sbŒc.hlist_is_singular_node”†”asbuh1hhj+†ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm†h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj+†ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj{†h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj+†ubj`)�”}”(hjkh]”hŒn”…”�”}”(hjˆ†h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj+†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj'†ubj)�”}”(hŒstruct hlist_head *h”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj †h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjœ†ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­†h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjœ†ubh)�”}”(hhh]”j`)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hj¾†h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj»†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jÀ†Œmodname”NŒ classname”Njêjí)�”}”jð]”ji†Œc.hlist_is_singular_node”†”asbuh1hhjœ†ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj܆h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjœ†ubjr)�”}”(hjh]”hŒ*”…”�”}”(hjê†h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjœ†ubj`)�”}”(hjÎuh]”hŒh”…”�”}”(hj÷†h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjœ†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhj'†ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjï…h²hh³j†h´M}ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjë…h²hh³j†h´M}ubah}”(h]”jæ…ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j†h´M}hjè…h²hubj�)�”}”(hhh]”j)�”}”(hŒ0is node the only element of the specified hlist?”h]”hŒ0is node the only element of the specified hlist?”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M}hj‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjè…h²hh³j†h´M}ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸj8‡j j8‡j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hX**Parameters** ``struct hlist_node *n`` Node to check for singularity. ``struct hlist_head *h`` Header for potentially singular list. **Description** Check whether the node is the only node of the head without accessing head, thus avoiding unnecessary cache misses.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjB‡h]”hŒ Parameters”…”�”}”(hjD‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hj<‡ubj&)�”}”(hhh]”(j+)�”}”(hŒ8``struct hlist_node *n`` Node to check for singularity. ”h]”(j1)�”}”(hŒ``struct hlist_node *n``”h]”j$)�”}”(hja‡h]”hŒstruct hlist_node *n”…”�”}”(hjc‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj_‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M~hj[‡ubjK)�”}”(hhh]”j)�”}”(hŒNode to check for singularity.”h]”hŒNode to check for singularity.”…”�”}”(hjz‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jv‡h´M~hjw‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj[‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jv‡h´M~hjX‡ubj+)�”}”(hŒ?``struct hlist_head *h`` Header for potentially singular list. ”h]”(j1)�”}”(hŒ``struct hlist_head *h``”h]”j$)�”}”(hjš‡h]”hŒstruct hlist_head *h”…”�”}”(hjœ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj˜‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mhj”‡ubjK)�”}”(hhh]”j)�”}”(hŒ%Header for potentially singular list.”h]”hŒ%Header for potentially singular list.”…”�”}”(hj³‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j¯‡h´Mhj°‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj”‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¯‡h´MhjX‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj<‡ubj)�”}”(hŒ**Description**”h]”j)�”}”(hjÕ‡h]”hŒ Description”…”�”}”(hjׇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hj<‡ubj)�”}”(hŒsCheck whether the node is the only node of the head without accessing head, thus avoiding unnecessary cache misses.”h]”hŒsCheck whether the node is the only node of the head without accessing head, thus avoiding unnecessary cache misses.”…”�”}”(hjë‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M€hj<‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_move_list (C function)”Œc.hlist_move_list”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒEvoid hlist_move_list (struct hlist_head *old, struct hlist_head *new)”h]”jT)�”}”(hŒDvoid hlist_move_list(struct hlist_head *old, struct hlist_head *new)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hjˆh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M‹ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)ˆh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjˆh²hh³j(ˆh´M‹ubjZ)�”}”(hŒhlist_move_list”h]”j`)�”}”(hŒhlist_move_list”h]”hŒhlist_move_list”…”�”}”(hj;ˆh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj7ˆubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjˆh²hh³j(ˆh´M‹ubj)�”}”(hŒ0(struct hlist_head *old, struct hlist_head *new)”h]”(j)�”}”(hŒstruct hlist_head *old”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjWˆh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjSˆubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdˆh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjSˆubh)�”}”(hhh]”j`)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjuˆh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjrˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jwˆŒmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVj=ˆsbŒc.hlist_move_list”†”asbuh1hhjSˆubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•ˆh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjSˆubjr)�”}”(hjh]”hŒ*”…”�”}”(hj£ˆh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjSˆubj`)�”}”(hŒold”h]”hŒold”…”�”}”(hj°ˆh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjSˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjOˆubj)�”}”(hŒstruct hlist_head *new”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjɈh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjňubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖˆh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjňubh)�”}”(hhh]”j`)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjçˆh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjäˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j鈌modname”NŒ classname”Njêjí)�”}”jð]”j‘ˆŒc.hlist_move_list”†”asbuh1hhjňubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjňubjr)�”}”(hjh]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjňubj`)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjňubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjOˆubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhjˆh²hh³j(ˆh´M‹ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjˆh²hh³j(ˆh´M‹ubah}”(h]”j ˆah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j(ˆh´M‹hjˆh²hubj�)�”}”(hhh]”j)�”}”(hŒ Move an hlist”h]”hŒ Move an hlist”…”�”}”(hjJ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M‹hjG‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjˆh²hh³j(ˆh´M‹ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjb‰j jb‰j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒô**Parameters** ``struct hlist_head *old`` hlist_head for old list. ``struct hlist_head *new`` hlist_head for new list. **Description** Move a list from one list head to another. Fixup the pprev reference of the first entry if it exists.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjl‰h]”hŒ Parameters”…”�”}”(hjn‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hjf‰ubj&)�”}”(hhh]”(j+)�”}”(hŒ4``struct hlist_head *old`` hlist_head for old list. ”h]”(j1)�”}”(hŒ``struct hlist_head *old``”h]”j$)�”}”(hj‹‰h]”hŒstruct hlist_head *old”…”�”}”(hj�‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj‰‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŒhj…‰ubjK)�”}”(hhh]”j)�”}”(hŒhlist_head for old list.”h]”hŒhlist_head for old list.”…”�”}”(hj¤‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j ‰h´MŒhj¡‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj…‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j ‰h´MŒhj‚‰ubj+)�”}”(hŒ4``struct hlist_head *new`` hlist_head for new list. ”h]”(j1)�”}”(hŒ``struct hlist_head *new``”h]”j$)�”}”(hjĉh]”hŒstruct hlist_head *new”…”�”}”(hjƉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hj¾‰ubjK)�”}”(hhh]”j)�”}”(hŒhlist_head for new list.”h]”hŒhlist_head for new list.”…”�”}”(hj݉h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÙ‰h´M�hjÚ‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj¾‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÙ‰h´M�hj‚‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjf‰ubj)�”}”(hŒ**Description**”h]”j)�”}”(hjÿ‰h]”hŒ Description”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hjf‰ubj)�”}”(hŒeMove a list from one list head to another. Fixup the pprev reference of the first entry if it exists.”h]”hŒeMove a list from one list head to another. Fixup the pprev reference of the first entry if it exists.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŽhjf‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_splice_init (C function)”Œc.hlist_splice_init”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ`void hlist_splice_init (struct hlist_head *from, struct hlist_node *last, struct hlist_head *to)”h]”jT)�”}”(hŒ_void hlist_splice_init(struct hlist_head *from, struct hlist_node *last, struct hlist_head *to)”h]”(jØ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjDŠh²hh³Nh´Nubah}”(h]”h ]”jäah"]”h$]”h&]”uh1j×hj@Šh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mœubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSŠh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj@Šh²hh³jRŠh´MœubjZ)�”}”(hŒhlist_splice_init”h]”j`)�”}”(hŒhlist_splice_init”h]”hŒhlist_splice_init”…”�”}”(hjeŠh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjaŠubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj@Šh²hh³jRŠh´Mœubj)�”}”(hŒI(struct hlist_head *from, struct hlist_node *last, struct hlist_head *to)”h]”(j)�”}”(hŒstruct hlist_head *from”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hj�Šh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj}Šubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽŠh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj}Šubh)�”}”(hhh]”j`)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjŸŠh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjœŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j¡ŠŒmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVjgŠsbŒc.hlist_splice_init”†”asbuh1hhj}Šubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Šh²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj}Šubjr)�”}”(hjh]”hŒ*”…”�”}”(hjÍŠh²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj}Šubj`)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hjÚŠh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj}Šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjyŠubj)�”}”(hŒstruct hlist_node *last”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjóŠh²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjïŠubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjïŠubh)�”}”(hhh]”j`)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j‹Œmodname”NŒ classname”Njêjí)�”}”jð]”j»ŠŒc.hlist_splice_init”†”asbuh1hhjïŠubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/‹h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjïŠubjr)�”}”(hjh]”hŒ*”…”�”}”(hj=‹h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjïŠubj`)�”}”(hŒlast”h]”hŒlast”…”�”}”(hjJ‹h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjïŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjyŠubj)�”}”(hŒstruct hlist_head *to”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjc‹h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhj_‹ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp‹h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj_‹ubh)�”}”(hhh]”j`)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hj�‹h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj~‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”jƒ‹Œmodname”NŒ classname”Njêjí)�”}”jð]”j»ŠŒc.hlist_splice_init”†”asbuh1hhj_‹ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ‹h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj_‹ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj­‹h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhj_‹ubj`)�”}”(hŒto”h]”hŒto”…”�”}”(hjº‹h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj_‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjyŠubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj@Šh²hh³jRŠh´Mœubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj<Šh²hh³jRŠh´Mœubah}”(h]”j7Šah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jRŠh´Mœhj9Šh²hubj�)�”}”(hhh]”j)�”}”(hŒ)move all entries from one list to another”h]”hŒ)move all entries from one list to another”…”�”}”(hjä‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mœhjá‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj9Šh²hh³jRŠh´Mœubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjü‹j jü‹j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hX/**Parameters** ``struct hlist_head *from`` hlist_head from which entries will be moved ``struct hlist_node *last`` last entry on the **from** list ``struct hlist_head *to`` hlist_head to which entries will be moved **Description** **to** can be empty, **from** must contain at least **last**.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjŒh]”hŒ Parameters”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hjŒubj&)�”}”(hhh]”(j+)�”}”(hŒH``struct hlist_head *from`` hlist_head from which entries will be moved ”h]”(j1)�”}”(hŒ``struct hlist_head *from``”h]”j$)�”}”(hj%Œh]”hŒstruct hlist_head *from”…”�”}”(hj'Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj#Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M�hjŒubjK)�”}”(hhh]”j)�”}”(hŒ+hlist_head from which entries will be moved”h]”hŒ+hlist_head from which entries will be moved”…”�”}”(hj>Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j:Œh´M�hj;Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j:Œh´M�hjŒubj+)�”}”(hŒ<``struct hlist_node *last`` last entry on the **from** list ”h]”(j1)�”}”(hŒ``struct hlist_node *last``”h]”j$)�”}”(hj^Œh]”hŒstruct hlist_node *last”…”�”}”(hj`Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj\Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MžhjXŒubjK)�”}”(hhh]”j)�”}”(hŒlast entry on the **from** list”h]”(hŒlast entry on the ”…”�”}”(hjwŒh²hh³Nh´Nubj)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwŒubhŒ list”…”�”}”(hjwŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jsŒh´MžhjtŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjXŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jsŒh´MžhjŒubj+)�”}”(hŒD``struct hlist_head *to`` hlist_head to which entries will be moved ”h]”(j1)�”}”(hŒ``struct hlist_head *to``”h]”j$)�”}”(hj©Œh]”hŒstruct hlist_head *to”…”�”}”(hj«Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj§Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MŸhj£ŒubjK)�”}”(hhh]”j)�”}”(hŒ)hlist_head to which entries will be moved”h]”hŒ)hlist_head to which entries will be moved”…”�”}”(hjÂŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j¾Œh´MŸhj¿Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj£Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¾Œh´MŸhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒubj)�”}”(hŒ**Description**”h]”j)�”}”(hjäŒh]”hŒ Description”…”�”}”(hjæŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¡hjŒubj)�”}”(hŒ=**to** can be empty, **from** must contain at least **last**.”h]”(j)�”}”(hŒ**to**”h]”hŒto”…”�”}”(hjþŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúŒubhŒ can be empty, ”…”�”}”(hjúŒh²hh³Nh´Nubj)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúŒubhŒ must contain at least ”…”�”}”(hjúŒh²hh³Nh´Nubj)�”}”(hŒ**last**”h]”hŒlast”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúŒubhŒ.”…”�”}”(hjúŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M hjŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_for_each_entry (C macro)”Œc.hlist_for_each_entry”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒhlist_for_each_entry”h]”jT)�”}”(hŒhlist_for_each_entry”h]”jZ)�”}”(hŒhlist_for_each_entry”h]”j`)�”}”(hjU�h]”hŒhlist_for_each_entry”…”�”}”(hj_�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj[�ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjW�h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¾ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjS�h²hh³jr�h´M¾ubah}”(h]”jN�ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jr�h´M¾hjP�h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjP�h²hh³jr�h´M¾ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj‹�j j‹�j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ,``hlist_for_each_entry (pos, head, member)``”h]”j$)�”}”(hj‘�h]”hŒ(hlist_for_each_entry (pos, head, member)”…”�”}”(hj“�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÀhj&h²hubj½)�”}”(hŒ iterate over list of given type ”h]”j)�”}”(hŒiterate over list of given type”h]”hŒiterate over list of given type”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¾hj§�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j¹�h´M¾hj&h²hubj)�”}”(hŒ�**Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the hlist_node within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÆ�h]”hŒ Parameters”…”�”}”(hjÈ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÂhjÀ�ubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjå�h]”hŒpos”…”�”}”(hjç�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjã�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M¿hjß�ubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjþ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jú�h´M¿hjû�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjß�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jú�h´M¿hjÜ�ubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjŽh]”hŒhead”…”�”}”(hj Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÀhjŽubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj7Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j3Žh´MÀhj4Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j3Žh´MÀhjÜ�ubj+)�”}”(hŒ8``member`` the name of the hlist_node within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjWŽh]”hŒmember”…”�”}”(hjYŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjUŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÂhjQŽubjK)�”}”(hhh]”j)�”}”(hŒ-the name of the hlist_node within the struct.”h]”hŒ-the name of the hlist_node within the struct.”…”�”}”(hjpŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÁhjmŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjQŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jlŽh´MÂhjÜ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÀ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ'hlist_for_each_entry_continue (C macro)”•NŒc.hlist_for_each_entry_continue”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒhlist_for_each_entry_continue”h]”jT)�”}”(hŒhlist_for_each_entry_continue”h]”jZ)�”}”(hŒhlist_for_each_entry_continue”h]”j`)�”}”(hj«Žh]”hŒhlist_for_each_entry_continue”…”�”}”(hjµŽh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj±Žubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj­Žh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÉubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj©Žh²hh³jÈŽh´MÉubah}”(h]”j¤Žah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jÈŽh´MÉhj¦Žh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj¦Žh²hh³jÈŽh´MÉubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjáŽj jáŽj¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ/``hlist_for_each_entry_continue (pos, member)``”h]”j$)�”}”(hjçŽh]”hŒ+hlist_for_each_entry_continue (pos, member)”…”�”}”(hjéŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjåŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MËhj&h²hubj½)�”}”(hŒ4iterate over a hlist continuing after current point ”h]”j)�”}”(hŒ3iterate over a hlist continuing after current point”h]”hŒ3iterate over a hlist continuing after current point”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÉhjýŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j�h´MÉhj&h²hubj)�”}”(hŒy**Parameters** ``pos`` the type * to use as a loop cursor. ``member`` the name of the hlist_node within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj�h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÍhj�ubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj;�h]”hŒpos”…”�”}”(hj=�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj9�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÊhj5�ubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jP�h´MÊhjQ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj5�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jP�h´MÊhj2�ubj+)�”}”(hŒ8``member`` the name of the hlist_node within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjt�h]”hŒmember”…”�”}”(hjv�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjr�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÌhjn�ubjK)�”}”(hhh]”j)�”}”(hŒ-the name of the hlist_node within the struct.”h]”hŒ-the name of the hlist_node within the struct.”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MËhjŠ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjn�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j‰�h´MÌhj2�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ#hlist_for_each_entry_from (C macro)”Œc.hlist_for_each_entry_from”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒhlist_for_each_entry_from”h]”jT)�”}”(hŒhlist_for_each_entry_from”h]”jZ)�”}”(hŒhlist_for_each_entry_from”h]”j`)�”}”(hjÈ�h]”hŒhlist_for_each_entry_from”…”�”}”(hjÒ�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÎ�ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÊ�h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÓubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÆ�h²hh³jå�h´MÓubah}”(h]”jÁ�ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jå�h´MÓhjÃ�h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjÃ�h²hh³jå�h´MÓubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjþ�j jþ�j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ+``hlist_for_each_entry_from (pos, member)``”h]”j$)�”}”(hj�h]”hŒ'hlist_for_each_entry_from (pos, member)”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÕhj&h²hubj½)�”}”(hŒ3iterate over a hlist continuing from current point ”h]”j)�”}”(hŒ2iterate over a hlist continuing from current point”h]”hŒ2iterate over a hlist continuing from current point”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÓhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j,�h´MÓhj&h²hubj)�”}”(hŒy**Parameters** ``pos`` the type * to use as a loop cursor. ``member`` the name of the hlist_node within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj9�h]”hŒ Parameters”…”�”}”(hj;�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´M×hj3�ubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjX�h]”hŒpos”…”�”}”(hjZ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjV�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÔhjR�ubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjq�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jm�h´MÔhjn�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjR�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jm�h´MÔhjO�ubj+)�”}”(hŒ8``member`` the name of the hlist_node within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj‘�h]”hŒmember”…”�”}”(hj“�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÖhj‹�ubjK)�”}”(hhh]”j)�”}”(hŒ-the name of the hlist_node within the struct.”h]”hŒ-the name of the hlist_node within the struct.”…”�”}”(hjª�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÕhj§�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj‹�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¦�h´MÖhjO�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj3�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ#hlist_for_each_entry_safe (C macro)”Œc.hlist_for_each_entry_safe”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒhlist_for_each_entry_safe”h]”jT)�”}”(hŒhlist_for_each_entry_safe”h]”jZ)�”}”(hŒhlist_for_each_entry_safe”h]”j`)�”}”(hjå�h]”hŒhlist_for_each_entry_safe”…”�”}”(hjï�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjë�ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjç�h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÜubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjã�h²hh³j‘h´MÜubah}”(h]”jÞ�ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j‘h´MÜhjà�h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjà�h²hh³j‘h´MÜubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj‘j j‘j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒ4``hlist_for_each_entry_safe (pos, n, head, member)``”h]”j$)�”}”(hj!‘h]”hŒ0hlist_for_each_entry_safe (pos, n, head, member)”…”�”}”(hj#‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÞhj&h²hubj½)�”}”(hŒCiterate over list of given type safe against removal of list entry ”h]”j)�”}”(hŒBiterate over list of given type safe against removal of list entry”h]”hŒBiterate over list of given type safe against removal of list entry”…”�”}”(hj;‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÜhj7‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jI‘h´MÜhj&h²hubj)�”}”(hŒí**Parameters** ``pos`` the type * to use as a loop cursor. ``n`` a :c:type:`struct hlist_node ` to use as temporary storage ``head`` the head for your list. ``member`` the name of the hlist_node within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjV‘h]”hŒ Parameters”…”�”}”(hjX‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MàhjP‘ubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hju‘h]”hŒpos”…”�”}”(hjw‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjs‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÝhjo‘ubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjŽ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jŠ‘h´MÝhj‹‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjo‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jŠ‘h´MÝhjl‘ubj+)�”}”(hŒM``n`` a :c:type:`struct hlist_node ` to use as temporary storage ”h]”(j1)�”}”(hŒ``n``”h]”j$)�”}”(hj®‘h]”hŒn”…”�”}”(hj°‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¬‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MÞhj¨‘ubjK)�”}”(hhh]”j)�”}”(hŒFa :c:type:`struct hlist_node ` to use as temporary storage”h]”(hŒa ”…”�”}”(hjÇ‘h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct hlist_node `”h]”j$)�”}”(hjÑ‘h]”hŒstruct hlist_node”…”�”}”(hjÓ‘h²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hjÏ‘ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ hlist_node”uh1hh³jÑh´MÞhjÇ‘ubhŒ to use as temporary storage”…”�”}”(hjÇ‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÑh´MÞhjÄ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj¨‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÑh´MÞhjl‘ubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj ’h]”hŒhead”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mßhj’ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj#’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j’h´Mßhj ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j’h´Mßhjl‘ubj+)�”}”(hŒ8``member`` the name of the hlist_node within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjC’h]”hŒmember”…”�”}”(hjE’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjA’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Máhj=’ubjK)�”}”(hhh]”j)�”}”(hŒ-the name of the hlist_node within the struct.”h]”hŒ-the name of the hlist_node within the struct.”…”�”}”(hj\’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MàhjY’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj=’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jX’h´Máhjl‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjP‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒhlist_count_nodes (C function)”Œc.hlist_count_nodes”hNt”auh1j7hj&h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ2size_t hlist_count_nodes (struct hlist_head *head)”h]”jT)�”}”(hŒ1size_t hlist_count_nodes(struct hlist_head *head)”h]”(h)�”}”(hhh]”j`)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj�’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j¢’Œmodname”NŒ classname”Njêjí)�”}”jð]”j^)�”}”jVŒhlist_count_nodes”sbŒc.hlist_count_nodes”†”asbuh1hhj™’h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mèubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ’h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhj™’h²hh³jÁ’h´MèubjZ)�”}”(hŒhlist_count_nodes”h]”j`)�”}”(hj¾’h]”hŒhlist_count_nodes”…”�”}”(hjÔ’h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÐ’ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj™’h²hh³jÁ’h´Mèubj)�”}”(hŒ(struct hlist_head *head)”h]”j)�”}”(hŒstruct hlist_head *head”h]”(j)�”}”(hj"h]”hŒstruct”…”�”}”(hjï’h²hh³Nh´Nubah}”(h]”h ]”j+ah"]”h$]”h&]”uh1jhjë’ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü’h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjë’ubh)�”}”(hhh]”j`)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj “ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jVŒ reftarget”j“Œmodname”NŒ classname”Njêjí)�”}”jð]”j¼’Œc.hlist_count_nodes”†”asbuh1hhjë’ubjê)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+“h²hh³Nh´Nubah}”(h]”h ]”jöah"]”h$]”h&]”uh1jéhjë’ubjr)�”}”(hjh]”hŒ*”…”�”}”(hj9“h²hh³Nh´Nubah}”(h]”h ]”j}ah"]”h$]”h&]”uh1jqhjë’ubj`)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjF“h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjë’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhjç’ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jhj™’h²hh³jÁ’h´Mèubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj•’h²hh³jÁ’h´Mèubah}”(h]”j�’ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jÁ’h´Mèhj’’h²hubj�)�”}”(hhh]”j)�”}”(hŒcount nodes in the hlist”h]”hŒcount nodes in the hlist”…”�”}”(hjp“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mèhjm“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj’’h²hh³jÁ’h´Mèubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”jžjŠjŸjˆ“j jˆ“j¡‰j¢‰j£‰uh1jHh²hhj&h³Nh´Nubj)�”}”(hŒF**Parameters** ``struct hlist_head *head`` the head for your hlist.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj’“h]”hŒ Parameters”…”�”}”(hj”“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MìhjŒ“ubj&)�”}”(hhh]”j+)�”}”(hŒ4``struct hlist_head *head`` the head for your hlist.”h]”(j1)�”}”(hŒ``struct hlist_head *head``”h]”j$)�”}”(hj±“h]”hŒstruct hlist_head *head”…”�”}”(hj³“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¯“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´Mîhj«“ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your hlist.”h]”hŒthe head for your hlist.”…”�”}”(hjÊ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³ŒS/var/lib/git/docbuild/linux/Documentation/core-api/list:775: ./include/linux/list.h”h´MéhjÇ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj«“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÆ“h´Mîhj¨“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŒ“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj&h²hh³Nh´Nubeh}”(h]”jŒah ]”h"]”Œ full list api”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPrivate List API”h]”hŒPrivate List API”…”�”}”(hjü“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÝj¨uh1hÍhjù“h²hh³hÇh´M ubj)�”}”(hŒ¿Provides a set of list primitives identical in function to those in ````, but designed for cases where the embedded ``:c:type:`struct list_head ``` is private member.”h]”(hŒDProvides a set of list primitives identical in function to those in ”…”�”}”(hj ”h²hh³Nh´Nubj$)�”}”(hŒ````”h]”hŒ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj ”ubhŒ,, but designed for cases where the embedded ”…”�”}”(hj ”h²hh³Nh´Nubj$)�”}”(hŒ*``:c:type:`struct list_head ```”h]”hŒ&:c:type:`struct list_head `”…”�”}”(hj$”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj ”ubhŒ is private member.”…”�”}”(hj ”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:781: ./include/linux/list_private.h”h´K hjù“h²hubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒlist_private_entry (C macro)”Œc.list_private_entry”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_private_entry”h]”jT)�”}”(hŒlist_private_entry”h]”jZ)�”}”(hŒlist_private_entry”h]”j`)�”}”(hjP”h]”hŒlist_private_entry”…”�”}”(hjZ”h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjV”ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjR”h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjN”h²hh³jm”h´Kubah}”(h]”jI”ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jm”h´KhjK”h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjK”h²hh³jm”h´Kubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj†”j j†”j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ*``list_private_entry (ptr, type, member)``”h]”j$)�”}”(hjŒ”h]”hŒ&list_private_entry (ptr, type, member)”…”�”}”(hjŽ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjŠ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Khjù“h²hubj½)�”}”(hŒget the struct for this entry ”h]”j)�”}”(hŒget the struct for this entry”h]”hŒget the struct for this entry”…”�”}”(hj¦”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Khj¢”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j´”h´Khjù“h²hubj)�”}”(hŒ¼**Parameters** ``ptr`` the :c:type:`struct list_head ` pointer. ``type`` the type of the struct this is embedded in. ``member`` the identifier passed to ACCESS_PRIVATE.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÁ”h]”hŒ Parameters”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Khj»”ubj&)�”}”(hhh]”(j+)�”}”(hŒ<``ptr`` the :c:type:`struct list_head ` pointer. ”h]”(j1)�”}”(hŒ``ptr``”h]”j$)�”}”(hjà”h]”hŒptr”…”�”}”(hjâ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÞ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KhjÚ”ubjK)�”}”(hhh]”j)�”}”(hŒ3the :c:type:`struct list_head ` pointer.”h]”(hŒthe ”…”�”}”(hjù”h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct list_head `”h]”j$)�”}”(hj•h]”hŒstruct list_head”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”(jØjŠŒc-type”eh"]”h$]”h&]”uh1j#hj•ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jäŒ refdomain”jŠŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jêjîjòŒ list_head”uh1hh³jõ”h´Khjù”ubhŒ pointer.”…”�”}”(hjù”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jõ”h´Khjö”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÚ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jõ”h´Khj×”ubj+)�”}”(hŒ5``type`` the type of the struct this is embedded in. ”h]”(j1)�”}”(hŒ``type``”h]”j$)�”}”(hj<•h]”hŒtype”…”�”}”(hj>•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj:•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Khj6•ubjK)�”}”(hhh]”j)�”}”(hŒ+the type of the struct this is embedded in.”h]”hŒ+the type of the struct this is embedded in.”…”�”}”(hjU•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jQ•h´KhjR•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj6•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jQ•h´Khj×”ubj+)�”}”(hŒ3``member`` the identifier passed to ACCESS_PRIVATE.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hju•h]”hŒmember”…”�”}”(hjw•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjs•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Khjo•ubjK)�”}”(hhh]”j)�”}”(hŒ(the identifier passed to ACCESS_PRIVATE.”h]”hŒ(the identifier passed to ACCESS_PRIVATE.”…”�”}”(hjŽ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Khj‹•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjo•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jŠ•h´Khj×”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj»”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ"list_private_first_entry (C macro)”Œc.list_private_first_entry”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_private_first_entry”h]”jT)�”}”(hŒlist_private_first_entry”h]”jZ)�”}”(hŒlist_private_first_entry”h]”j`)�”}”(hjÉ•h]”hŒlist_private_first_entry”…”�”}”(hjÓ•h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjÏ•ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjË•h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K$ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÇ•h²hh³jæ•h´K$ubah}”(h]”j•ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jæ•h´K$hjÄ•h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjÄ•h²hh³jæ•h´K$ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjÿ•j jÿ•j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ0``list_private_first_entry (ptr, type, member)``”h]”j$)�”}”(hj–h]”hŒ,list_private_first_entry (ptr, type, member)”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K&hjù“h²hubj½)�”}”(hŒ"get the first element from a list ”h]”j)�”}”(hŒ!get the first element from a list”h]”hŒ!get the first element from a list”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K$hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j-–h´K$hjù“h²hubj)�”}”(hŒ°**Parameters** ``ptr`` the list head to take the element from. ``type`` the type of the struct this is embedded in. ``member`` the identifier passed to ACCESS_PRIVATE.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj:–h]”hŒ Parameters”…”�”}”(hj<–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K(hj4–ubj&)�”}”(hhh]”(j+)�”}”(hŒ0``ptr`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``ptr``”h]”j$)�”}”(hjY–h]”hŒptr”…”�”}”(hj[–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjW–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K%hjS–ubjK)�”}”(hhh]”j)�”}”(hŒ'the list head to take the element from.”h]”hŒ'the list head to take the element from.”…”�”}”(hjr–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jn–h´K%hjo–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjS–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jn–h´K%hjP–ubj+)�”}”(hŒ5``type`` the type of the struct this is embedded in. ”h]”(j1)�”}”(hŒ``type``”h]”j$)�”}”(hj’–h]”hŒtype”…”�”}”(hj”–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj�–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K&hjŒ–ubjK)�”}”(hhh]”j)�”}”(hŒ+the type of the struct this is embedded in.”h]”hŒ+the type of the struct this is embedded in.”…”�”}”(hj«–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j§–h´K&hj¨–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjŒ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j§–h´K&hjP–ubj+)�”}”(hŒ3``member`` the identifier passed to ACCESS_PRIVATE.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjË–h]”hŒmember”…”�”}”(hjÍ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÉ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K(hjÅ–ubjK)�”}”(hhh]”j)�”}”(hŒ(the identifier passed to ACCESS_PRIVATE.”h]”hŒ(the identifier passed to ACCESS_PRIVATE.”…”�”}”(hjä–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K'hjá–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÅ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jà–h´K(hjP–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj4–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ!list_private_last_entry (C macro)”Œc.list_private_last_entry”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_private_last_entry”h]”jT)�”}”(hŒlist_private_last_entry”h]”jZ)�”}”(hŒlist_private_last_entry”h]”j`)�”}”(hj—h]”hŒlist_private_last_entry”…”�”}”(hj)—h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj%—ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj!—h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K-ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj—h²hh³j<—h´K-ubah}”(h]”j—ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j<—h´K-hj—h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj—h²hh³j<—h´K-ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjU—j jU—j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ/``list_private_last_entry (ptr, type, member)``”h]”j$)�”}”(hj[—h]”hŒ+list_private_last_entry (ptr, type, member)”…”�”}”(hj]—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjY—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K/hjù“h²hubj½)�”}”(hŒ!get the last element from a list ”h]”j)�”}”(hŒ get the last element from a list”h]”hŒ get the last element from a list”…”�”}”(hju—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K-hjq—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jƒ—h´K-hjù“h²hubj)�”}”(hŒ°**Parameters** ``ptr`` the list head to take the element from. ``type`` the type of the struct this is embedded in. ``member`` the identifier passed to ACCESS_PRIVATE.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj�—h]”hŒ Parameters”…”�”}”(hj’—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K1hjŠ—ubj&)�”}”(hhh]”(j+)�”}”(hŒ0``ptr`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``ptr``”h]”j$)�”}”(hj¯—h]”hŒptr”…”�”}”(hj±—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj­—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K.hj©—ubjK)�”}”(hhh]”j)�”}”(hŒ'the list head to take the element from.”h]”hŒ'the list head to take the element from.”…”�”}”(hjÈ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÄ—h´K.hjÅ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj©—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÄ—h´K.hj¦—ubj+)�”}”(hŒ5``type`` the type of the struct this is embedded in. ”h]”(j1)�”}”(hŒ``type``”h]”j$)�”}”(hjè—h]”hŒtype”…”�”}”(hjê—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjæ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K/hjâ—ubjK)�”}”(hhh]”j)�”}”(hŒ+the type of the struct this is embedded in.”h]”hŒ+the type of the struct this is embedded in.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jý—h´K/hjþ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjâ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jý—h´K/hj¦—ubj+)�”}”(hŒ3``member`` the identifier passed to ACCESS_PRIVATE.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj!˜h]”hŒmember”…”�”}”(hj#˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K1hj˜ubjK)�”}”(hhh]”j)�”}”(hŒ(the identifier passed to ACCESS_PRIVATE.”h]”hŒ(the identifier passed to ACCESS_PRIVATE.”…”�”}”(hj:˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K0hj7˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j6˜h´K1hj¦—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŠ—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ!list_private_next_entry (C macro)”Œc.list_private_next_entry”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_private_next_entry”h]”jT)�”}”(hŒlist_private_next_entry”h]”jZ)�”}”(hŒlist_private_next_entry”h]”j`)�”}”(hju˜h]”hŒlist_private_next_entry”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj{˜ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjw˜h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K6ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjs˜h²hh³j’˜h´K6ubah}”(h]”jn˜ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j’˜h´K6hjp˜h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjp˜h²hh³j’˜h´K6ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj«˜j j«˜j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ)``list_private_next_entry (pos, member)``”h]”j$)�”}”(hj±˜h]”hŒ%list_private_next_entry (pos, member)”…”�”}”(hj³˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¯˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K8hjù“h²hubj½)�”}”(hŒget the next element in list ”h]”j)�”}”(hŒget the next element in list”h]”hŒget the next element in list”…”�”}”(hj˘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K6hjǘubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jÙ˜h´K6hjù“h²hubj)�”}”(hŒi**Parameters** ``pos`` the type * to cursor ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjæ˜h]”hŒ Parameters”…”�”}”(hjè˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K:hjà˜ubj&)�”}”(hhh]”(j+)�”}”(hŒ``pos`` the type * to cursor ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj™h]”hŒpos”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K7hjÿ˜ubjK)�”}”(hhh]”j)�”}”(hŒthe type * to cursor”h]”hŒthe type * to cursor”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j™h´K7hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÿ˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j™h´K7hjü˜ubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj>™h]”hŒmember”…”�”}”(hj@™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj<™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K9hj8™ubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjW™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K8hjT™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj8™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jS™h´K9hjü˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjà˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ*list_private_next_entry_circular (C macro)”Œ"c.list_private_next_entry_circular”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ list_private_next_entry_circular”h]”jT)�”}”(hŒ list_private_next_entry_circular”h]”jZ)�”}”(hŒ list_private_next_entry_circular”h]”j`)�”}”(hj’™h]”hŒ list_private_next_entry_circular”…”�”}”(hjœ™h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj˜™ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj”™h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K>ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj�™h²hh³j¯™h´K>ubah}”(h]”j‹™ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j¯™h´K>hj�™h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj�™h²hh³j¯™h´K>ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjÈ™j jÈ™j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ8``list_private_next_entry_circular (pos, head, member)``”h]”j$)�”}”(hjΙh]”hŒ4list_private_next_entry_circular (pos, head, member)”…”�”}”(hjЙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÌ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K@hjù“h²hubj½)�”}”(hŒget the next element in list ”h]”j)�”}”(hŒget the next element in list”h]”hŒget the next element in list”…”�”}”(hjè™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K>hjä™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jö™h´K>hjù“h²hubj)�”}”(hX**Parameters** ``pos`` the type * to cursor. ``head`` the list head to take the element from. ``member`` the name of the list_head within the struct. **Description** Wraparound if pos is the last element (return the first element). Note, that list is expected to be not empty.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjšh]”hŒ Parameters”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KBhjý™ubj&)�”}”(hhh]”(j+)�”}”(hŒ``pos`` the type * to cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj"šh]”hŒpos”…”�”}”(hj$šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj šubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K?hjšubjK)�”}”(hhh]”j)�”}”(hŒthe type * to cursor.”h]”hŒthe type * to cursor.”…”�”}”(hj;šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j7šh´K?hj8šubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j7šh´K?hjšubj+)�”}”(hŒ1``head`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj[šh]”hŒhead”…”�”}”(hj]šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjYšubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K@hjUšubjK)�”}”(hhh]”j)�”}”(hŒ'the list head to take the element from.”h]”hŒ'the list head to take the element from.”…”�”}”(hjtšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jpšh´K@hjqšubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjUšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jpšh´K@hjšubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj”šh]”hŒmember”…”�”}”(hj–šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj’šubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KAhjŽšubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj­šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j©šh´KAhjªšubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjŽšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j©šh´KAhjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjý™ubj)�”}”(hŒ**Description**”h]”j)�”}”(hjÏšh]”hŒ Description”…”�”}”(hjÑšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍšubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KChjý™ubj)�”}”(hŒnWraparound if pos is the last element (return the first element). Note, that list is expected to be not empty.”h]”hŒnWraparound if pos is the last element (return the first element). Note, that list is expected to be not empty.”…”�”}”(hjåšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KBhjý™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ!list_private_prev_entry (C macro)”Œc.list_private_prev_entry”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_private_prev_entry”h]”jT)�”}”(hŒlist_private_prev_entry”h]”jZ)�”}”(hŒlist_private_prev_entry”h]”j`)�”}”(hj›h]”hŒlist_private_prev_entry”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj›ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj›h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KLubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj ›h²hh³j+›h´KLubah}”(h]”j›ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j+›h´KLhj ›h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj ›h²hh³j+›h´KLubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjD›j jD›j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ)``list_private_prev_entry (pos, member)``”h]”j$)�”}”(hjJ›h]”hŒ%list_private_prev_entry (pos, member)”…”�”}”(hjL›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjH›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KNhjù“h²hubj½)�”}”(hŒget the prev element in list ”h]”j)�”}”(hŒget the prev element in list”h]”hŒget the prev element in list”…”�”}”(hjd›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KLhj`›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jr›h´KLhjù“h²hubj)�”}”(hŒi**Parameters** ``pos`` the type * to cursor ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj›h]”hŒ Parameters”…”�”}”(hj�›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KPhjy›ubj&)�”}”(hhh]”(j+)�”}”(hŒ``pos`` the type * to cursor ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjž›h]”hŒpos”…”�”}”(hj ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjœ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KMhj˜›ubjK)�”}”(hhh]”j)�”}”(hŒthe type * to cursor”h]”hŒthe type * to cursor”…”�”}”(hj·›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j³›h´KMhj´›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj˜›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j³›h´KMhj•›ubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj×›h]”hŒmember”…”�”}”(hjÙ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÕ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KOhjÑ›ubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjð›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KNhjí›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÑ›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jì›h´KOhj•›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjy›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ*list_private_prev_entry_circular (C macro)”Œ"c.list_private_prev_entry_circular”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ list_private_prev_entry_circular”h]”jT)�”}”(hŒ list_private_prev_entry_circular”h]”jZ)�”}”(hŒ list_private_prev_entry_circular”h]”j`)�”}”(hj+œh]”hŒ list_private_prev_entry_circular”…”�”}”(hj5œh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj1œubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj-œh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KTubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj)œh²hh³jHœh´KTubah}”(h]”j$œah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jHœh´KThj&œh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj&œh²hh³jHœh´KTubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjaœj jaœj¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ8``list_private_prev_entry_circular (pos, head, member)``”h]”j$)�”}”(hjgœh]”hŒ4list_private_prev_entry_circular (pos, head, member)”…”�”}”(hjiœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjeœubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KVhjù“h²hubj½)�”}”(hŒget the prev element in list ”h]”j)�”}”(hŒget the prev element in list”h]”hŒget the prev element in list”…”�”}”(hj�œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KThj}œubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j�œh´KThjù“h²hubj)�”}”(hX**Parameters** ``pos`` the type * to cursor. ``head`` the list head to take the element from. ``member`` the name of the list_head within the struct. **Description** Wraparound if pos is the first element (return the last element). Note, that list is expected to be not empty.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjœœh]”hŒ Parameters”…”�”}”(hjžœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšœubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KXhj–œubj&)�”}”(hhh]”(j+)�”}”(hŒ``pos`` the type * to cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj»œh]”hŒpos”…”�”}”(hj½œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¹œubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KUhjµœubjK)�”}”(hhh]”j)�”}”(hŒthe type * to cursor.”h]”hŒthe type * to cursor.”…”�”}”(hjÔœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jМh´KUhjÑœubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjµœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jМh´KUhj²œubj+)�”}”(hŒ1``head`` the list head to take the element from. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjôœh]”hŒhead”…”�”}”(hjöœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjòœubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KVhjîœubjK)�”}”(hhh]”j)�”}”(hŒ'the list head to take the element from.”h]”hŒ'the list head to take the element from.”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j �h´KVhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjîœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j �h´KVhj²œubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj-�h]”hŒmember”…”�”}”(hj/�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj+�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KWhj'�ubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjF�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jB�h´KWhjC�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj'�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jB�h´KWhj²œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj–œubj)�”}”(hŒ**Description**”h]”j)�”}”(hjh�h]”hŒ Description”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KYhj–œubj)�”}”(hŒnWraparound if pos is the first element (return the last element). Note, that list is expected to be not empty.”h]”hŒnWraparound if pos is the first element (return the last element). Note, that list is expected to be not empty.”…”�”}”(hj~�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KXhj–œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ$list_private_entry_is_head (C macro)”Œc.list_private_entry_is_head”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_private_entry_is_head”h]”jT)�”}”(hŒlist_private_entry_is_head”h]”jZ)�”}”(hŒlist_private_entry_is_head”h]”j`)�”}”(hj§�h]”hŒlist_private_entry_is_head”…”�”}”(hj±�h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj­�ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj©�h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kbubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj¥�h²hh³jÄ�h´Kbubah}”(h]”j �ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jÄ�h´Kbhj¢�h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj¢�h²hh³jÄ�h´Kbubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjÝ�j jÝ�j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ2``list_private_entry_is_head (pos, head, member)``”h]”j$)�”}”(hjã�h]”hŒ.list_private_entry_is_head (pos, head, member)”…”�”}”(hjå�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjá�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kdhjù“h²hubj½)�”}”(hŒ1test if the entry points to the head of the list ”h]”j)�”}”(hŒ0test if the entry points to the head of the list”h]”hŒ0test if the entry points to the head of the list”…”�”}”(hjý�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kbhjù�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j žh´Kbhjù“h²hubj)�”}”(hŒ�**Parameters** ``pos`` the type * to cursor ``head`` the head for your list. ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjžh]”hŒ Parameters”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kfhjžubj&)�”}”(hhh]”(j+)�”}”(hŒ``pos`` the type * to cursor ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj7žh]”hŒpos”…”�”}”(hj9žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj5žubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kchj1žubjK)�”}”(hhh]”j)�”}”(hŒthe type * to cursor”h]”hŒthe type * to cursor”…”�”}”(hjPžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jLžh´KchjMžubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj1žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jLžh´Kchj.žubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjpžh]”hŒhead”…”�”}”(hjržh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjnžubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KdhjjžubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj‰žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j…žh´Kdhj†žubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j…žh´Kdhj.žubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj©žh]”hŒmember”…”�”}”(hj«žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj§žubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kfhj£žubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kehj¿žubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj£žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¾žh´Kfhj.žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ%list_private_for_each_entry (C macro)”Œc.list_private_for_each_entry”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒlist_private_for_each_entry”h]”jT)�”}”(hŒlist_private_for_each_entry”h]”jZ)�”}”(hŒlist_private_for_each_entry”h]”j`)�”}”(hjýžh]”hŒlist_private_for_each_entry”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjŸubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjÿžh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kkubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjûžh²hh³jŸh´Kkubah}”(h]”jöžah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jŸh´Kkhjøžh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjøžh²hh³jŸh´Kkubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj3Ÿj j3Ÿj¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ3``list_private_for_each_entry (pos, head, member)``”h]”j$)�”}”(hj9Ÿh]”hŒ/list_private_for_each_entry (pos, head, member)”…”�”}”(hj;Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj7Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kmhjù“h²hubj½)�”}”(hŒ iterate over list of given type ”h]”j)�”}”(hŒiterate over list of given type”h]”hŒiterate over list of given type”…”�”}”(hjSŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KkhjOŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jaŸh´Kkhjù“h²hubj)�”}”(hŒœ**Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjnŸh]”hŒ Parameters”…”�”}”(hjpŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlŸubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KohjhŸubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj�Ÿh]”hŒpos”…”�”}”(hj�Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj‹Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Klhj‡ŸubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hj¦Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j¢Ÿh´Klhj£Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj‡Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¢Ÿh´Klhj„Ÿubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjÆŸh]”hŒhead”…”�”}”(hjÈŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÄŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KmhjÀŸubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjߟh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÛŸh´KmhjÜŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÀŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÛŸh´Kmhj„Ÿubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjÿŸh]”hŒmember”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjýŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KohjùŸubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Knhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjùŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j h´Kohj„Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ-list_private_for_each_entry_reverse (C macro)”Œ%c.list_private_for_each_entry_reverse”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ#list_private_for_each_entry_reverse”h]”jT)�”}”(hŒ#list_private_for_each_entry_reverse”h]”jZ)�”}”(hŒ#list_private_for_each_entry_reverse”h]”j`)�”}”(hjS h]”hŒ#list_private_for_each_entry_reverse”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjY ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjU h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kvubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjQ h²hh³jp h´Kvubah}”(h]”jL ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jp h´KvhjN h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjN h²hh³jp h´Kvubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj‰ j j‰ j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ;``list_private_for_each_entry_reverse (pos, head, member)``”h]”j$)�”}”(hj� h]”hŒ7list_private_for_each_entry_reverse (pos, head, member)”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kxhjù“h²hubj½)�”}”(hŒ+iterate backwards over list of given type. ”h]”j)�”}”(hŒ*iterate backwards over list of given type.”h]”hŒ*iterate backwards over list of given type.”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kvhj¥ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j· h´Kvhjù“h²hubj)�”}”(hŒœ**Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÄ h]”hŒ Parameters”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kzhj¾ ubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjã h]”hŒpos”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjá ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KwhjÝ ubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jø h´Kwhjù ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjÝ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jø h´KwhjÚ ubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj¡h]”hŒhead”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kxhj¡ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj5¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j1¡h´Kxhj2¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j1¡h´KxhjÚ ubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjU¡h]”hŒmember”…”�”}”(hjW¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjS¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KzhjO¡ubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjn¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kyhjk¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjO¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jj¡h´KzhjÚ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¾ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ.list_private_for_each_entry_continue (C macro)”Œ&c.list_private_for_each_entry_continue”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ$list_private_for_each_entry_continue”h]”jT)�”}”(hŒ$list_private_for_each_entry_continue”h]”jZ)�”}”(hŒ$list_private_for_each_entry_continue”h]”j`)�”}”(hj©¡h]”hŒ$list_private_for_each_entry_continue”…”�”}”(hj³¡h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj¯¡ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj«¡h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K�ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj§¡h²hh³jÆ¡h´K�ubah}”(h]”j¢¡ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jÆ¡h´K�hj¤¡h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj¤¡h²hh³jÆ¡h´K�ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjß¡j jß¡j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ<``list_private_for_each_entry_continue (pos, head, member)``”h]”j$)�”}”(hjå¡h]”hŒ8list_private_for_each_entry_continue (pos, head, member)”…”�”}”(hjç¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjã¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kƒhjù“h²hubj½)�”}”(hŒ+continue iteration over list of given type ”h]”j)�”}”(hŒ*continue iteration over list of given type”h]”hŒ*continue iteration over list of given type”…”�”}”(hjÿ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K�hjû¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j ¢h´K�hjù“h²hubj)�”}”(hX**Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct. **Description** Continue to iterate over list of given type, continuing after the current position.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj¢h]”hŒ Parameters”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K…hj¢ubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj9¢h]”hŒpos”…”�”}”(hj;¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj7¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K‚hj3¢ubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjR¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jN¢h´K‚hjO¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj3¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jN¢h´K‚hj0¢ubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjr¢h]”hŒhead”…”�”}”(hjt¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjp¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kƒhjl¢ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj‹¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j‡¢h´Kƒhjˆ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjl¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j‡¢h´Kƒhj0¢ubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj«¢h]”hŒmember”…”�”}”(hj­¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj©¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K„hj¥¢ubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjÄ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÀ¢h´K„hjÁ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj¥¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÀ¢h´K„hj0¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢ubj)�”}”(hŒ**Description**”h]”j)�”}”(hjæ¢h]”hŒ Description”…”�”}”(hjè¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjä¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K†hj¢ubj)�”}”(hŒSContinue to iterate over list of given type, continuing after the current position.”h]”hŒSContinue to iterate over list of given type, continuing after the current position.”…”�”•H¹}”(hjü¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K…hj¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ6list_private_for_each_entry_continue_reverse (C macro)”Œ.c.list_private_for_each_entry_continue_reverse”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ,list_private_for_each_entry_continue_reverse”h]”jT)�”}”(hŒ,list_private_for_each_entry_continue_reverse”h]”jZ)�”}”(hŒ,list_private_for_each_entry_continue_reverse”h]”j`)�”}”(hj%£h]”hŒ,list_private_for_each_entry_continue_reverse”…”�”}”(hj/£h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj+£ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj'£h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K�ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj#£h²hh³jB£h´K�ubah}”(h]”j£ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jB£h´K�hj £h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj £h²hh³jB£h´K�ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj[£j j[£j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒD``list_private_for_each_entry_continue_reverse (pos, head, member)``”h]”j$)�”}”(hja£h]”hŒ@list_private_for_each_entry_continue_reverse (pos, head, member)”…”�”}”(hjc£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj_£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K‘hjù“h²hubj½)�”}”(hŒ'iterate backwards from the given point ”h]”j)�”}”(hŒ&iterate backwards from the given point”h]”hŒ&iterate backwards from the given point”…”�”}”(hj{£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K�hjw£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j‰£h´K�hjù“h²hubj)�”}”(hX **Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct. **Description** Start to iterate over list of given type backwards, continuing after the current position.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj–£h]”hŒ Parameters”…”�”}”(hj˜£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K“hj�£ubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hjµ£h]”hŒpos”…”�”}”(hj·£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj³£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K�hj¯£ubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjΣh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÊ£h´K�hjË£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj¯£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÊ£h´K�hj¬£ubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjî£h]”hŒhead”…”�”}”(hjð£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjì£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K‘hjè£ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j¤h´K‘hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjè£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¤h´K‘hj¬£ubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj'¤h]”hŒmember”…”�”}”(hj)¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj%¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K’hj!¤ubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj@¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j<¤h´K’hj=¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj!¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j<¤h´K’hj¬£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�£ubj)�”}”(hŒ**Description**”h]”j)�”}”(hjb¤h]”hŒ Description”…”�”}”(hjd¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K”hj�£ubj)�”}”(hŒZStart to iterate over list of given type backwards, continuing after the current position.”h]”hŒZStart to iterate over list of given type backwards, continuing after the current position.”…”�”}”(hjx¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K“hj�£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ*list_private_for_each_entry_from (C macro)”Œ"c.list_private_for_each_entry_from”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ list_private_for_each_entry_from”h]”jT)�”}”(hŒ list_private_for_each_entry_from”h]”jZ)�”}”(hŒ list_private_for_each_entry_from”h]”j`)�”}”(hj¡¤h]”hŒ list_private_for_each_entry_from”…”�”}”(hj«¤h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj§¤ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj£¤h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K�ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjŸ¤h²hh³j¾¤h´K�ubah}”(h]”jš¤ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j¾¤h´K�hjœ¤h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjœ¤h²hh³j¾¤h´K�ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjפj jפj¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ8``list_private_for_each_entry_from (pos, head, member)``”h]”j$)�”}”(hjݤh]”hŒ4list_private_for_each_entry_from (pos, head, member)”…”�”}”(hjߤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÛ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KŸhjù“h²hubj½)�”}”(hŒ7iterate over list of given type from the current point ”h]”j)�”}”(hŒ6iterate over list of given type from the current point”h]”hŒ6iterate over list of given type from the current point”…”�”}”(hj÷¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K�hjó¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³j¥h´K�hjù“h²hubj)�”}”(hŒñ**Parameters** ``pos`` the type * to use as a loop cursor. ``head`` the head for your list. ``member`` the name of the list_head within the struct. **Description** Iterate over list of given type, continuing from current position.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj¥h]”hŒ Parameters”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K¡hj ¥ubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj1¥h]”hŒpos”…”�”}”(hj3¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj/¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kžhj+¥ubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjJ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jF¥h´KžhjG¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj+¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jF¥h´Kžhj(¥ubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hjj¥h]”hŒhead”…”�”}”(hjl¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjh¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KŸhjd¥ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjƒ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j¥h´KŸhj€¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjd¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¥h´KŸhj(¥ubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hj£¥h]”hŒmember”…”�”}”(hj¥¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¡¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K hj�¥ubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj¼¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j¸¥h´K hj¹¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj�¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j¸¥h´K hj(¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ¥ubj)�”}”(hŒ**Description**”h]”j)�”}”(hjÞ¥h]”hŒ Description”…”�”}”(hjà¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K¢hj ¥ubj)�”}”(hŒBIterate over list of given type, continuing from current position.”h]”hŒBIterate over list of given type, continuing from current position.”…”�”}”(hjô¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K¡hj ¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ2list_private_for_each_entry_from_reverse (C macro)”Œ*c.list_private_for_each_entry_from_reverse”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ(list_private_for_each_entry_from_reverse”h]”jT)�”}”(hŒ(list_private_for_each_entry_from_reverse”h]”jZ)�”}”(hŒ(list_private_for_each_entry_from_reverse”h]”j`)�”}”(hj¦h]”hŒ(list_private_for_each_entry_from_reverse”…”�”}”(hj'¦h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj#¦ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj¦h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K©ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj¦h²hh³j:¦h´K©ubah}”(h]”j¦ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³j:¦h´K©hj¦h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj¦h²hh³j:¦h´K©ubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸjS¦j jS¦j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ@``list_private_for_each_entry_from_reverse (pos, head, member)``”h]”j$)�”}”(hjY¦h]”hŒ¨h´K·hj?¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj#¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j>¨h´K·hj ¨ubj+)�”}”(hŒ1``n`` another type * to use as temporary storage ”h]”(j1)�”}”(hŒ``n``”h]”j$)�”}”(hjb¨h]”hŒn”…”�”}”(hjd¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj`¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K¸hj\¨ubjK)�”}”(hhh]”j)�”}”(hŒ*another type * to use as temporary storage”h]”hŒ*another type * to use as temporary storage”…”�”}”(hj{¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jw¨h´K¸hjx¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj\¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jw¨h´K¸hj ¨ubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj›¨h]”hŒhead”…”�”}”(hj�¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj™¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K¹hj•¨ubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hj´¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j°¨h´K¹hj±¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj•¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j°¨h´K¹hj ¨ubj+)�”}”(hŒ7``member`` the name of the list_head within the struct.”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjÔ¨h]”hŒmember”…”�”}”(hjÖ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjÒ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´K»hjΨubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hjí¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´Kºhjê¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjΨubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jé¨h´K»hj ¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ3list_private_for_each_entry_safe_continue (C macro)”Œ+c.list_private_for_each_entry_safe_continue”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ)list_private_for_each_entry_safe_continue”h]”jT)�”}”(hŒ)list_private_for_each_entry_safe_continue”h]”jZ)�”}”(hŒ)list_private_for_each_entry_safe_continue”h]”j`)�”}”(hj(©h]”hŒ)list_private_for_each_entry_safe_continue”…”�”}”(hj2©h²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hj.©ubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhj*©h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÃubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hj&©h²hh³jE©h´KÃubah}”(h]”j!©ah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³jE©h´KÃhj#©h²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhj#©h²hh³jE©h´KÃubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj^©j j^©j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒD``list_private_for_each_entry_safe_continue (pos, n, head, member)``”h]”j$)�”}”(hjd©h]”hŒ@list_private_for_each_entry_safe_continue (pos, n, head, member)”…”�”}”(hjf©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjb©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÅhjù“h²hubj½)�”}”(hŒ-continue list iteration safe against removal ”h]”j)�”}”(hŒ,continue list iteration safe against removal”h]”hŒ,continue list iteration safe against removal”…”�”}”(hj~©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÃhjz©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼h³jŒ©h´KÃhjù“h²hubj)�”}”(hXG**Parameters** ``pos`` the type * to use as a loop cursor. ``n`` another type * to use as temporary storage ``head`` the head for your list. ``member`` the name of the list_head within the struct. **Description** Iterate over list of given type, continuing after current point, safe against removal of list entry.”h]”(j)�”}”(hŒ**Parameters**”h]”j)�”}”(hj™©h]”hŒ Parameters”…”�”}”(hj›©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj—©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÇhj“©ubj&)�”}”(hhh]”(j+)�”}”(hŒ,``pos`` the type * to use as a loop cursor. ”h]”(j1)�”}”(hŒ``pos``”h]”j$)�”}”(hj¸©h]”hŒpos”…”�”}”(hjº©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj¶©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÄhj²©ubjK)�”}”(hhh]”j)�”}”(hŒ#the type * to use as a loop cursor.”h]”hŒ#the type * to use as a loop cursor.”…”�”}”(hjÑ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jÍ©h´KÄhjΩubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj²©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jÍ©h´KÄhj¯©ubj+)�”}”(hŒ1``n`` another type * to use as temporary storage ”h]”(j1)�”}”(hŒ``n``”h]”j$)�”}”(hjñ©h]”hŒn”…”�”}”(hjó©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjï©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÅhjë©ubjK)�”}”(hhh]”j)�”}”(hŒ*another type * to use as temporary storage”h]”hŒ*another type * to use as temporary storage”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jªh´KÅhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhjë©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jªh´KÅhj¯©ubj+)�”}”(hŒ!``head`` the head for your list. ”h]”(j1)�”}”(hŒ``head``”h]”j$)�”}”(hj*ªh]”hŒhead”…”�”}”(hj,ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hj(ªubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÆhj$ªubjK)�”}”(hhh]”j)�”}”(hŒthe head for your list.”h]”hŒthe head for your list.”…”�”}”(hjCªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³j?ªh´KÆhj@ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj$ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³j?ªh´KÆhj¯©ubj+)�”}”(hŒ8``member`` the name of the list_head within the struct. ”h]”(j1)�”}”(hŒ ``member``”h]”j$)�”}”(hjcªh]”hŒmember”…”�”}”(hjeªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjaªubah}”(h]”h ]”h"]”h$]”h&]”uh1j0h³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÇhj]ªubjK)�”}”(hhh]”j)�”}”(hŒ,the name of the list_head within the struct.”h]”hŒ,the name of the list_head within the struct.”…”�”}”(hj|ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³jxªh´KÇhjyªubah}”(h]”h ]”h"]”h$]”h&]”uh1jJhj]ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j*h³jxªh´KÇhj¯©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“©ubj)�”}”(hŒ**Description**”h]”j)�”}”(hjžªh]”hŒ Description”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœªubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÉhj“©ubj)�”}”(hŒdIterate over list of given type, continuing after current point, safe against removal of list entry.”h]”hŒdIterate over list of given type, continuing after current point, safe against removal of list entry.”…”�”}”(hj´ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÈhj“©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjù“h²hh³Nh´Nubj8)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jDŒ/list_private_for_each_entry_safe_from (C macro)”Œ'c.list_private_for_each_entry_safe_from”hNt”auh1j7hjù“h²hh³Nh´NubjI)�”}”(hhh]”(jN)�”}”(hŒ%list_private_for_each_entry_safe_from”h]”jT)�”}”(hŒ%list_private_for_each_entry_safe_from”h]”jZ)�”}”(hŒ%list_private_for_each_entry_safe_from”h]”j`)�”}”(hjݪh]”hŒ%list_private_for_each_entry_safe_from”…”�”}”(hjçªh²hh³Nh´Nubah}”(h]”h ]”jkah"]”h$]”h&]”uh1j_hjãªubah}”(h]”h ]”(jrjseh"]”h$]”h&]”hÅhÆuh1jYhjߪh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/core-api/list:784: ./include/linux/list_private.h”h´KÓubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj~ˆuh1jSjj€hjÛªh²hh³júªh´KÓubah}”(h]”jÖªah ]”(j„j…eh"]”h$]”h&]”j‰ˆjŠ)j‹huh1jMh³júªh´KÓhjتh²hubj�)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jŒhjتh²hh³júªh´KÓubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”jžjŠjŸj«j j«j¡‰j¢‰j£‰uh1jHh²hhjù“h³Nh´Nubj)�”}”(hŒ@``list_private_for_each_entry_safe_from (pos, n, head, member)``”h]”j$)�”}”(hj«h]”hŒj¤>j8Bj=BjWDj\Dj[Fj`Fj—HjœHjÓJjØJjLLjQLjÈMjÍMjDOjIOjÀPjÅPj