€•Œ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/idr”Œ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/idr”Œ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/idr”Œ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/idr”Œ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/idr”Œ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/idr”Œ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/idr”Œ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/idr.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ ID Allocation”h]”hŒ ID Allocation”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”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ŒMatthew Wilcox ”h]”hŒ paragraph”“”)�”}”(hŒMatthew Wilcox”h]”hŒMatthew Wilcox”…”�”}”(hhÿh²hh³Nh´Nubah}”(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É)�”}”(hhh]”(hÎ)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K ubhþ)�”}”(hXëA common problem to solve is allocating identifiers (IDs); generally small numbers which identify a thing. Examples include file descriptors, process IDs, packet identifiers in networking protocols, SCSI tags and device instance numbers. The IDR and the IDA provide a reasonable solution to the problem to avoid everybody inventing their own. The IDR provides the ability to map an ID to a pointer, while the IDA provides only ID allocation, and as a result is much more memory-efficient.”h]”hXëA common problem to solve is allocating identifiers (IDs); generally small numbers which identify a thing. Examples include file descriptors, process IDs, packet identifiers in networking protocols, SCSI tags and device instance numbers. The IDR and the IDA provide a reasonable solution to the problem to avoid everybody inventing their own. The IDR provides the ability to map an ID to a pointer, while the IDA provides only ID allocation, and as a result is much more memory-efficient.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K hjh²hubhþ)�”}”(hŒOThe IDR interface is deprecated; please use the :doc:`XArray ` instead.”h]”(hŒ0The IDR interface is deprecated; please use the ”…”�”}”(hj>h²hh³Nh´Nubh)�”}”(hŒ:doc:`XArray `”h]”hŒinline”“”)�”}”(hjHh]”hŒXArray”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-doc”eh"]”h$]”h&]”uh1jJhjFubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ core-api/idr”Œ refdomain”jWŒreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œxarray”uh1hh³hÇh´Khj>ubhŒ instead.”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khjh²hubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ IDR usage”h]”hŒ IDR usage”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj}h²hh³hÇh´Kubhþ)�”}”(hŒ‚Start by initialising an IDR, either with DEFINE_IDR() for statically allocated IDRs or idr_init() for dynamically allocated IDRs.”h]”hŒ‚Start by initialising an IDR, either with DEFINE_IDR() for statically allocated IDRs or idr_init() for dynamically allocated IDRs.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khj}h²hubhþ)�”}”(hŒ¡You can call idr_alloc() to allocate an unused ID. Look up the pointer you associated with the ID by calling idr_find() and free the ID by calling idr_remove().”h]”hŒ¡You can call idr_alloc() to allocate an unused ID. Look up the pointer you associated with the ID by calling idr_find() and free the ID by calling idr_remove().”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khj}h²hubhþ)�”}”(hX#If you need to change the pointer associated with an ID, you can call idr_replace(). One common reason to do this is to reserve an ID by passing a ``NULL`` pointer to the allocation function; initialise the object with the reserved ID and finally insert the initialised object into the IDR.”h]”(hŒ”If you need to change the pointer associated with an ID, you can call idr_replace(). One common reason to do this is to reserve an ID by passing a ”…”�”}”(hjªh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjªubhŒ‡ pointer to the allocation function; initialise the object with the reserved ID and finally insert the initialised object into the IDR.”…”�”}”(hjªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K"hj}h²hubhþ)�”}”(hŒøSome users need to allocate IDs larger than ``INT_MAX``. So far all of these users have been content with a ``UINT_MAX`` limit, and they use idr_alloc_u32(). If you need IDs that will not fit in a u32, we will work with you to address your needs.”h]”(hŒ,Some users need to allocate IDs larger than ”…”�”}”(hjÌh²hh³Nh´Nubj³)�”}”(hŒ ``INT_MAX``”h]”hŒINT_MAX”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÌubhŒ6. So far all of these users have been content with a ”…”�”}”(hjÌh²hh³Nh´Nubj³)�”}”(hŒ ``UINT_MAX``”h]”hŒUINT_MAX”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÌubhŒ limit, and they use idr_alloc_u32(). If you need IDs that will not fit in a u32, we will work with you to address your needs.”…”�”}”(hjÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K(hj}h²hubhþ)�”}”(hŒ¶If you need to allocate IDs sequentially, you can use idr_alloc_cyclic(). The IDR becomes less efficient when dealing with larger IDs, so using this function comes at a slight cost.”h]”hŒ¶If you need to allocate IDs sequentially, you can use idr_alloc_cyclic(). The IDR becomes less efficient when dealing with larger IDs, so using this function comes at a slight cost.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K-hj}h²hubhþ)�”}”(hX,To perform an action on all pointers used by the IDR, you can either use the callback-based idr_for_each() or the iterator-style idr_for_each_entry(). You may need to use idr_for_each_entry_continue() to continue an iteration. You can also use idr_get_next() if the iterator doesn't fit your needs.”h]”hX.To perform an action on all pointers used by the IDR, you can either use the callback-based idr_for_each() or the iterator-style idr_for_each_entry(). You may need to use idr_for_each_entry_continue() to continue an iteration. You can also use idr_get_next() if the iterator doesn’t fit your needs.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K1hj}h²hubhþ)�”}”(hŒÚWhen you have finished using an IDR, you can call idr_destroy() to release the memory used by the IDR. This will not free the objects pointed to from the IDR; if you want to do that, use one of the iterators to do it.”h]”hŒÚWhen you have finished using an IDR, you can call idr_destroy() to release the memory used by the IDR. This will not free the objects pointed to from the IDR; if you want to do that, use one of the iterators to do it.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K7hj}h²hubhþ)�”}”(hŒUYou can use idr_is_empty() to find out whether there are any IDs currently allocated.”h]”hŒUYou can use idr_is_empty() to find out whether there are any IDs currently allocated.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K` in a data structure, then initialise it using ida_init()). To allocate a new ID, call ida_alloc(), ida_alloc_min(), ida_alloc_max() or ida_alloc_range(). To free an ID, call ida_free().”h]”(hŒ÷The IDA is an ID allocator which does not provide the ability to associate an ID with a pointer. As such, it only needs to store one bit per ID, and so is more space efficient than an IDR. To use an IDA, define it using DEFINE_IDA() (or embed a ”…”�”}”(hjžh²hh³Nh´Nubh)�”}”(hŒ:c:type:`struct ida `”h]”j³)�”}”(hj¨h]”hŒ struct ida”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”(jVŒc”Œc-type”eh"]”h$]”h&]”uh1j²hj¦ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jcŒ refdomain”j´Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jiŒida”uh1hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:75: ./lib/idr.c”h´M7hjžubhŒ» in a data structure, then initialise it using ida_init()). To allocate a new ID, call ida_alloc(), ida_alloc_min(), ida_alloc_max() or ida_alloc_range(). To free an ID, call ida_free().”…”�”}”(hjžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÆh´M7hj�h²hubhþ)�”}”(hŒ¹ida_destroy() can be used to dispose of an IDA without needing to free the individual IDs in it. You can use ida_is_empty() to find out whether the IDA has any IDs currently allocated.”h]”hŒ¹ida_destroy() can be used to dispose of an IDA without needing to free the individual IDs in it. You can use ida_is_empty() to find out whether the IDA has any IDs currently allocated.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:75: ./lib/idr.c”h´M?hj�h²hubhþ)�”}”(hŒsThe IDA handles its own locking. It is safe to call any of the IDA functions without synchronisation in your code.”h]”hŒsThe IDA handles its own locking. It is safe to call any of the IDA functions without synchronisation in your code.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:75: ./lib/idr.c”h´MChj�h²hubhþ)�”}”(hŒ�IDs are currently limited to the range [0-INT_MAX]. If this is an awkward limitation, it should be quite straightforward to raise the maximum.”h]”hŒ�IDs are currently limited to the range [0-INT_MAX]. If this is an awkward limitation, it should be quite straightforward to raise the maximum.”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:75: ./lib/idr.c”h´MFhj�h²hubeh}”(h]”Œ ida-usage”ah ]”h"]”Œ ida usage”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KIubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFunctions and structures”h]”hŒFunctions and structures”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´KOubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”ŒIDR_INIT (C macro)”Œ c.IDR_INIT”hNt”auh1jhjh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒIDR_INIT”h]”hŒdesc_signature_line”“”)�”}”(hŒIDR_INIT”h]”hŒ desc_name”“”)�”}”(hŒIDR_INIT”h]”hŒ desc_sig_name”“”)�”}”(hj1h]”hŒIDR_INIT”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j?hj;ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1j9hj5h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K+ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j3Œsphinx_line_type”Œ declarator”hj/h²hh³jWh´K+ubah}”(h]”j&ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j-h³jWh´K+hj*h²hubhŒ desc_content”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jlhj*h²hh³jWh´K+ubeh}”(h]”h ]”(j´Œmacro”eh"]”h$]”h&]”Œdomain”j´Œobjtype”jzŒdesctype”jzŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j(h²hhjh³Nh´Nubhþ)�”}”(hŒ``IDR_INIT (name)``”h]”j³)�”}”(hj†h]”hŒIDR_INIT (name)”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K-hjh²hubhŒ block_quote”“”)�”}”(hŒInitialise an IDR. ”h]”hþ)�”}”(hŒInitialise an IDR.”h]”hŒInitialise an IDR.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K+hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jœh³j°h´K+hjh²hubhŒ container”“”)�”}”(hŒd**Parameters** ``name`` Name of IDR. **Description** A freshly-initialised IDR contains no IDs.”h]”(hþ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hj¿h]”hŒ Parameters”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K/hj¹ubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ``name`` Name of IDR. ”h]”(hŒterm”“”)�”}”(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&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K,hjÞubhŒ definition”“”)�”}”(hhh]”hþ)�”}”(hŒ Name of IDR.”h]”hŒ Name of IDR.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jûh´K,hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jûh´K,hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hj¹ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj#h]”hŒ Description”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K.hj¹ubhþ)�”}”(hŒ*A freshly-initialised IDR contains no IDs.”h]”hŒ*A freshly-initialised IDR contains no IDs.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K-hj¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$ŒDEFINE_IDR (C macro)”Œ c.DEFINE_IDR”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ DEFINE_IDR”h]”j4)�”}”(hŒ DEFINE_IDR”h]”j:)�”}”(hŒ DEFINE_IDR”h]”j@)�”}”(hjbh]”hŒ DEFINE_IDR”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjhubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjdh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K3ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj`h²hh³jh´K3ubah}”(h]”j[ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jh´K3hj]h²hubjm)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jlhj]h²hh³jh´K3ubeh}”(h]”h ]”(j´Œmacro”eh"]”h$]”h&]”j~j´jj˜j€j˜j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubhþ)�”}”(hŒ``DEFINE_IDR (name)``”h]”j³)�”}”(hjžh]”hŒDEFINE_IDR (name)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K5hjh²hubj�)�”}”(hŒ#Define a statically-allocated IDR. ”h]”hþ)�”}”(hŒ"Define a statically-allocated IDR.”h]”hŒ"Define a statically-allocated IDR.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K3hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœh³jÆh´K3hjh²hubj¸)�”}”(hŒ«**Parameters** ``name`` Name of IDR. **Description** An IDR defined using this macro is ready for use with no additional initialisation required. It contains no IDs.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjÓh]”hŒ Parameters”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K7hjÍubjØ)�”}”(hhh]”jÝ)�”}”(hŒ``name`` Name of IDR. ”h]”(jã)�”}”(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&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K4hjìubjý)�”}”(hhh]”hþ)�”}”(hŒ Name of IDR.”h]”hŒ Name of IDR.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´K4hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jh´K4hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjÍubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj-h]”hŒ Description”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K6hjÍubhþ)�”}”(hŒqAn IDR defined using this macro is ready for use with no additional initialisation required. It contains no IDs.”h]”hŒqAn IDR defined using this macro is ready for use with no additional initialisation required. It contains no IDs.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K5hjÍubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_get_cursor (C function)”Œc.idr_get_cursor”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ3unsigned int idr_get_cursor (const struct idr *idr)”h]”j4)�”}”(hŒ2unsigned int idr_get_cursor(const struct idr *idr)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jrhjnh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Khj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_set_cursor (C function)”Œc.idr_set_cursor”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ7void idr_set_cursor (struct idr *idr, unsigned int val)”h]”j4)�”}”(hŒ6void idr_set_cursor(struct idr *idr, unsigned int val)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjAh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KIubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjAh²hh³jSh´KIubj:)�”}”(hŒidr_set_cursor”h]”j@)�”}”(hŒidr_set_cursor”h]”hŒidr_set_cursor”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjbubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjAh²hh³jSh´KIubjÊ)�”}”(hŒ#(struct idr *idr, unsigned int val)”h]”(jÐ)�”}”(hŒstruct idr *idr”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhj~ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj~ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j¢Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jhsbŒc.idr_set_cursor”†”asbuh1hhj~ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj~ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj~ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjzubjÐ)�”}”(hŒunsigned int val”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjðubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjðubjs)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjðubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjðubj@)�”}”(hŒval”h]”hŒval”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjzubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhjAh²hh³jSh´KIubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj=h²hh³jSh´KIubah}”(h]”j8ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jSh´KIhj:h²hubjm)�”}”(hhh]”hþ)�”}”(hŒ0Set the current position of the cyclic allocator”h]”hŒ0Set the current position of the cyclic allocator”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KIhjSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj:h²hh³jSh´KIubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjnj€jnj�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hŒã**Parameters** ``struct idr *idr`` idr handle ``unsigned int val`` new position **Description** The next call to idr_alloc_cyclic() will return **val** if it is free (otherwise the search will start from this position).”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjxh]”hŒ Parameters”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KMhjrubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ``struct idr *idr`` idr handle ”h]”(jã)�”}”(hŒ``struct idr *idr``”h]”j³)�”}”(hj—h]”hŒstruct idr *idr”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KJhj‘ubjý)�”}”(hhh]”hþ)�”}”(hŒ idr handle”h]”hŒ idr handle”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¬h´KJhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j¬h´KJhjŽubjÝ)�”}”(hŒ"``unsigned int val`` new position ”h]”(jã)�”}”(hŒ``unsigned int val``”h]”j³)�”}”(hjÐh]”hŒunsigned int val”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KKhjÊubjý)�”}”(hhh]”hþ)�”}”(hŒ new position”h]”hŒ new position”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jåh´KKhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jåh´KKhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjrubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KMhjrubhþ)�”}”(hŒ{The next call to idr_alloc_cyclic() will return **val** if it is free (otherwise the search will start from this position).”h]”(hŒ0The next call to idr_alloc_cyclic() will return ”…”�”}”(hj! h²hh³Nh´NubjÂ)�”}”(hŒ**val**”h]”hŒval”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj! ubhŒD if it is free (otherwise the search will start from this position).”…”�”}”(hj! h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KLhjrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_init_base (C function)”Œc.idr_init_base”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ.void idr_init_base (struct idr *idr, int base)”h]”j4)�”}”(hŒ-void idr_init_base(struct idr *idr, int base)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj^ h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K‘ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj^ h²hh³jp h´K‘ubj:)�”}”(hŒ idr_init_base”h]”j@)�”}”(hŒ idr_init_base”h]”hŒ idr_init_base”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj^ h²hh³jp h´K‘ubjÊ)�”}”(hŒ(struct idr *idr, int base)”h]”(jÐ)�”}”(hŒstruct idr *idr”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhj› ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj› ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjº ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j¿ Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)j… sbŒc.idr_init_base”†”asbuh1hhj› ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj› ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj› ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj› ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj— ubjÐ)�”}”(hŒint base”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj ubj@)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj— ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj^ h²hh³jp h´K‘ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hjZ h²hh³jp h´K‘ubah}”(h]”jU ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jp h´K‘hjW h²hubjm)�”}”(hhh]”hþ)�”}”(hŒInitialise an IDR.”h]”hŒInitialise an IDR.”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K‘hjT h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjW h²hh³jp h´K‘ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjo j€jo j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hŒÉ**Parameters** ``struct idr *idr`` IDR handle. ``int base`` The base value for the IDR. **Description** This variation of idr_init() creates an IDR which will allocate IDs starting at ``base``.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjy h]”hŒ Parameters”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjw ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K•hjs ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``struct idr *idr``”h]”j³)�”}”(hj˜ h]”hŒstruct idr *idr”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj– ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K’hj’ ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j­ h´K’hj® ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj’ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j­ h´K’hj� ubjÝ)�”}”(hŒ)``int base`` The base value for the IDR. ”h]”(jã)�”}”(hŒ ``int base``”h]”j³)�”}”(hjÑ h]”hŒint base”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÏ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K“hjË ubjý)�”}”(hhh]”hþ)�”}”(hŒThe base value for the IDR.”h]”hŒThe base value for the IDR.”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jæ h´K“hjç ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjË ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jæ h´K“hj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjs ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K•hjs ubhþ)�”}”(hŒYThis variation of idr_init() creates an IDR which will allocate IDs starting at ``base``.”h]”(hŒPThis variation of idr_init() creates an IDR which will allocate IDs starting at ”…”�”}”(hj" h²hh³Nh´Nubj³)�”}”(hŒ``base``”h]”hŒbase”…”�”}”(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³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K”hjs ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_init (C function)”Œ c.idr_init”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒvoid idr_init (struct idr *idr)”h]”j4)�”}”(hŒvoid idr_init(struct idr *idr)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj_ h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj_ h²hh³jq h´K ubj:)�”}”(hŒidr_init”h]”j@)�”}”(hŒidr_init”h]”hŒidr_init”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj€ ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj_ h²hh³jq h´K ubjÊ)�”}”(hŒ(struct idr *idr)”h]”jÐ)�”}”(hŒstruct idr *idr”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjœ ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjœ ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj» ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”jÀ Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)j† sbŒ c.idr_init”†”asbuh1hhjœ ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjœ ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjœ ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjœ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj˜ ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj_ h²hh³jq h´K ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj[ h²hh³jq h´K ubah}”(h]”jV ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jq h´K hjX h²hubjm)�”}”(hhh]”hþ)�”}”(hŒInitialise an IDR.”h]”hŒInitialise an IDR.”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjX h²hh³jq h´K ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jj; j€j; j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hŒ¨**Parameters** ``struct idr *idr`` IDR handle. **Description** Initialise a dynamically allocated IDR. To initialise a statically allocated IDR, use DEFINE_IDR().”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjE h]”hŒ Parameters”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjC ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¤hj? ubjØ)�”}”(hhh]”jÝ)�”}”(hŒ ``struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``struct idr *idr``”h]”j³)�”}”(hjd h]”hŒstruct idr *idr”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¡hj^ ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jy h´K¡hjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj^ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jy h´K¡hj[ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hj? ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjŸ h]”hŒ Description”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K£hj? ubhþ)�”}”(hŒdInitialise a dynamically allocated IDR. To initialise a statically allocated IDR, use DEFINE_IDR().”h]”hŒdInitialise a dynamically allocated IDR. To initialise a statically allocated IDR, use DEFINE_IDR().”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¢hj? ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_is_empty (C function)”Œc.idr_is_empty”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ)bool idr_is_empty (const struct idr *idr)”h]”j4)�”}”(hŒ(bool idr_is_empty(const struct idr *idr)”h]”(js)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjà h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¬ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjà h²hh³jò h´K¬ubj:)�”}”(hŒ idr_is_empty”h]”j@)�”}”(hŒ idr_is_empty”h]”hŒ idr_is_empty”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjà h²hh³jò h´K¬ubjÊ)�”}”(hŒ(const struct idr *idr)”h]”jÐ)�”}”(hŒconst struct idr *idr”h]”(jÖ)�”}”(hjÙh]”hŒconst”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhj 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&]”uh1jÕhj ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjW ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j\ Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)j sbŒc.idr_is_empty”†”asbuh1hhj ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhjà h²hh³jò h´K¬ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hjÜ h²hh³jò h´K¬ubah}”(h]”j× ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jò h´K¬hjÙ h²hubjm)�”}”(hhh]”hþ)�”}”(hŒAre there any IDs allocated?”h]”hŒAre there any IDs allocated?”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¬hj¼ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÙ h²hh³jò h´K¬ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jj× j€j× j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hŒ{**Parameters** ``const struct idr *idr`` IDR handle. **Return** ``true`` if any IDs have been allocated from this IDR.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjá h]”hŒ Parameters”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K°hjÛ ubjØ)�”}”(hhh]”jÝ)�”}”(hŒ&``const struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``const struct idr *idr``”h]”j³)�”}”(hjh]”hŒconst struct idr *idr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjþ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K­hjú ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´K­hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjú ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jh´K­hj÷ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjÛ ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hj;h]”hŒReturn”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¯hjÛ ubhþ)�”}”(hŒ6``true`` if any IDs have been allocated from this IDR.”h]”(j³)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjQubhŒ. if any IDs have been allocated from this IDR.”…”�”}”(hjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¯hjÛ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_preload_end (C function)”Œc.idr_preload_end”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒvoid idr_preload_end (void)”h]”j4)�”}”(hŒvoid idr_preload_end(void)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjŠh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¸ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjŠh²hh³jœh´K¸ubj:)�”}”(hŒidr_preload_end”h]”j@)�”}”(hŒidr_preload_end”h]”hŒidr_preload_end”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj«ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjŠh²hh³jœh´K¸ubjÊ)�”}”(hŒ(void)”h]”jÐ)�”}”(hŒvoid”h]”js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÇubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÃubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhjŠh²hh³jœh´K¸ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj†h²hh³jœh´K¸ubah}”(h]”j�ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jœh´K¸hjƒh²hubjm)�”}”(hhh]”hþ)�”}”(hŒ.end preload section started with idr_preload()”h]”hŒ.end preload section started with idr_preload()”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¸hjòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjƒh²hh³jœh´K¸ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jj j€j j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hŒ£**Parameters** ``void`` no arguments **Description** Each idr_preload() should be matched with an invocation of this function. See idr_preload() for details.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¼hjubjØ)�”}”(hhh]”jÝ)�”}”(hŒ``void`` no arguments ”h]”(jã)�”}”(hŒ``void``”h]”j³)�”}”(hj6h]”hŒvoid”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Khj0ubjý)�”}”(hhh]”hþ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jKh´KhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jKh´Khj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjqh]”hŒ Description”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Khjubhþ)�”}”(hŒiEach idr_preload() should be matched with an invocation of this function. See idr_preload() for details.”h]”hŒiEach idr_preload() should be matched with an invocation of this function. See idr_preload() for details.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´K¹hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_for_each_entry (C macro)”Œc.idr_for_each_entry”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒidr_for_each_entry”h]”j4)�”}”(hŒidr_for_each_entry”h]”j:)�”}”(hŒidr_for_each_entry”h]”j@)�”}”(hj°h]”hŒidr_for_each_entry”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj¶ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj²h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÃubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj®h²hh³jÍh´KÃubah}”(h]”j©ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jÍh´KÃhj«h²hubjm)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jlhj«h²hh³jÍh´KÃubeh}”(h]”h ]”(j´Œmacro”eh"]”h$]”h&]”j~j´jjæj€jæj�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubhþ)�”}”(hŒ'``idr_for_each_entry (idr, entry, id)``”h]”j³)�”}”(hjìh]”hŒ#idr_for_each_entry (idr, entry, id)”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÅhjh²hubj�)�”}”(hŒ0Iterate over an IDR's elements of a given type. ”h]”hþ)�”}”(hŒ/Iterate over an IDR's elements of a given type.”h]”hŒ1Iterate over an IDR’s elements of a given type.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÃhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jœh³jh´KÃhjh²hubj¸)�”}”(hX)**Parameters** ``idr`` IDR handle. ``entry`` The type * to use as cursor ``id`` Entry ID. **Description** **entry** and **id** do not need to be initialized before the loop, and after normal termination **entry** is left with the value NULL. This is convenient for a "not found" value.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj!h]”hŒ Parameters”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÇhjubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ``idr`` IDR handle. ”h]”(jã)�”}”(hŒ``idr``”h]”j³)�”}”(hj@h]”hŒidr”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÄhj:ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jUh´KÄhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jUh´KÄhj7ubjÝ)�”}”(hŒ&``entry`` The type * to use as cursor ”h]”(jã)�”}”(hŒ ``entry``”h]”j³)�”}”(hjyh]”hŒentry”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÅhjsubjý)�”}”(hhh]”hþ)�”}”(hŒThe type * to use as cursor”h]”hŒThe type * to use as cursor”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jŽh´KÅhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jŽh´KÅhj7ubjÝ)�”}”(hŒ``id`` Entry ID. ”h]”(jã)�”}”(hŒ``id``”h]”j³)�”}”(hj²h]”hŒid”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÆhj¬ubjý)�”}”(hhh]”hþ)�”}”(hŒ Entry ID.”h]”hŒ Entry ID.”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÇh´KÆhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jÇh´KÆhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjíh]”hŒ Description”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÈhjubhþ)�”}”(hŒ´**entry** and **id** do not need to be initialized before the loop, and after normal termination **entry** is left with the value NULL. This is convenient for a "not found" value.”h]”(jÂ)�”}”(hŒ **entry**”h]”hŒentry”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjubhŒ and ”…”�”}”(hjh²hh³Nh´NubjÂ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjubhŒM do not need to be initialized before the loop, and after normal termination ”…”�”}”(hjh²hh³Nh´NubjÂ)�”}”(hŒ **entry**”h]”hŒentry”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjubhŒN is left with the value NULL. This is convenient for a “not foundâ€� value.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÇhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_for_each_entry_ul (C macro)”Œc.idr_for_each_entry_ul”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒidr_for_each_entry_ul”h]”j4)�”}”(hŒidr_for_each_entry_ul”h]”j:)�”}”(hŒidr_for_each_entry_ul”h]”j@)�”}”(hj^h]”hŒidr_for_each_entry_ul”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjdubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj`h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÐubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj\h²hh³j{h´KÐubah}”(h]”jWah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³j{h´KÐhjYh²hubjm)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jlhjYh²hh³j{h´KÐubeh}”(h]”h ]”(j´Œmacro”eh"]”h$]”h&]”j~j´jj”j€j”j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubhþ)�”}”(hŒ/``idr_for_each_entry_ul (idr, entry, tmp, id)``”h]”j³)�”}”(hjšh]”hŒ+idr_for_each_entry_ul (idr, entry, tmp, id)”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÒhjh²hubj�)�”}”(hŒ0Iterate over an IDR's elements of a given type. ”h]”hþ)�”}”(hŒ/Iterate over an IDR's elements of a given type.”h]”hŒ1Iterate over an IDR’s elements of a given type.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÐhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœh³jÂh´KÐhjh²hubj¸)�”}”(hXU**Parameters** ``idr`` IDR handle. ``entry`` The type * to use as cursor. ``tmp`` A temporary placeholder for ID. ``id`` Entry ID. **Description** **entry** and **id** do not need to be initialized before the loop, and after normal termination **entry** is left with the value NULL. This is convenient for a "not found" value.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjÏh]”hŒ Parameters”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÔhjÉubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ``idr`` IDR handle. ”h]”(jã)�”}”(hŒ``idr``”h]”j³)�”}”(hjîh]”hŒidr”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÑhjèubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´KÑhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jh´KÑhjåubjÝ)�”}”(hŒ'``entry`` The type * to use as cursor. ”h]”(jã)�”}”(hŒ ``entry``”h]”j³)�”}”(hj'h]”hŒentry”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÒhj!ubjý)�”}”(hhh]”hþ)�”}”(hŒThe type * to use as cursor.”h]”hŒThe type * to use as cursor.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j<h´KÒhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j<h´KÒhjåubjÝ)�”}”(hŒ(``tmp`` A temporary placeholder for ID. ”h]”(jã)�”}”(hŒ``tmp``”h]”j³)�”}”(hj`h]”hŒtmp”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÓhjZubjý)�”}”(hhh]”hþ)�”}”(hŒA temporary placeholder for ID.”h]”hŒA temporary placeholder for ID.”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³juh´KÓhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³juh´KÓhjåubjÝ)�”}”(hŒ``id`` Entry ID. ”h]”(jã)�”}”(hŒ``id``”h]”j³)�”}”(hj™h]”hŒid”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÔhj“ubjý)�”}”(hhh]”hþ)�”}”(hŒ Entry ID.”h]”hŒ Entry ID.”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j®h´KÔhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j®h´KÔhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjÉubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjÔh]”hŒ Description”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÖhjÉubhþ)�”}”(hŒ´**entry** and **id** do not need to be initialized before the loop, and after normal termination **entry** is left with the value NULL. This is convenient for a "not found" value.”h]”(jÂ)�”}”(hŒ **entry**”h]”hŒentry”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjêubhŒ and ”…”�”}”(hjêh²hh³Nh´NubjÂ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjêubhŒM do not need to be initialized before the loop, and after normal termination ”…”�”}”(hjêh²hh³Nh´NubjÂ)�”}”(hŒ **entry**”h]”hŒentry”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjêubhŒN is left with the value NULL. This is convenient for a “not foundâ€� value.”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KÕhjÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œ%idr_for_each_entry_continue (C macro)”Œc.idr_for_each_entry_continue”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒidr_for_each_entry_continue”h]”j4)�”}”(hŒidr_for_each_entry_continue”h]”j:)�”}”(hŒidr_for_each_entry_continue”h]”j@)�”}”(hjEh]”hŒidr_for_each_entry_continue”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjKubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjGh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kàubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hjCh²hh³jbh´Kàubah}”(h]”j>ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jbh´Kàhj@h²hubjm)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jlhj@h²hh³jbh´Kàubeh}”(h]”h ]”(j´Œmacro”eh"]”h$]”h&]”j~j´jj{j€j{j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubhþ)�”}”(hŒ0``idr_for_each_entry_continue (idr, entry, id)``”h]”j³)�”}”(hj�h]”hŒ,idr_for_each_entry_continue (idr, entry, id)”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kâhjh²hubj�)�”}”(hŒ:Continue iteration over an IDR's elements of a given type ”h]”hþ)�”}”(hŒ9Continue iteration over an IDR's elements of a given type”h]”hŒ;Continue iteration over an IDR’s elements of a given type”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kàhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœh³j©h´Kàhjh²hubj¸)�”}”(hŒÀ**Parameters** ``idr`` IDR handle. ``entry`` The type * to use as a cursor. ``id`` Entry ID. **Description** Continue to iterate over entries, continuing after the current position.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj¶h]”hŒ Parameters”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kähj°ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ``idr`` IDR handle. ”h]”(jã)�”}”(hŒ``idr``”h]”j³)�”}”(hjÕh]”hŒidr”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KáhjÏubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jêh´Káhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jêh´KáhjÌubjÝ)�”}”(hŒ)``entry`` The type * to use as a cursor. ”h]”(jã)�”}”(hŒ ``entry``”h]”j³)�”}”(hjh]”hŒentry”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kâhjubjý)�”}”(hhh]”hþ)�”}”(hŒThe type * to use as a cursor.”h]”hŒThe type * to use as a cursor.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j#h´Kâhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j#h´KâhjÌubjÝ)�”}”(hŒ``id`` Entry ID. ”h]”(jã)�”}”(hŒ``id``”h]”j³)�”}”(hjGh]”hŒid”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KãhjAubjý)�”}”(hhh]”hþ)�”}”(hŒ Entry ID.”h]”hŒ Entry ID.”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j\h´Kãhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j\h´KãhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj°ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj‚h]”hŒ Description”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kåhj°ubhþ)�”}”(hŒHContinue to iterate over entries, continuing after the current position.”h]”hŒHContinue to iterate over entries, continuing after the current position.”…”�”•}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kähj°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œ(idr_for_each_entry_continue_ul (C macro)”Œ c.idr_for_each_entry_continue_ul”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒidr_for_each_entry_continue_ul”h]”j4)�”}”(hŒidr_for_each_entry_continue_ul”h]”j:)�”}”(hŒidr_for_each_entry_continue_ul”h]”j@)�”}”(hjÁh]”hŒidr_for_each_entry_continue_ul”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjÇubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjÃh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kíubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj¿h²hh³jÞh´Kíubah}”(h]”jºah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jÞh´Kíhj¼h²hubjm)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¼h²hh³jÞh´Kíubeh}”(h]”h ]”(j´Œmacro”eh"]”h$]”h&]”j~j´jj÷j€j÷j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubhþ)�”}”(hŒ8``idr_for_each_entry_continue_ul (idr, entry, tmp, id)``”h]”j³)�”}”(hjýh]”hŒ4idr_for_each_entry_continue_ul (idr, entry, tmp, id)”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kïhjh²hubj�)�”}”(hŒ:Continue iteration over an IDR's elements of a given type ”h]”hþ)�”}”(hŒ9Continue iteration over an IDR's elements of a given type”h]”hŒ;Continue iteration over an IDR’s elements of a given type”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kíhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jœh³j%h´Kíhjh²hubj¸)�”}”(hXX**Parameters** ``idr`` IDR handle. ``entry`` The type * to use as a cursor. ``tmp`` A temporary placeholder for ID. ``id`` Entry ID. **Description** Continue to iterate over entries, continuing after the current position. After normal termination **entry** is left with the value NULL. This is convenient for a "not found" value.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj2h]”hŒ Parameters”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kñhj,ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ``idr`` IDR handle. ”h]”(jã)�”}”(hŒ``idr``”h]”j³)�”}”(hjQh]”hŒidr”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´KîhjKubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jfh´Kîhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jfh´KîhjHubjÝ)�”}”(hŒ)``entry`` The type * to use as a cursor. ”h]”(jã)�”}”(hŒ ``entry``”h]”j³)�”}”(hjŠh]”hŒentry”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kïhj„ubjý)�”}”(hhh]”hþ)�”}”(hŒThe type * to use as a cursor.”h]”hŒThe type * to use as a cursor.”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jŸh´Kïhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jŸh´KïhjHubjÝ)�”}”(hŒ(``tmp`` A temporary placeholder for ID. ”h]”(jã)�”}”(hŒ``tmp``”h]”j³)�”}”(hjÃh]”hŒtmp”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kðhj½ubjý)�”}”(hhh]”hþ)�”}”(hŒA temporary placeholder for ID.”h]”hŒA temporary placeholder for ID.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jØh´KðhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jØh´KðhjHubjÝ)�”}”(hŒ``id`` Entry ID. ”h]”(jã)�”}”(hŒ``id``”h]”j³)�”}”(hjüh]”hŒid”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kñhjöubjý)�”}”(hhh]”hþ)�”}”(hŒ Entry ID.”h]”hŒ Entry ID.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´Kñhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jh´KñhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj,ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj7h]”hŒ Description”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kóhj,ubhþ)�”}”(hŒµContinue to iterate over entries, continuing after the current position. After normal termination **entry** is left with the value NULL. This is convenient for a "not found" value.”h]”(hŒbContinue to iterate over entries, continuing after the current position. After normal termination ”…”�”}”(hjMh²hh³Nh´NubjÂ)�”}”(hŒ **entry**”h]”hŒentry”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjMubhŒN is left with the value NULL. This is convenient for a “not foundâ€� value.”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Kòhj,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œida_alloc (C function)”Œ c.ida_alloc”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ*int ida_alloc (struct ida *ida, gfp_t gfp)”h]”j4)�”}”(hŒ)int ida_alloc(struct ida *ida, gfp_t gfp)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjŠh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Mubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjŠh²hh³jœh´Mubj:)�”}”(hŒ ida_alloc”h]”j@)�”}”(hŒ ida_alloc”h]”hŒ ida_alloc”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj«ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjŠh²hh³jœh´MubjÊ)�”}”(hŒ(struct ida *ida, gfp_t gfp)”h]”(jÐ)�”}”(hŒstruct ida *ida”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjÇubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÇubh)�”}”(hhh]”j@)�”}”(hŒida”h]”hŒida”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”jëŒmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)j±sbŒ c.ida_alloc”†”asbuh1hhjÇubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÇubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÇubj@)�”}”(hŒida”h]”hŒida”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÃubjÐ)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j@)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”jBŒmodname”NŒ classname”Nj-j0)�”}”j3]”jŒ c.ida_alloc”†”asbuh1hhj9ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj9ubj@)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÃubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhjŠh²hh³jœh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj†h²hh³jœh´Mubah}”(h]”j�ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jœh´Mhjƒh²hubjm)�”}”(hhh]”hþ)�”}”(hŒAllocate an unused ID.”h]”hŒAllocate an unused ID.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Mhj“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjƒh²hh³jœh´Mubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jj®j€j®j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hXu**Parameters** ``struct ida *ida`` IDA handle. ``gfp_t gfp`` Memory allocation flags. **Description** Allocate an ID between 0 and ``INT_MAX``, inclusive. **Context** Any context. It is safe to call this function without locking in your code. **Return** The allocated ID, or ``-ENOMEM`` if memory could not be allocated, or ``-ENOSPC`` if there are no free IDs.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj¸h]”hŒ Parameters”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Mhj²ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct ida *ida`` IDA handle. ”h]”(jã)�”}”(hŒ``struct ida *ida``”h]”j³)�”}”(hj×h]”hŒstruct ida *ida”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´MhjÑubjý)�”}”(hhh]”hþ)�”}”(hŒ IDA handle.”h]”hŒ IDA handle.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jìh´Mhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jìh´MhjÎubjÝ)�”}”(hŒ'``gfp_t gfp`` Memory allocation flags. ”h]”(jã)�”}”(hŒ ``gfp_t gfp``”h]”j³)�”}”(hjh]”hŒ gfp_t gfp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Mhj ubjý)�”}”(hhh]”hþ)�”}”(hŒMemory allocation flags.”h]”hŒMemory allocation flags.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j%h´Mhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j%h´MhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj²ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjKh]”hŒ Description”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Mhj²ubhþ)�”}”(hŒ4Allocate an ID between 0 and ``INT_MAX``, inclusive.”h]”(hŒAllocate an ID between 0 and ”…”�”}”(hjah²hh³Nh´Nubj³)�”}”(hŒ ``INT_MAX``”h]”hŒINT_MAX”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjaubhŒ , inclusive.”…”�”}”(hjah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Mhj²ubhþ)�”}”(hŒ **Context**”h]”jÂ)�”}”(hj„h]”hŒContext”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Mhj²ubhþ)�”}”(hŒKAny context. It is safe to call this function without locking in your code.”h]”hŒKAny context. It is safe to call this function without locking in your code.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´Mhj²ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hj«h]”hŒReturn”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M!hj²ubhþ)�”}”(hŒkThe allocated ID, or ``-ENOMEM`` if memory could not be allocated, or ``-ENOSPC`` if there are no free IDs.”h]”(hŒThe allocated ID, or ”…”�”}”(hjÁh²hh³Nh´Nubj³)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÁubhŒ& if memory could not be allocated, or ”…”�”}”(hjÁh²hh³Nh´Nubj³)�”}”(hŒ ``-ENOSPC``”h]”hŒ-ENOSPC”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÁubhŒ if there are no free IDs.”…”�”}”(hjÁh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M hj²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œida_alloc_min (C function)”Œc.ida_alloc_min”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ@int ida_alloc_min (struct ida *ida, unsigned int min, gfp_t gfp)”h]”j4)�”}”(hŒ?int ida_alloc_min(struct ida *ida, unsigned int min, gfp_t gfp)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M)ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjh²hh³j"h´M)ubj:)�”}”(hŒ ida_alloc_min”h]”j@)�”}”(hŒ ida_alloc_min”h]”hŒ ida_alloc_min”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj1ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjh²hh³j"h´M)ubjÊ)�”}”(hŒ.(struct ida *ida, unsigned int min, gfp_t gfp)”h]”(jÐ)�”}”(hŒstruct ida *ida”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjMubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjMubh)�”}”(hhh]”j@)�”}”(hŒida”h]”hŒida”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjlubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”jqŒmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)j7sbŒc.ida_alloc_min”†”asbuh1hhjMubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjMubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjMubj@)�”}”(hŒida”h]”hŒida”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjIubjÐ)�”}”(hŒunsigned int min”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj¿ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj¿ubjs)�”}”(hŒint”h]”hŒint”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj¿ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj¿ubj@)�”}”(hŒmin”h]”hŒmin”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjIubjÐ)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j@)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”jŒmodname”NŒ classname”Nj-j0)�”}”j3]”j‹Œc.ida_alloc_min”†”asbuh1hhjubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjubj@)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjIubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhjh²hh³j"h´M)ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj h²hh³j"h´M)ubah}”(h]”jah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³j"h´M)hj h²hubjm)�”}”(hhh]”hþ)�”}”(hŒAllocate an unused ID.”h]”hŒAllocate an unused ID.”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M)hjjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj h²hh³j"h´M)ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jj…j€j…j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hXª**Parameters** ``struct ida *ida`` IDA handle. ``unsigned int min`` Lowest ID to allocate. ``gfp_t gfp`` Memory allocation flags. **Description** Allocate an ID between **min** and ``INT_MAX``, inclusive. **Context** Any context. It is safe to call this function without locking in your code. **Return** The allocated ID, or ``-ENOMEM`` if memory could not be allocated, or ``-ENOSPC`` if there are no free IDs.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj�h]”hŒ Parameters”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M-hj‰ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct ida *ida`` IDA handle. ”h]”(jã)�”}”(hŒ``struct ida *ida``”h]”j³)�”}”(hj®h]”hŒstruct ida *ida”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M*hj¨ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDA handle.”h]”hŒ IDA handle.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÃh´M*hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jÃh´M*hj¥ubjÝ)�”}”(hŒ,``unsigned int min`` Lowest ID to allocate. ”h]”(jã)�”}”(hŒ``unsigned int min``”h]”j³)�”}”(hjçh]”hŒunsigned int min”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M+hjáubjý)�”}”(hhh]”hþ)�”}”(hŒLowest ID to allocate.”h]”hŒLowest ID to allocate.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jüh´M+hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jüh´M+hj¥ubjÝ)�”}”(hŒ'``gfp_t gfp`` Memory allocation flags. ”h]”(jã)�”}”(hŒ ``gfp_t gfp``”h]”j³)�”}”(hj h]”hŒ gfp_t gfp”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M,hjubjý)�”}”(hhh]”hþ)�”}”(hŒMemory allocation flags.”h]”hŒMemory allocation flags.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j5h´M,hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j5h´M,hj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj‰ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj[h]”hŒ Description”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M.hj‰ubhþ)�”}”(hŒ:Allocate an ID between **min** and ``INT_MAX``, inclusive.”h]”(hŒAllocate an ID between ”…”�”}”(hjqh²hh³Nh´NubjÂ)�”}”(hŒ**min**”h]”hŒmin”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjqubhŒ and ”…”�”}”(hjqh²hh³Nh´Nubj³)�”}”(hŒ ``INT_MAX``”h]”hŒINT_MAX”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjqubhŒ , inclusive.”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M-hj‰ubhþ)�”}”(hŒ **Context**”h]”jÂ)�”}”(hj¦h]”hŒContext”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M/hj‰ubhþ)�”}”(hŒKAny context. It is safe to call this function without locking in your code.”h]”hŒKAny context. It is safe to call this function without locking in your code.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M0hj‰ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hjÍh]”hŒReturn”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M3hj‰ubhþ)�”}”(hŒkThe allocated ID, or ``-ENOMEM`` if memory could not be allocated, or ``-ENOSPC`` if there are no free IDs.”h]”(hŒThe allocated ID, or ”…”�”}”(hjãh²hh³Nh´Nubj³)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjãubhŒ& if memory could not be allocated, or ”…”�”}”(hjãh²hh³Nh´Nubj³)�”}”(hŒ ``-ENOSPC``”h]”hŒ-ENOSPC”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjãubhŒ if there are no free IDs.”…”�”}”(hjãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M2hj‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œida_alloc_max (C function)”Œc.ida_alloc_max”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ@int ida_alloc_max (struct ida *ida, unsigned int max, gfp_t gfp)”h]”j4)�”}”(hŒ?int ida_alloc_max(struct ida *ida, unsigned int max, gfp_t gfp)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj2h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M;ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj2h²hh³jDh´M;ubj:)�”}”(hŒ ida_alloc_max”h]”j@)�”}”(hŒ ida_alloc_max”h]”hŒ ida_alloc_max”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjSubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj2h²hh³jDh´M;ubjÊ)�”}”(hŒ.(struct ida *ida, unsigned int max, gfp_t gfp)”h]”(jÐ)�”}”(hŒstruct ida *ida”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjoubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjoubh)�”}”(hhh]”j@)�”}”(hŒida”h]”hŒida”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j“Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jYsbŒc.ida_alloc_max”†”asbuh1hhjoubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjoubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjoubj@)�”}”(hŒida”h]”hŒida”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjkubjÐ)�”}”(hŒunsigned int max”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjáubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjáubjs)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjáubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjáubj@)�”}”(hŒmax”h]”hŒmax”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjkubjÐ)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j@)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j;Œmodname”NŒ classname”Nj-j0)�”}”j3]”j­Œc.ida_alloc_max”†”asbuh1hhj2ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj2ubj@)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjkubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj2h²hh³jDh´M;ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj.h²hh³jDh´M;ubah}”(h]”j)ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jDh´M;hj+h²hubjm)�”}”(hhh]”hþ)�”}”(hŒAllocate an unused ID.”h]”hŒAllocate an unused ID.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M;hjŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj+h²hh³jDh´M;ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jj§j€j§j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hX¡**Parameters** ``struct ida *ida`` IDA handle. ``unsigned int max`` Highest ID to allocate. ``gfp_t gfp`` Memory allocation flags. **Description** Allocate an ID between 0 and **max**, inclusive. **Context** Any context. It is safe to call this function without locking in your code. **Return** The allocated ID, or ``-ENOMEM`` if memory could not be allocated, or ``-ENOSPC`` if there are no free IDs.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj±h]”hŒ Parameters”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M?hj«ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct ida *ida`` IDA handle. ”h]”(jã)�”}”(hŒ``struct ida *ida``”h]”j³)�”}”(hjÐh]”hŒstruct ida *ida”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M<hjÊubjý)�”}”(hhh]”hþ)�”}”(hŒ IDA handle.”h]”hŒ IDA handle.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jåh´M<hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jåh´M<hjÇubjÝ)�”}”(hŒ-``unsigned int max`` Highest ID to allocate. ”h]”(jã)�”}”(hŒ``unsigned int max``”h]”j³)�”}”(hj h]”hŒunsigned int max”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M=hjubjý)�”}”(hhh]”hþ)�”}”(hŒHighest ID to allocate.”h]”hŒHighest ID to allocate.”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh´M=hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jh´M=hjÇubjÝ)�”}”(hŒ'``gfp_t gfp`` Memory allocation flags. ”h]”(jã)�”}”(hŒ ``gfp_t gfp``”h]”j³)�”}”(hjBh]”hŒ gfp_t gfp”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M>hj<ubjý)�”}”(hhh]”hþ)�”}”(hŒMemory allocation flags.”h]”hŒMemory allocation flags.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jWh´M>hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jWh´M>hjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj«ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj}h]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M@hj«ubhþ)�”}”(hŒ0Allocate an ID between 0 and **max**, inclusive.”h]”(hŒAllocate an ID between 0 and ”…”�”}”(hj“h²hh³Nh´NubjÂ)�”}”(hŒ**max**”h]”hŒmax”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj“ubhŒ , inclusive.”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´M?hj«ubhþ)�”}”(hŒ **Context**”h]”jÂ)�”}”(hj¶h]”hŒContext”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´MAhj«ubhþ)�”}”(hŒKAny context. It is safe to call this function without locking in your code.”h]”hŒKAny context. It is safe to call this function without locking in your code.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´MBhj«ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hjÝh]”hŒReturn”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´MEhj«ubhþ)�”}”(hŒkThe allocated ID, or ``-ENOMEM`` if memory could not be allocated, or ``-ENOSPC`` if there are no free IDs.”h]”(hŒThe allocated ID, or ”…”�”}”(hjóh²hh³Nh´Nubj³)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjóubhŒ& if memory could not be allocated, or ”…”�”}”(hjóh²hh³Nh´Nubj³)�”}”(hŒ ``-ENOSPC``”h]”hŒ-ENOSPC”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjóubhŒ if there are no free IDs.”…”�”}”(hjóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/idr:81: ./include/linux/idr.h”h´MDhj«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_alloc_u32 (C function)”Œc.idr_alloc_u32”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒYint idr_alloc_u32 (struct idr *idr, void *ptr, u32 *nextid, unsigned long max, gfp_t gfp)”h]”j4)�”}”(hŒXint idr_alloc_u32(struct idr *idr, void *ptr, u32 *nextid, unsigned long max, gfp_t gfp)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjBh²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjBh²hh³jTh´K ubj:)�”}”(hŒ idr_alloc_u32”h]”j@)�”}”(hŒ idr_alloc_u32”h]”hŒ idr_alloc_u32”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjcubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjBh²hh³jTh´K ubjÊ)�”}”(hŒG(struct idr *idr, void *ptr, u32 *nextid, unsigned long max, gfp_t gfp)”h]”(jÐ)�”}”(hŒstruct idr *idr”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j£Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jisbŒc.idr_alloc_u32”†”asbuh1hhjubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj{ubjÐ)�”}”(hŒ void *ptr”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjñubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjñubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjñubj@)�”}”(hŒptr”h]”hŒptr”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj{ubjÐ)�”}”(hŒ u32 *nextid”h]”(h)�”}”(hhh]”j@)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj7 ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j< Œmodname”NŒ classname”Nj-j0)�”}”j3]”j½Œc.idr_alloc_u32”†”asbuh1hhj3 ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj3 ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj3 ubj@)�”}”(hŒnextid”h]”hŒnextid”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj3 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj{ubjÐ)�”}”(hŒunsigned long max”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjˆ ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjˆ ubjs)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjˆ ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjˆ ubj@)�”}”(hŒmax”h]”hŒmax”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjˆ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj{ubjÐ)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j@)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjÝ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”jâ Œmodname”NŒ classname”Nj-j0)�”}”j3]”j½Œc.idr_alloc_u32”†”asbuh1hhjÙ ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÙ ubj@)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj{ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhjBh²hh³jTh´K ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj>h²hh³jTh´K ubah}”(h]”j9ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jTh´K hj;h²hubjm)�”}”(hhh]”hþ)�”}”(hŒAllocate an ID.”h]”hŒAllocate an ID.”…”�”}”(hj6!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K hj3!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj;h²hh³jTh´K ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjN!j€jN!j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hXþ**Parameters** ``struct idr *idr`` IDR handle. ``void *ptr`` Pointer to be associated with the new ID. ``u32 *nextid`` Pointer to an ID. ``unsigned long max`` The maximum ID to allocate (inclusive). ``gfp_t gfp`` Memory allocation flags. **Description** Allocates an unused ID in the range specified by **nextid** and **max**. Note that **max** is inclusive whereas the **end** parameter to idr_alloc() is exclusive. The new ID is assigned to **nextid** before the pointer is inserted into the IDR, so if **nextid** points into the object pointed to by **ptr**, a concurrent lookup will not find an uninitialised ID. The caller should provide their own locking to ensure that two concurrent modifications to the IDR are not possible. Read-only accesses to the IDR may be done under the RCU read lock or may exclude simultaneous writers. **Return** 0 if an ID was allocated, -ENOMEM if memory allocation failed, or -ENOSPC if no free IDs could be found. If an error occurred, **nextid** is unchanged.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjX!h]”hŒ Parameters”…”�”}”(hjZ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjV!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KhjR!ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``struct idr *idr``”h]”j³)�”}”(hjw!h]”hŒstruct idr *idr”…”�”}”(hjy!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hju!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K hjq!ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jŒ!h´K hj�!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjq!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jŒ!h´K hjn!ubjÝ)�”}”(hŒ8``void *ptr`` Pointer to be associated with the new ID. ”h]”(jã)�”}”(hŒ ``void *ptr``”h]”j³)�”}”(hj°!h]”hŒ void *ptr”…”�”}”(hj²!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj®!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K hjª!ubjý)�”}”(hhh]”hþ)�”}”(hŒ)Pointer to be associated with the new ID.”h]”hŒ)Pointer to be associated with the new ID.”…”�”}”(hjÉ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÅ!h´K hjÆ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjª!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jÅ!h´K hjn!ubjÝ)�”}”(hŒ"``u32 *nextid`` Pointer to an ID. ”h]”(jã)�”}”(hŒ``u32 *nextid``”h]”j³)�”}”(hjé!h]”hŒ u32 *nextid”…”�”}”(hjë!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjç!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Khjã!ubjý)�”}”(hhh]”hþ)�”}”(hŒPointer to an ID.”h]”hŒPointer to an ID.”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jþ!h´Khjÿ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjã!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jþ!h´Khjn!ubjÝ)�”}”(hŒ>``unsigned long max`` The maximum ID to allocate (inclusive). ”h]”(jã)�”}”(hŒ``unsigned long max``”h]”j³)�”}”(hj""h]”hŒunsigned long max”…”�”}”(hj$"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj "ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Khj"ubjý)�”}”(hhh]”hþ)�”}”(hŒ'The maximum ID to allocate (inclusive).”h]”hŒ'The maximum ID to allocate (inclusive).”…”�”}”(hj;"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j7"h´Khj8"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j7"h´Khjn!ubjÝ)�”}”(hŒ'``gfp_t gfp`` Memory allocation flags. ”h]”(jã)�”}”(hŒ ``gfp_t gfp``”h]”j³)�”}”(hj["h]”hŒ gfp_t gfp”…”�”}”(hj]"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjY"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KhjU"ubjý)�”}”(hhh]”hþ)�”}”(hŒMemory allocation flags.”h]”hŒMemory allocation flags.”…”�”}”(hjt"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jp"h´Khjq"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjU"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jp"h´Khjn!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjR!ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj–"h]”hŒ Description”…”�”}”(hj˜"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj”"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KhjR!ubhþ)�”}”(hXkAllocates an unused ID in the range specified by **nextid** and **max**. Note that **max** is inclusive whereas the **end** parameter to idr_alloc() is exclusive. The new ID is assigned to **nextid** before the pointer is inserted into the IDR, so if **nextid** points into the object pointed to by **ptr**, a concurrent lookup will not find an uninitialised ID.”h]”(hŒ1Allocates an unused ID in the range specified by ”…”�”}”(hj¬"h²hh³Nh´NubjÂ)�”}”(hŒ **nextid**”h]”hŒnextid”…”�”}”(hj´"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¬"ubhŒ and ”…”�”}”(hj¬"h²hh³Nh´NubjÂ)�”}”(hŒ**max**”h]”hŒmax”…”�”}”(hjÆ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¬"ubhŒ . Note that ”…”�”}”(hj¬"h²hh³Nh´NubjÂ)�”}”(hŒ**max**”h]”hŒmax”…”�”}”(hjØ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¬"ubhŒ is inclusive whereas the ”…”�”}”(hj¬"h²hh³Nh´NubjÂ)�”}”(hŒ**end**”h]”hŒend”…”�”}”(hjê"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¬"ubhŒC parameter to idr_alloc() is exclusive. The new ID is assigned to ”…”�”}”(hj¬"h²hh³Nh´NubjÂ)�”}”(hŒ **nextid**”h]”hŒnextid”…”�”}”(hjü"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¬"ubhŒ4 before the pointer is inserted into the IDR, so if ”…”�”}”(hj¬"h²hh³Nh´NubjÂ)�”}”(hŒ **nextid**”h]”hŒnextid”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¬"ubhŒ& points into the object pointed to by ”…”�”}”(hj¬"h²hh³Nh´NubjÂ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¬"ubhŒ8, a concurrent lookup will not find an uninitialised ID.”…”�”}”(hj¬"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KhjR!ubhþ)�”}”(hŒÜThe caller should provide their own locking to ensure that two concurrent modifications to the IDR are not possible. Read-only accesses to the IDR may be done under the RCU read lock or may exclude simultaneous writers.”h]”hŒÜThe caller should provide their own locking to ensure that two concurrent modifications to the IDR are not possible. Read-only accesses to the IDR may be done under the RCU read lock or may exclude simultaneous writers.”…”�”}”(hj9#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KhjR!ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hjJ#h]”hŒReturn”…”�”}”(hjL#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjH#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KhjR!ubhþ)�”}”(hŒ˜0 if an ID was allocated, -ENOMEM if memory allocation failed, or -ENOSPC if no free IDs could be found. If an error occurred, **nextid** is unchanged.”h]”(hŒ€0 if an ID was allocated, -ENOMEM if memory allocation failed, or -ENOSPC if no free IDs could be found. If an error occurred, ”…”�”}”(hj`#h²hh³Nh´NubjÂ)�”}”(hŒ **nextid**”h]”hŒnextid”…”�”}”(hjh#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj`#ubhŒ is unchanged.”…”�”}”(hj`#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KhjR!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_alloc (C function)”Œ c.idr_alloc”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒIint idr_alloc (struct idr *idr, void *ptr, int start, int end, gfp_t gfp)”h]”j4)�”}”(hŒHint idr_alloc(struct idr *idr, void *ptr, int start, int end, gfp_t gfp)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj¡#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj�#h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K>ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°#h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj�#h²hh³j¯#h´K>ubj:)�”}”(hŒ idr_alloc”h]”j@)�”}”(hŒ idr_alloc”h]”hŒ idr_alloc”…”�”}”(hjÂ#h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj¾#ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj�#h²hh³j¯#h´K>ubjÊ)�”}”(hŒ;(struct idr *idr, void *ptr, int start, int end, gfp_t gfp)”h]”(jÐ)�”}”(hŒstruct idr *idr”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjÞ#h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjÚ#ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë#h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÚ#ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjü#h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjù#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”jþ#Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jÄ#sbŒ c.idr_alloc”†”asbuh1hhjÚ#ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÚ#ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj*$h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÚ#ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj7$h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjÚ#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÖ#ubjÐ)�”}”(hŒ void *ptr”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjP$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjL$ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^$h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjL$ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjl$h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjL$ubj@)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjy$h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjL$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÖ#ubjÐ)�”}”(hŒ int start”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj’$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjŽ$ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjŽ$ubj@)�”}”(hŒstart”h]”hŒstart”…”�”}”(hj®$h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjŽ$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÖ#ubjÐ)�”}”(hŒint end”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hjÇ$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÃ$ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ$h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÃ$ubj@)�”}”(hŒend”h]”hŒend”…”�”}”(hjã$h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjÃ$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÖ#ubjÐ)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j@)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjÿ$h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjü$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j%Œmodname”NŒ classname”Nj-j0)�”}”j3]”j$Œ c.idr_alloc”†”asbuh1hhjø$ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjø$ubj@)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj+%h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjø$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÖ#ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj�#h²hh³j¯#h´K>ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj™#h²hh³j¯#h´K>ubah}”(h]”j”#ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³j¯#h´K>hj–#h²hubjm)�”}”(hhh]”hþ)�”}”(hŒAllocate an ID.”h]”hŒAllocate an ID.”…”�”}”(hjU%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K>hjR%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj–#h²hh³j¯#h´K>ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjm%j€jm%j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hX8**Parameters** ``struct idr *idr`` IDR handle. ``void *ptr`` Pointer to be associated with the new ID. ``int start`` The minimum ID (inclusive). ``int end`` The maximum ID (exclusive). ``gfp_t gfp`` Memory allocation flags. **Description** Allocates an unused ID in the range specified by **start** and **end**. If **end** is <= 0, it is treated as one larger than ``INT_MAX``. This allows callers to use **start** + N as **end** as long as N is within integer range. The caller should provide their own locking to ensure that two concurrent modifications to the IDR are not possible. Read-only accesses to the IDR may be done under the RCU read lock or may exclude simultaneous writers. **Return** The newly allocated ID, -ENOMEM if memory allocation failed, or -ENOSPC if no free IDs could be found.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjw%h]”hŒ Parameters”…”�”}”(hjy%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhju%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KBhjq%ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``struct idr *idr``”h]”j³)�”}”(hj–%h]”hŒstruct idr *idr”…”�”}”(hj˜%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj”%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K?hj�%ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hj¯%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j«%h´K?hj¬%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj�%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j«%h´K?hj�%ubjÝ)�”}”(hŒ8``void *ptr`` Pointer to be associated with the new ID. ”h]”(jã)�”}”(hŒ ``void *ptr``”h]”j³)�”}”(hjÏ%h]”hŒ void *ptr”…”�”}”(hjÑ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÍ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K@hjÉ%ubjý)�”}”(hhh]”hþ)�”}”(hŒ)Pointer to be associated with the new ID.”h]”hŒ)Pointer to be associated with the new ID.”…”�”}”(hjè%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jä%h´K@hjå%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÉ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jä%h´K@hj�%ubjÝ)�”}”(hŒ*``int start`` The minimum ID (inclusive). ”h]”(jã)�”}”(hŒ ``int start``”h]”j³)�”}”(hj&h]”hŒ int start”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KAhj&ubjý)�”}”(hhh]”hþ)�”}”(hŒThe minimum ID (inclusive).”h]”hŒThe minimum ID (inclusive).”…”�”}”(hj!&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j&h´KAhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j&h´KAhj�%ubjÝ)�”}”(hŒ(``int end`` The maximum ID (exclusive). ”h]”(jã)�”}”(hŒ ``int end``”h]”j³)�”}”(hjA&h]”hŒint end”…”�”}”(hjC&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj?&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KBhj;&ubjý)�”}”(hhh]”hþ)�”}”(hŒThe maximum ID (exclusive).”h]”hŒThe maximum ID (exclusive).”…”�”}”(hjZ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jV&h´KBhjW&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj;&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jV&h´KBhj�%ubjÝ)�”}”(hŒ'``gfp_t gfp`` Memory allocation flags. ”h]”(jã)�”}”(hŒ ``gfp_t gfp``”h]”j³)�”}”(hjz&h]”hŒ gfp_t gfp”…”�”}”(hj|&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjx&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KChjt&ubjý)�”}”(hhh]”hþ)�”}”(hŒMemory allocation flags.”h]”hŒMemory allocation flags.”…”�”}”(hj“&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�&h´KChj�&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjt&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j�&h´KChj�%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjq%ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjµ&h]”hŒ Description”…”�”}”(hj·&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj³&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KEhjq%ubhþ)�”}”(hŒåAllocates an unused ID in the range specified by **start** and **end**. If **end** is <= 0, it is treated as one larger than ``INT_MAX``. This allows callers to use **start** + N as **end** as long as N is within integer range.”h]”(hŒ1Allocates an unused ID in the range specified by ”…”�”}”(hjË&h²hh³Nh´NubjÂ)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hjÓ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjË&ubhŒ and ”…”�”}”(hjË&h²hh³Nh´NubjÂ)�”}”(hŒ**end**”h]”hŒend”…”�”}”(hjå&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjË&ubhŒ. If ”…”�”}”(hjË&h²hh³Nh´NubjÂ)�”}”(hŒ**end**”h]”hŒend”…”�”}”(hj÷&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjË&ubhŒ+ is <= 0, it is treated as one larger than ”…”�”}”(hjË&h²hh³Nh´Nubj³)�”}”(hŒ ``INT_MAX``”h]”hŒINT_MAX”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjË&ubhŒ. This allows callers to use ”…”�”}”(hjË&h²hh³Nh´NubjÂ)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjË&ubhŒ + N as ”…”�”}”(hjË&h²hh³Nh´NubjÂ)�”}”(hŒ**end**”h]”hŒend”…”�”}”(hj-'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjË&ubhŒ& as long as N is within integer range.”…”�”}”(hjË&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KDhjq%ubhþ)�”}”(hŒÜThe caller should provide their own locking to ensure that two concurrent modifications to the IDR are not possible. Read-only accesses to the IDR may be done under the RCU read lock or may exclude simultaneous writers.”h]”hŒÜThe caller should provide their own locking to ensure that two concurrent modifications to the IDR are not possible. Read-only accesses to the IDR may be done under the RCU read lock or may exclude simultaneous writers.”…”�”}”(hjF'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KHhjq%ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hjW'h]”hŒReturn”…”�”}”(hjY'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjU'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KMhjq%ubhþ)�”}”(hŒfThe newly allocated ID, -ENOMEM if memory allocation failed, or -ENOSPC if no free IDs could be found.”h]”hŒfThe newly allocated ID, -ENOMEM if memory allocation failed, or -ENOSPC if no free IDs could be found.”…”�”}”(hjm'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KNhjq%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_alloc_cyclic (C function)”Œc.idr_alloc_cyclic”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒPint idr_alloc_cyclic (struct idr *idr, void *ptr, int start, int end, gfp_t gfp)”h]”j4)�”}”(hŒOint idr_alloc_cyclic(struct idr *idr, void *ptr, int start, int end, gfp_t gfp)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hjœ'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj˜'h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kbubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«'h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj˜'h²hh³jª'h´Kbubj:)�”}”(hŒidr_alloc_cyclic”h]”j@)�”}”(hŒidr_alloc_cyclic”h]”hŒidr_alloc_cyclic”…”�”}”(hj½'h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj¹'ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj˜'h²hh³jª'h´KbubjÊ)�”}”(hŒ;(struct idr *idr, void *ptr, int start, int end, gfp_t gfp)”h]”(jÐ)�”}”(hŒstruct idr *idr”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjÙ'h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjÕ'ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ'h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÕ'ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj÷'h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjô'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”jù'Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)j¿'sbŒc.idr_alloc_cyclic”†”asbuh1hhjÕ'ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÕ'ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj%(h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÕ'ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj2(h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjÕ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÑ'ubjÐ)�”}”(hŒ void *ptr”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjK(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjG(ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY(h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjG(ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjg(h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjG(ubj@)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjt(h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjG(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÑ'ubjÐ)�”}”(hŒ int start”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj‰(ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›(h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj‰(ubj@)�”}”(hŒstart”h]”hŒstart”…”�”}”(hj©(h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj‰(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÑ'ubjÐ)�”}”(hŒint end”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hjÂ(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj¾(ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ(h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj¾(ubj@)�”}”(hŒend”h]”hŒend”…”�”}”(hjÞ(h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj¾(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÑ'ubjÐ)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j@)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjú(h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj÷(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”jü(Œmodname”NŒ classname”Nj-j0)�”}”j3]”j(Œc.idr_alloc_cyclic”†”asbuh1hhjó(ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjó(ubj@)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj&)h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjó(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjÑ'ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj˜'h²hh³jª'h´Kbubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj”'h²hh³jª'h´Kbubah}”(h]”j�'ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jª'h´Kbhj‘'h²hubjm)�”}”(hhh]”hþ)�”}”(hŒAllocate an ID cyclically.”h]”hŒAllocate an ID cyclically.”…”�”}”(hjP)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KbhjM)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‘'h²hh³jª'h´Kbubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjh)j€jh)j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hXÌ**Parameters** ``struct idr *idr`` IDR handle. ``void *ptr`` Pointer to be associated with the new ID. ``int start`` The minimum ID (inclusive). ``int end`` The maximum ID (exclusive). ``gfp_t gfp`` Memory allocation flags. **Description** Allocates an unused ID in the range specified by **start** and **end**. If **end** is <= 0, it is treated as one larger than ``INT_MAX``. This allows callers to use **start** + N as **end** as long as N is within integer range. The search for an unused ID will start at the last ID allocated and will wrap around to **start** if no free IDs are found before reaching **end**. The caller should provide their own locking to ensure that two concurrent modifications to the IDR are not possible. Read-only accesses to the IDR may be done under the RCU read lock or may exclude simultaneous writers. **Return** The newly allocated ID, -ENOMEM if memory allocation failed, or -ENOSPC if no free IDs could be found.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjr)h]”hŒ Parameters”…”�”}”(hjt)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjp)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kfhjl)ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``struct idr *idr``”h]”j³)�”}”(hj‘)h]”hŒstruct idr *idr”…”�”}”(hj“)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj�)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kchj‹)ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hjª)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¦)h´Kchj§)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj‹)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j¦)h´Kchjˆ)ubjÝ)�”}”(hŒ8``void *ptr`` Pointer to be associated with the new ID. ”h]”(jã)�”}”(hŒ ``void *ptr``”h]”j³)�”}”(hjÊ)h]”hŒ void *ptr”…”�”}”(hjÌ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÈ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KdhjÄ)ubjý)�”}”(hhh]”hþ)�”}”(hŒ)Pointer to be associated with the new ID.”h]”hŒ)Pointer to be associated with the new ID.”…”�”}”(hjã)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jß)h´Kdhjà)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÄ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jß)h´Kdhjˆ)ubjÝ)�”}”(hŒ*``int start`` The minimum ID (inclusive). ”h]”(jã)�”}”(hŒ ``int start``”h]”j³)�”}”(hj*h]”hŒ int start”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kehjý)ubjý)�”}”(hhh]”hþ)�”}”(hŒThe minimum ID (inclusive).”h]”hŒThe minimum ID (inclusive).”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j*h´Kehj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjý)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j*h´Kehjˆ)ubjÝ)�”}”(hŒ(``int end`` The maximum ID (exclusive). ”h]”(jã)�”}”(hŒ ``int end``”h]”j³)�”}”(hj<*h]”hŒint end”…”�”}”(hj>*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj:*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kfhj6*ubjý)�”}”(hhh]”hþ)�”}”(hŒThe maximum ID (exclusive).”h]”hŒThe maximum ID (exclusive).”…”�”}”(hjU*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jQ*h´KfhjR*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj6*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jQ*h´Kfhjˆ)ubjÝ)�”}”(hŒ'``gfp_t gfp`` Memory allocation flags. ”h]”(jã)�”}”(hŒ ``gfp_t gfp``”h]”j³)�”}”(hju*h]”hŒ gfp_t gfp”…”�”}”(hjw*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjs*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kghjo*ubjý)�”}”(hhh]”hþ)�”}”(hŒMemory allocation flags.”h]”hŒMemory allocation flags.”…”�”}”(hjŽ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jŠ*h´Kghj‹*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjo*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jŠ*h´Kghjˆ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjl)ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj°*h]”hŒ Description”…”�”}”(hj²*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj®*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kihjl)ubhþ)�”}”(hXyAllocates an unused ID in the range specified by **start** and **end**. If **end** is <= 0, it is treated as one larger than ``INT_MAX``. This allows callers to use **start** + N as **end** as long as N is within integer range. The search for an unused ID will start at the last ID allocated and will wrap around to **start** if no free IDs are found before reaching **end**.”h]”(hŒ1Allocates an unused ID in the range specified by ”…”�”}”(hjÆ*h²hh³Nh´NubjÂ)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hjÎ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÆ*ubhŒ and ”…”�”}”(hjÆ*h²hh³Nh´NubjÂ)�”}”(hŒ**end**”h]”hŒend”…”�”}”(hjà*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÆ*ubhŒ. If ”…”�”}”(hjÆ*h²hh³Nh´NubjÂ)�”}”(hŒ**end**”h]”hŒend”…”�”}”(hjò*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÆ*ubhŒ+ is <= 0, it is treated as one larger than ”…”�”}”(hjÆ*h²hh³Nh´Nubj³)�”}”(hŒ ``INT_MAX``”h]”hŒINT_MAX”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÆ*ubhŒ. This allows callers to use ”…”�”}”(hjÆ*h²hh³Nh´NubjÂ)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÆ*ubhŒ + N as ”…”�”}”(hjÆ*h²hh³Nh´NubjÂ)�”}”(hŒ**end**”h]”hŒend”…”�”}”(hj(+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÆ*ubhŒ as long as N is within integer range. The search for an unused ID will start at the last ID allocated and will wrap around to ”…”�”}”(hjÆ*h²hh³Nh´NubjÂ)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hj:+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÆ*ubhŒ* if no free IDs are found before reaching ”…”�”}”(hjÆ*h²hh³Nh´NubjÂ)�”}”(hŒ**end**”h]”hŒend”…”�”}”(hjL+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&•]”uh1jÁhjÆ*ubhŒ.”…”�”}”(hjÆ*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Khhjl)ubhþ)�”}”(hŒÜThe caller should provide their own locking to ensure that two concurrent modifications to the IDR are not possible. Read-only accesses to the IDR may be done under the RCU read lock or may exclude simultaneous writers.”h]”hŒÜThe caller should provide their own locking to ensure that two concurrent modifications to the IDR are not possible. Read-only accesses to the IDR may be done under the RCU read lock or may exclude simultaneous writers.”…”�”}”(hje+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Knhjl)ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hjv+h]”hŒReturn”…”�”}”(hjx+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjt+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kshjl)ubhþ)�”}”(hŒfThe newly allocated ID, -ENOMEM if memory allocation failed, or -ENOSPC if no free IDs could be found.”h]”hŒfThe newly allocated ID, -ENOMEM if memory allocation failed, or -ENOSPC if no free IDs could be found.”…”�”}”(hjŒ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kthjl)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_remove (C function)”Œ c.idr_remove”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ5void * idr_remove (struct idr *idr, unsigned long id)”h]”j4)�”}”(hŒ3void *idr_remove(struct idr *idr, unsigned long id)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj»+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj·+h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K�ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ+h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj·+h²hh³jÉ+h´K�ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjØ+h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj·+h²hh³jÉ+h´K�ubj:)�”}”(hŒ idr_remove”h]”j@)�”}”(hŒ idr_remove”h]”hŒ idr_remove”…”�”}”(hjé+h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjå+ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj·+h²hh³jÉ+h´K�ubjÊ)�”}”(hŒ#(struct idr *idr, unsigned long id)”h]”(jÐ)�”}”(hŒstruct idr *idr”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhj,ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj,ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj#,h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj ,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j%,Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jë+sbŒ c.idr_remove”†”asbuh1hhj,ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC,h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj,ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjQ,h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj,ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj^,h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjý+ubjÐ)�”}”(hŒunsigned long id”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjw,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjs,ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…,h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjs,ubjs)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj“,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjs,ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡,h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjs,ubj@)�”}”(hŒid”h]”hŒid”…”�”}”(hj¯,h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjs,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjý+ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj·+h²hh³jÉ+h´K�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj³+h²hh³jÉ+h´K�ubah}”(h]”j®+ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jÉ+h´K�hj°+h²hubjm)�”}”(hhh]”hþ)�”}”(hŒRemove an ID from the IDR.”h]”hŒRemove an ID from the IDR.”…”�”}”(hjÙ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K�hjÖ,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj°+h²hh³jÉ+h´K�ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjñ,j€jñ,j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hX¥**Parameters** ``struct idr *idr`` IDR handle. ``unsigned long id`` Pointer ID. **Description** Removes this ID from the IDR. If the ID was not previously in the IDR, this function returns ``NULL``. Since this function modifies the IDR, the caller should provide their own locking to ensure that concurrent modification of the same IDR is not possible. **Return** The pointer formerly associated with this ID.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjû,h]”hŒ Parameters”…”�”}”(hjý,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjù,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K‘hjõ,ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``struct idr *idr``”h]”j³)�”}”(hj-h]”hŒstruct idr *idr”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KŽhj-ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hj3-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j/-h´KŽhj0-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j/-h´KŽhj-ubjÝ)�”}”(hŒ!``unsigned long id`` Pointer ID. ”h]”(jã)�”}”(hŒ``unsigned long id``”h]”j³)�”}”(hjS-h]”hŒunsigned long id”…”�”}”(hjU-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjQ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K�hjM-ubjý)�”}”(hhh]”hþ)�”}”(hŒ Pointer ID.”h]”hŒ Pointer ID.”…”�”}”(hjl-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jh-h´K�hji-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjM-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jh-h´K�hj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjõ,ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjŽ-h]”hŒ Description”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjŒ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K‘hjõ,ubhþ)�”}”(hŒgRemoves this ID from the IDR. If the ID was not previously in the IDR, this function returns ``NULL``.”h]”(hŒ^Removes this ID from the IDR. If the ID was not previously in the IDR, this function returns ”…”�”}”(hj¤-h²hh³Nh´Nubj³)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(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³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K�hjõ,ubhþ)�”}”(hŒ™Since this function modifies the IDR, the caller should provide their own locking to ensure that concurrent modification of the same IDR is not possible.”h]”hŒ™Since this function modifies the IDR, the caller should provide their own locking to ensure that concurrent modification of the same IDR is not possible.”…”�”}”(hjÅ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K“hjõ,ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hjÖ-h]”hŒReturn”…”�”}”(hjØ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÔ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K—hjõ,ubhþ)�”}”(hŒ-The pointer formerly associated with this ID.”h]”hŒ-The pointer formerly associated with this ID.”…”�”}”(hjì-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K˜hjõ,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_find (C function)”Œ c.idr_find”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ9void * idr_find (const struct idr *idr, unsigned long id)”h]”j4)�”}”(hŒ7void *idr_find(const struct idr *idr, unsigned long id)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj.h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¡ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*.h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj.h²hh³j).h´K¡ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj8.h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj.h²hh³j).h´K¡ubj:)�”}”(hŒidr_find”h]”j@)�”}”(hŒidr_find”h]”hŒidr_find”…”�”}”(hjI.h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjE.ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj.h²hh³j).h´K¡ubjÊ)�”}”(hŒ)(const struct idr *idr, unsigned long id)”h]”(jÐ)�”}”(hŒconst struct idr *idr”h]”(jÖ)�”}”(hjÙh]”hŒconst”…”�”}”(hje.h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhja.ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr.h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hja.ubjÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hj€.h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhja.ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hja.ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjž.h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj›.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j .Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jK.sbŒ c.idr_find”†”asbuh1hhja.ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾.h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hja.ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjÌ.h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhja.ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjÙ.h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hja.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj].ubjÐ)�”}”(hŒunsigned long id”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjò.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjî.ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjî.ubjs)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjî.ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjî.ubj@)�”}”(hŒid”h]”hŒid”…”�”}”(hj*/h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjî.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj].ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj.h²hh³j).h´K¡ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj.h²hh³j).h´K¡ubah}”(h]”j.ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³j).h´K¡hj.h²hubjm)�”}”(hhh]”hþ)�”}”(hŒReturn pointer for given ID.”h]”hŒReturn pointer for given ID.”…”�”}”(hjT/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¡hjQ/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj.h²hh³j).h´K¡ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjl/j€jl/j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hX·**Parameters** ``const struct idr *idr`` IDR handle. ``unsigned long id`` Pointer ID. **Description** Looks up the pointer associated with this ID. A ``NULL`` pointer may indicate that **id** is not allocated or that the ``NULL`` pointer was associated with this ID. This function can be called under rcu_read_lock(), given that the leaf pointers lifetimes are correctly managed. **Return** The pointer associated with this ID.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjv/h]”hŒ Parameters”…”�”}”(hjx/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjt/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¥hjp/ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ&``const struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``const struct idr *idr``”h]”j³)�”}”(hj•/h]”hŒconst struct idr *idr”…”�”}”(hj—/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj“/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¢hj�/ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hj®/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jª/h´K¢hj«/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj�/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jª/h´K¢hjŒ/ubjÝ)�”}”(hŒ!``unsigned long id`` Pointer ID. ”h]”(jã)�”}”(hŒ``unsigned long id``”h]”j³)�”}”(hjÎ/h]”hŒunsigned long id”…”�”}”(hjÐ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÌ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K£hjÈ/ubjý)�”}”(hhh]”hþ)�”}”(hŒ Pointer ID.”h]”hŒ Pointer ID.”…”�”}”(hjç/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jã/h´K£hjä/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÈ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jã/h´K£hjŒ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjp/ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj 0h]”hŒ Description”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¥hjp/ubhþ)�”}”(hŒ¥Looks up the pointer associated with this ID. A ``NULL`` pointer may indicate that **id** is not allocated or that the ``NULL`` pointer was associated with this ID.”h]”(hŒ1Looks up the pointer associated with this ID. A ”…”�”}”(hj0h²hh³Nh´Nubj³)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj'0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj0ubhŒ pointer may indicate that ”…”�”}”(hj0h²hh³Nh´NubjÂ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj90h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj0ubhŒ is not allocated or that the ”…”�”}”(hj0h²hh³Nh´Nubj³)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjK0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj0ubhŒ% pointer was associated with this ID.”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¤hjp/ubhþ)�”}”(hŒpThis function can be called under rcu_read_lock(), given that the leaf pointers lifetimes are correctly managed.”h]”hŒpThis function can be called under rcu_read_lock(), given that the leaf pointers lifetimes are correctly managed.”…”�”}”(hjd0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¨hjp/ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hju0h]”hŒReturn”…”�”}”(hjw0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjs0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K«hjp/ubhþ)�”}”(hŒ$The pointer associated with this ID.”h]”hŒ$The pointer associated with this ID.”…”�”}”(hj‹0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¬hjp/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_for_each (C function)”Œc.idr_for_each”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ\int idr_for_each (const struct idr *idr, int (*fn)(int id, void *p, void *data), void *data)”h]”j4)�”}”(hŒ[int idr_for_each(const struct idr *idr, int (*fn)(int id, void *p, void *data), void *data)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hjº0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj¶0h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kµubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ0h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj¶0h²hh³jÈ0h´Kµubj:)�”}”(hŒ idr_for_each”h]”j@)�”}”(hŒ idr_for_each”h]”hŒ idr_for_each”…”�”}”(hjÛ0h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj×0ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj¶0h²hh³jÈ0h´KµubjÊ)�”}”(hŒK(const struct idr *idr, int (*fn)(int id, void *p, void *data), void *data)”h]”(jÐ)�”}”(hŒconst struct idr *idr”h]”(jÖ)�”}”(hjÙh]”hŒconst”…”�”}”(hj÷0h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjó0ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjó0ubjÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjó0ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjó0ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj01h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj-1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j21Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jÝ0sbŒc.idr_for_each”†”asbuh1hhjó0ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP1h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjó0ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj^1h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjó0ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjk1h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjó0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjï0ubjÐ)�”}”(hŒ&int (*fn)(int id, void *p, void *data)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj„1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj€1ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’1h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj€1ubjJ)�”}”(hŒ(”h]”hŒ(”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj€1ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj®1h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj€1ubj@)�”}”(hŒfn”h]”hŒfn”…”�”}”(hj»1h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj€1ubjJ)�”}”(hŒ)”h]”hŒ)”…”�”}”(hjÉ1h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj€1ubjJ)�”}”(hj¢1h]”hŒ(”…”�”}”(hj×1h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj€1ubjs)�”}”(hŒint”h]”hŒint”…”�”}”(hjä1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj€1ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò1h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj€1ubj@)�”}”(hŒid”h]”hŒid”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj€1ubjJ)�”}”(hŒ,”h]”hŒ,”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj€1ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj€1ubjs)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj*2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj€1ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj82h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj€1ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjF2h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj€1ubj@)�”}”(hjVh]”hŒp”…”�”}”(hjS2h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj€1ubjJ)�”}”(hj2h]”hŒ,”…”�”}”(hj`2h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj€1ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm2h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj€1ubjs)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj{2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj€1ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰2h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj€1ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj—2h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj€1ubj@)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¤2h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj€1ubjJ)�”}”(hjË1h]”hŒ)”…”�”}”(hj²2h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj€1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjï0ubjÐ)�”}”(hŒ void *data”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÊ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÆ2ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ2h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÆ2ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjæ2h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÆ2ubj@)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjó2h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjÆ2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjï0ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj¶0h²hh³jÈ0h´Kµubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj²0h²hh³jÈ0h´Kµubah}”(h]”j­0ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jÈ0h´Kµhj¯0h²hubjm)�”}”(hhh]”hþ)�”}”(hŒ$Iterate through all stored pointers.”h]”hŒ$Iterate through all stored pointers.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kµhj3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¯0h²hh³jÈ0h´Kµubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jj53j€j53j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hX¾**Parameters** ``const struct idr *idr`` IDR handle. ``int (*fn)(int id, void *p, void *data)`` Function to be called for each pointer. ``void *data`` Data passed to callback function. **Description** The callback function will be called for each entry in **idr**, passing the ID, the entry and **data**. If **fn** returns anything other than ``0``, the iteration stops and that value is returned from this function. idr_for_each() can be called concurrently with idr_alloc() and idr_remove() if protected by RCU. Newly added entries may not be seen and deleted entries may be seen, but adding and removing entries will not cause other entries to be skipped, nor spurious ones to be seen.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj?3h]”hŒ Parameters”…”�”}”(hjA3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj=3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¹hj93ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ&``const struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``const struct idr *idr``”h]”j³)�”}”(hj^3h]”hŒconst struct idr *idr”…”�”}”(hj`3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj\3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¶hjX3ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hjw3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³js3h´K¶hjt3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjX3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³js3h´K¶hjU3ubjÝ)�”}”(hŒS``int (*fn)(int id, void *p, void *data)`` Function to be called for each pointer. ”h]”(jã)�”}”(hŒ*``int (*fn)(int id, void *p, void *data)``”h]”j³)�”}”(hj—3h]”hŒ&int (*fn)(int id, void *p, void *data)”…”�”}”(hj™3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj•3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K·hj‘3ubjý)�”}”(hhh]”hþ)�”}”(hŒ'Function to be called for each pointer.”h]”hŒ'Function to be called for each pointer.”…”�”}”(hj°3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¬3h´K·hj­3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj‘3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j¬3h´K·hjU3ubjÝ)�”}”(hŒ1``void *data`` Data passed to callback function. ”h]”(jã)�”}”(hŒ``void *data``”h]”j³)�”}”(hjÐ3h]”hŒ void *data”…”�”}”(hjÒ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÎ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¸hjÊ3ubjý)�”}”(hhh]”hþ)�”}”(hŒ!Data passed to callback function.”h]”hŒ!Data passed to callback function.”…”�”}”(hjé3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jå3h´K¸hjæ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÊ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jå3h´K¸hjU3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj93ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj 4h]”hŒ Description”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj 4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kºhj93ubhþ)�”}”(hŒgThe callback function will be called for each entry in **idr**, passing the ID, the entry and **data**.”h]”(hŒ7The callback function will be called for each entry in ”…”�”}”(hj!4h²hh³Nh´NubjÂ)�”}”(hŒ**idr**”h]”hŒidr”…”�”}”(hj)4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj!4ubhŒ , passing the ID, the entry and ”…”�”}”(hj!4h²hh³Nh´NubjÂ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj;4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj!4ubhŒ.”…”�”}”(hj!4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¹hj93ubhþ)�”}”(hŒoIf **fn** returns anything other than ``0``, the iteration stops and that value is returned from this function.”h]”(hŒIf ”…”�”}”(hjT4h²hh³Nh´NubjÂ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hj\4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjT4ubhŒ returns anything other than ”…”�”}”(hjT4h²hh³Nh´Nubj³)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjn4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjT4ubhŒD, the iteration stops and that value is returned from this function.”…”�”}”(hjT4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¼hj93ubhþ)�”}”(hXidr_for_each() can be called concurrently with idr_alloc() and idr_remove() if protected by RCU. Newly added entries may not be seen and deleted entries may be seen, but adding and removing entries will not cause other entries to be skipped, nor spurious ones to be seen.”h]”hXidr_for_each() can be called concurrently with idr_alloc() and idr_remove() if protected by RCU. Newly added entries may not be seen and deleted entries may be seen, but adding and removing entries will not cause other entries to be skipped, nor spurious ones to be seen.”…”�”}”(hj‡4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´K¿hj93ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_get_next_ul (C function)”Œc.idr_get_next_ul”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ?void * idr_get_next_ul (struct idr *idr, unsigned long *nextid)”h]”j4)�”}”(hŒ=void *idr_get_next_ul(struct idr *idr, unsigned long *nextid)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj²4h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KÜubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ4h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj²4h²hh³jÄ4h´KÜubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjÓ4h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj²4h²hh³jÄ4h´KÜubj:)�”}”(hŒidr_get_next_ul”h]”j@)�”}”(hŒidr_get_next_ul”h]”hŒidr_get_next_ul”…”�”}”(hjä4h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjà4ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj²4h²hh³jÄ4h´KÜubjÊ)�”}”(hŒ((struct idr *idr, unsigned long *nextid)”h]”(jÐ)�”}”(hŒstruct idr *idr”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjü4ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjü4ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j 5Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jæ4sbŒc.idr_get_next_ul”†”asbuh1hhjü4ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>5h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjü4ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjL5h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjü4ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjY5h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjü4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjø4ubjÐ)�”}”(hŒunsigned long *nextid”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjr5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjn5ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€5h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjn5ubjs)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjŽ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjn5ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ5h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjn5ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjª5h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjn5ubj@)�”}”(hŒnextid”h]”hŒnextid”…”�”}”(hj·5h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjn5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjø4ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj²4h²hh³jÄ4h´KÜubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj®4h²hh³jÄ4h´KÜubah}”(h]”j©4ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jÄ4h´KÜhj«4h²hubjm)�”}”(hhh]”hþ)�”}”(hŒFind next populated entry.”h]”hŒFind next populated entry.”…”�”}”(hjá5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KÜhjÞ5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj«4h²hh³jÄ4h´KÜubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjù5j€jù5j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hXx**Parameters** ``struct idr *idr`` IDR handle. ``unsigned long *nextid`` Pointer to an ID. **Description** Returns the next populated entry in the tree with an ID greater than or equal to the value pointed to by **nextid**. On exit, **nextid** is updated to the ID of the found value. To use in a loop, the value pointed to by nextid must be incremented by the user.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj6h]”hŒ Parameters”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kàhjý5ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``struct idr *idr``”h]”j³)�”}”(hj"6h]”hŒstruct idr *idr”…”�”}”(hj$6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj 6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KÝhj6ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hj;6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j76h´KÝhj86ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j76h´KÝhj6ubjÝ)�”}”(hŒ,``unsigned long *nextid`` Pointer to an ID. ”h]”(jã)�”}”(hŒ``unsigned long *nextid``”h]”j³)�”}”(hj[6h]”hŒunsigned long *nextid”…”�”}”(hj]6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjY6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´KÞhjU6ubjý)�”}”(hhh]”hþ)�”}”(hŒPointer to an ID.”h]”hŒPointer to an ID.”…”�”}”(hjt6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jp6h´KÞhjq6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjU6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jp6h´KÞhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjý5ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hj–6h]”hŒ Description”…”�”}”(hj˜6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj”6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kàhjý5ubhþ)�”}”(hXReturns the next populated entry in the tree with an ID greater than or equal to the value pointed to by **nextid**. On exit, **nextid** is updated to the ID of the found value. To use in a loop, the value pointed to by nextid must be incremented by the user.”h]”(hŒiReturns the next populated entry in the tree with an ID greater than or equal to the value pointed to by ”…”�”}”(hj¬6h²hh³Nh´NubjÂ)�”}”(hŒ **nextid**”h]”hŒnextid”…”�”}”(hj´6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¬6ubhŒ . On exit, ”…”�”}”(hj¬6h²hh³Nh´NubjÂ)�”}”(hŒ **nextid**”h]”hŒnextid”…”�”}”(hjÆ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¬6ubhŒ| is updated to the ID of the found value. To use in a loop, the value pointed to by nextid must be incremented by the user.”…”�”}”(hj¬6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Kßhjý5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_get_next (C function)”Œc.idr_get_next”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ2void * idr_get_next (struct idr *idr, int *nextid)”h]”j4)�”}”(hŒ0void *idr_get_next(struct idr *idr, int *nextid)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÿ6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjû6h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjû6h²hh³j 7h´MubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjû6h²hh³j 7h´Mubj:)�”}”(hŒ idr_get_next”h]”j@)�”}”(hŒ idr_get_next”h]”hŒ idr_get_next”…”�”}”(hj-7h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj)7ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjû6h²hh³j 7h´MubjÊ)�”}”(hŒ(struct idr *idr, int *nextid)”h]”(jÐ)�”}”(hŒstruct idr *idr”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjI7h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjE7ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV7h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjE7ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjg7h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjd7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”ji7Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)j/7sbŒc.idr_get_next”†”asbuh1hhjE7ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡7h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjE7ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj•7h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjE7ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj¢7h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjE7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjA7ubjÐ)�”}”(hŒ int *nextid”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj»7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj·7ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ7h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj·7ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj×7h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj·7ubj@)�”}”(hŒnextid”h]”hŒnextid”…”�”}”(hjä7h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj·7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjA7ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhjû6h²hh³j 7h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj÷6h²hh³j 7h´Mubah}”(h]”jò6ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³j 7h´Mhjô6h²hubjm)�”}”(hhh]”hþ)�”}”(hŒFind next populated entry.”h]”hŒFind next populated entry.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj 8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjô6h²hh³j 7h´Mubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jj&8j€j&8j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hXn**Parameters** ``struct idr *idr`` IDR handle. ``int *nextid`` Pointer to an ID. **Description** Returns the next populated entry in the tree with an ID greater than or equal to the value pointed to by **nextid**. On exit, **nextid** is updated to the ID of the found value. To use in a loop, the value pointed to by nextid must be incremented by the user.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj08h]”hŒ Parameters”…”�”}”(hj28h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj.8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj*8ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``struct idr *idr``”h]”j³)�”}”(hjO8h]”hŒstruct idr *idr”…”�”}”(hjQ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjM8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´MhjI8ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hjh8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jd8h´Mhje8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjI8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jd8h´MhjF8ubjÝ)�”}”(hŒ"``int *nextid`` Pointer to an ID. ”h]”(jã)�”}”(hŒ``int *nextid``”h]”j³)�”}”(hjˆ8h]”hŒ int *nextid”…”�”}”(hjŠ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj†8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj‚8ubjý)�”}”(hhh]”hþ)�”}”(hŒPointer to an ID.”h]”hŒPointer to an ID.”…”�”}”(hj¡8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�8h´Mhjž8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj‚8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j�8h´MhjF8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj*8ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjÃ8h]”hŒ Description”…”�”}”(hjÅ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÁ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj*8ubhþ)�”}”(hXReturns the next populated entry in the tree with an ID greater than or equal to the value pointed to by **nextid**. On exit, **nextid** is updated to the ID of the found value. To use in a loop, the value pointed to by nextid must be incremented by the user.”h]”(hŒiReturns the next populated entry in the tree with an ID greater than or equal to the value pointed to by ”…”�”}”(hjÙ8h²hh³Nh´NubjÂ)�”}”(hŒ **nextid**”h]”hŒnextid”…”�”}”(hjá8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÙ8ubhŒ . On exit, ”…”�”}”(hjÙ8h²hh³Nh´NubjÂ)�”}”(hŒ **nextid**”h]”hŒnextid”…”�”}”(hjó8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjÙ8ubhŒ| is updated to the ID of the found value. To use in a loop, the value pointed to by nextid must be incremented by the user.”…”�”}”(hjÙ8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj*8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œidr_replace (C function)”Œ c.idr_replace”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒAvoid * idr_replace (struct idr *idr, void *ptr, unsigned long id)”h]”j4)�”}”(hŒ?void *idr_replace(struct idr *idr, void *ptr, unsigned long id)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj(9h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;9h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj(9h²hh³j:9h´MubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjI9h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj(9h²hh³j:9h´Mubj:)�”}”(hŒ idr_replace”h]”j@)�”}”(hŒ idr_replace”h]”hŒ idr_replace”…”�”}”(hjZ9h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjV9ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj(9h²hh³j:9h´MubjÊ)�”}”(hŒ.(struct idr *idr, void *ptr, unsigned long id)”h]”(jÐ)�”}”(hŒstruct idr *idr”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjv9h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjr9ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ9h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjr9ubh)�”}”(hhh]”j@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hj”9h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj‘9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j–9Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)j\9sbŒ c.idr_replace”†”asbuh1hhjr9ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´9h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjr9ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hjÂ9h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjr9ubj@)�”}”(hŒidr”h]”hŒidr”…”�”}”(hjÏ9h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjr9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjn9ubjÐ)�”}”(hŒ void *ptr”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjè9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjä9ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö9h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjä9ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjä9ubj@)�”}”(hŒptr”h]”hŒptr”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjä9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjn9ubjÐ)�”}”(hŒunsigned long id”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj*:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj&:ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8:h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj&:ubjs)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjF:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj&:ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT:h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj&:ubj@)�”}”(hŒid”h]”hŒid”…”�”}”(hjb:h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj&:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjn9ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj(9h²hh³j:9h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj$9h²hh³j:9h´Mubah}”(h]”j9ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³j:9h´Mhj!9h²hubjm)�”}”(hhh]”hþ)�”}”(hŒreplace pointer for given ID.”h]”hŒreplace pointer for given ID.”…”�”}”(hjŒ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj‰:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj!9h²hh³j:9h´Mubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jj¤:j€j¤:j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hX**Parameters** ``struct idr *idr`` IDR handle. ``void *ptr`` New pointer to associate with the ID. ``unsigned long id`` ID to change. **Description** Replace the pointer registered with an ID and return the old value. This function can be called under the RCU read lock concurrently with idr_alloc() and idr_remove() (as long as the ID being removed is not the one being replaced!). **Return** the old value on success. ``-ENOENT`` indicates that **id** was not found. ``-EINVAL`` indicates that **ptr** was not valid.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj®:h]”hŒ Parameters”…”�”}”(hj°:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj¬:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj¨:ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct idr *idr`` IDR handle. ”h]”(jã)�”}”(hŒ``struct idr *idr``”h]”j³)�”}”(hjÍ:h]”hŒstruct idr *idr”…”�”}”(hjÏ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjË:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´MhjÇ:ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDR handle.”h]”hŒ IDR handle.”…”�”}”(hjæ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jâ:h´Mhjã:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÇ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jâ:h´MhjÄ:ubjÝ)�”}”(hŒ4``void *ptr`` New pointer to associate with the ID. ”h]”(jã)�”}”(hŒ ``void *ptr``”h]”j³)�”}”(hj;h]”hŒ void *ptr”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj;ubjý)�”}”(hhh]”hþ)�”}”(hŒ%New pointer to associate with the ID.”h]”hŒ%New pointer to associate with the ID.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j;h´Mhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j;h´MhjÄ:ubjÝ)�”}”(hŒ#``unsigned long id`` ID to change. ”h]”(jã)�”}”(hŒ``unsigned long id``”h]”j³)�”}”(hj?;h]”hŒunsigned long id”…”�”}”(hjA;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj=;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj9;ubjý)�”}”(hhh]”hþ)�”}”(hŒ ID to change.”h]”hŒ ID to change.”…”�”}”(hjX;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jT;h´MhjU;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj9;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jT;h´MhjÄ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj¨:ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjz;h]”hŒ Description”…”�”}”(hj|;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjx;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj¨:ubhþ)�”}”(hŒèReplace the pointer registered with an ID and return the old value. This function can be called under the RCU read lock concurrently with idr_alloc() and idr_remove() (as long as the ID being removed is not the one being replaced!).”h]”hŒèReplace the pointer registered with an ID and return the old value. This function can be called under the RCU read lock concurrently with idr_alloc() and idr_remove() (as long as the ID being removed is not the one being replaced!).”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mhj¨:ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hj¡;h]”hŒReturn”…”�”}”(hj£;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjŸ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M hj¨:ubhþ)�”}”(hŒ~the old value on success. ``-ENOENT`` indicates that **id** was not found. ``-EINVAL`` indicates that **ptr** was not valid.”h]”(hŒthe old value on success. ”…”�”}”(hj·;h²hh³Nh´Nubj³)�”}”(hŒ ``-ENOENT``”h]”hŒ-ENOENT”…”�”}”(hj¿;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj·;ubhŒ indicates that ”…”�”}”(hj·;h²hh³Nh´NubjÂ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjÑ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj·;ubhŒ was not found. ”…”�”}”(hj·;h²hh³Nh´Nubj³)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hjã;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj·;ubhŒ indicates that ”…”�”}”hj·;sbjÂ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hjõ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj·;ubhŒ was not valid.”…”�”}”(hj·;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M!hj¨:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œida_alloc_range (C function)”Œc.ida_alloc_range”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒTint ida_alloc_range (struct ida *ida, unsigned int min, unsigned int max, gfp_t gfp)”h]”j4)�”}”(hŒSint ida_alloc_range(struct ida *ida, unsigned int min, unsigned int max, gfp_t gfp)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hj.<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj*<h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mpubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=<h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj*<h²hh³j<<h´Mpubj:)�”}”(hŒida_alloc_range”h]”j@)�”}”(hŒida_alloc_range”h]”hŒida_alloc_range”…”�”}”(hjO<h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjK<ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj*<h²hh³j<<h´MpubjÊ)�”}”(hŒ@(struct ida *ida, unsigned int min, unsigned int max, gfp_t gfp)”h]”(jÐ)�”}”(hŒstruct ida *ida”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjk<h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjg<ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx<h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjg<ubh)�”}”(hhh]”j@)�”}”(hŒida”h]”hŒida”…”�”}”(hj‰<h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj†<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j‹<Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jQ<sbŒc.ida_alloc_range”†”asbuh1hhjg<ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©<h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjg<ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj·<h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjg<ubj@)�”}”(hŒida”h]”hŒida”…”�”}”(hjÄ<h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjg<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjc<ubjÐ)�”}”(hŒunsigned int min”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÝ<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÙ<ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë<h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÙ<ubjs)�”}”(hŒint”h]”hŒint”…”�”}”(hjù<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÙ<ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÙ<ubj@)�”}”(hŒmin”h]”hŒmin”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjÙ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjc<ubjÐ)�”}”(hŒunsigned int max”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj.=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj*=ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<=h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj*=ubjs)�”}”(hŒint”h]”hŒint”…”�”}”(hjJ=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj*=ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX=h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj*=ubj@)�”}”(hŒmax”h]”hŒmax”…”�”}”(hjf=h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj*=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjc<ubjÐ)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j@)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj‚=h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j„=Œmodname”NŒ classname”Nj-j0)�”}”j3]”j¥<Œc.ida_alloc_range”†”asbuh1hhj{=ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj{=ubj@)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj®=h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj{=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjc<ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj*<h²hh³j<<h´Mpubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj&<h²hh³j<<h´Mpubah}”(h]”j!<ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³j<<h´Mphj#<h²hubjm)�”}”(hhh]”hþ)�”}”(hŒAllocate an unused ID.”h]”hŒAllocate an unused ID.”…”�”}”(hjØ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´MphjÕ=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj#<h²hh³j<<h´Mpubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjð=j€jð=j�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hX **Parameters** ``struct ida *ida`` IDA handle. ``unsigned int min`` Lowest ID to allocate. ``unsigned int max`` Highest ID to allocate. ``gfp_t gfp`` Memory allocation flags. **Description** Allocate an ID between **min** and **max**, inclusive. The allocated ID will not exceed ``INT_MAX``, even if **max** is larger. **Context** Any context. It is safe to call this function without locking in your code. **Return** The allocated ID, or ``-ENOMEM`` if memory could not be allocated, or ``-ENOSPC`` if there are no free IDs.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjú=h]”hŒ Parameters”…”�”}”(hjü=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjø=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mthjô=ubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct ida *ida`` IDA handle. ”h]”(jã)�”}”(hŒ``struct ida *ida``”h]”j³)�”}”(hj>h]”hŒstruct ida *ida”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mqhj>ubjý)�”}”(hhh]”hþ)�”}”(hŒ IDA handle.”h]”hŒ IDA handle.”…”�”}”(hj2>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j.>h´Mqhj/>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j.>h´Mqhj>ubjÝ)�”}”(hŒ,``unsigned int min`` Lowest ID to allocate. ”h]”(jã)�”}”(hŒ``unsigned int min``”h]”j³)�”}”(hjR>h]”hŒunsigned int min”…”�”}”(hjT>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjP>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´MrhjL>ubjý)�”}”(hhh]”hþ)�”}”(hŒLowest ID to allocate.”h]”hŒLowest ID to allocate.”…”�”}”(hjk>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jg>h´Mrhjh>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjL>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jg>h´Mrhj>ubjÝ)�”}”(hŒ-``unsigned int max`` Highest ID to allocate. ”h]”(jã)�”}”(hŒ``unsigned int max``”h]”j³)�”}”(hj‹>h]”hŒunsigned int max”…”�”}”(hj�>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj‰>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mshj…>ubjý)�”}”(hhh]”hþ)�”}”(hŒHighest ID to allocate.”h]”hŒHighest ID to allocate.”…”�”}”(hj¤>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j >h´Mshj¡>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj…>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j >h´Mshj>ubjÝ)�”}”(hŒ'``gfp_t gfp`` Memory allocation flags. ”h]”(jã)�”}”(hŒ ``gfp_t gfp``”h]”j³)�”}”(hjÄ>h]”hŒ gfp_t gfp”…”�”}”(hjÆ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjÂ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mthj¾>ubjý)�”}”(hhh]”hþ)�”}”(hŒMemory allocation flags.”h]”hŒMemory allocation flags.”…”�”}”(hjÝ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÙ>h´MthjÚ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj¾>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jÙ>h´Mthj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjô=ubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjÿ>h]”hŒ Description”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjý>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mvhjô=ubhþ)�”}”(hŒ€Allocate an ID between **min** and **max**, inclusive. The allocated ID will not exceed ``INT_MAX``, even if **max** is larger.”h]”(hŒAllocate an ID between ”…”�”}”(hj?h²hh³Nh´NubjÂ)�”}”(hŒ**min**”h]”hŒmin”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj?ubhŒ and ”…”�”}”(hj?h²hh³Nh´NubjÂ)�”}”(hŒ**max**”h]”hŒmax”…”�”}”(hj/?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj?ubhŒ/, inclusive. The allocated ID will not exceed ”…”�”}”(hj?h²hh³Nh´Nubj³)�”}”(hŒ ``INT_MAX``”h]”hŒINT_MAX”…”�”}”(hjA?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj?ubhŒ , even if ”…”�”}”(hj?h²hh³Nh´NubjÂ)�”}”(hŒ**max**”h]”hŒmax”…”�”}”(hjS?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj?ubhŒ is larger.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Muhjô=ubhþ)�”}”(hŒ **Context**”h]”jÂ)�”}”(hjn?h]”hŒContext”…”�”}”(hjp?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjl?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mxhjô=ubhþ)�”}”(hŒKAny context. It is safe to call this function without locking in your code.”h]”hŒKAny context. It is safe to call this function without locking in your code.”…”�”}”(hj„?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Myhjô=ubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hj•?h]”hŒReturn”…”�”}”(hj—?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj“?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M|hjô=ubhþ)�”}”(hŒkThe allocated ID, or ``-ENOMEM`` if memory could not be allocated, or ``-ENOSPC`` if there are no free IDs.”h]”(hŒThe allocated ID, or ”…”�”}”(hj«?h²hh³Nh´Nubj³)�”}”(hŒ ``-ENOMEM``”h]”hŒ-ENOMEM”…”�”}”(hj³?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj«?ubhŒ& if memory could not be allocated, or ”…”�”}”(hj«?h²hh³Nh´Nubj³)�”}”(hŒ ``-ENOSPC``”h]”hŒ-ENOSPC”…”�”}”(hjÅ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj«?ubhŒ if there are no free IDs.”…”�”}”(hj«?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M{hjô=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œ!ida_find_first_range (C function)”Œc.ida_find_first_range”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒNint ida_find_first_range (struct ida *ida, unsigned int min, unsigned int max)”h]”j4)�”}”(hŒMint ida_find_first_range(struct ida *ida, unsigned int min, unsigned int max)”h]”(js)�”}”(hŒint”h]”hŒint”…”�”}”(hjþ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjú?h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mâubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjú?h²hh³j @h´Mâubj:)�”}”(hŒida_find_first_range”h]”j@)�”}”(hŒida_find_first_range”h]”hŒida_find_first_range”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj@ubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hjú?h²hh³j @h´MâubjÊ)�”}”(hŒ5(struct ida *ida, unsigned int min, unsigned int max)”h]”(jÐ)�”}”(hŒstruct ida *ida”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hj;@h²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhj7@ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH@h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj7@ubh)�”}”(hhh]”j@)�”}”(hŒida”h]”hŒida”…”�”}”(hjY@h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjV@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j[@Œmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)j!@sbŒc.ida_find_first_range”†”asbuh1hhj7@ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy@h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj7@ubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj‡@h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj7@ubj@)�”}”(hŒida”h]”hŒida”…”�”}”(hj”@h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj7@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj3@ubjÐ)�”}”(hŒunsigned int min”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj­@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj©@ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»@h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj©@ubjs)�”}”(hŒint”h]”hŒint”…”�”}”(hjÉ@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj©@ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×@h²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj©@ubj@)�”}”(hŒmin”h]”hŒmin”…”�”}”(hjå@h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj©@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj3@ubjÐ)�”}”(hŒunsigned int max”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjþ@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjú@ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjú@ubjs)�”}”(hŒint”h]”hŒint”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjú@ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Ah²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjú@ubj@)�”}”(hŒmax”h]”hŒmax”…”�”}”(hj6Ah²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjú@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj3@ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhjú?h²hh³j @h´Mâubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hjö?h²hh³j @h´Mâubah}”(h]”jñ?ah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³j @h´Mâhjó?h²hubjm)�”}”(hhh]”hþ)�”}”(hŒGet the lowest used ID.”h]”hŒGet the lowest used ID.”…”�”}”(hj`Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mâhj]Ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjó?h²hh³j @h´Mâubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjxAj€jxAj�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hX�**Parameters** ``struct ida *ida`` IDA handle. ``unsigned int min`` Lowest ID to get. ``unsigned int max`` Highest ID to get. **Description** Get the lowest used ID between **min** and **max**, inclusive. The returned ID will not exceed ``INT_MAX``, even if **max** is larger. **Context** Any context. Takes and releases the xa_lock. **Return** The lowest used ID, or errno if no used ID is found.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj‚Ah]”hŒ Parameters”…”�”}”(hj„Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj€Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mæhj|AubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct ida *ida`` IDA handle. ”h]”(jã)�”}”(hŒ``struct ida *ida``”h]”j³)�”}”(hj¡Ah]”hŒstruct ida *ida”…”�”}”(hj£Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjŸAubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mãhj›Aubjý)�”}”(hhh]”hþ)�”}”(hŒ IDA handle.”h]”hŒ IDA handle.”…”�”}”(hjºAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j¶Ah´Mãhj·Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj›Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j¶Ah´Mãhj˜AubjÝ)�”}”(hŒ'``unsigned int min`` Lowest ID to get. ”h]”(jã)�”}”(hŒ``unsigned int min``”h]”j³)�”}”(hjÚAh]”hŒunsigned int min”…”�”}”(hjÜAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjØAubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´MähjÔAubjý)�”}”(hhh]”hþ)�”}”(hŒLowest ID to get.”h]”hŒLowest ID to get.”…”�”}”(hjóAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jïAh´MähjðAubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjÔAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jïAh´Mähj˜AubjÝ)�”}”(hŒ(``unsigned int max`` Highest ID to get. ”h]”(jã)�”}”(hŒ``unsigned int max``”h]”j³)�”}”(hjBh]”hŒunsigned int max”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Måhj Bubjý)�”}”(hhh]”hþ)�”}”(hŒHighest ID to get.”h]”hŒHighest ID to get.”…”�”}”(hj,Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j(Bh´Måhj)Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j(Bh´Måhj˜Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj|Aubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjNBh]”hŒ Description”…”�”}”(hjPBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjLBubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mçhj|Aubhþ)�”}”(hŒ‡Get the lowest used ID between **min** and **max**, inclusive. The returned ID will not exceed ``INT_MAX``, even if **max** is larger.”h]”(hŒGet the lowest used ID between ”…”�”}”(hjdBh²hh³Nh´NubjÂ)�”}”(hŒ**min**”h]”hŒmin”…”�”}”(hjlBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjdBubhŒ and ”…”�”}”(hjdBh²hh³Nh´Nub•Ü9jÂ)�”}”(hŒ**max**”h]”hŒmax”…”�”}”(hj~Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjdBubhŒ., inclusive. The returned ID will not exceed ”…”�”}”(hjdBh²hh³Nh´Nubj³)�”}”(hŒ ``INT_MAX``”h]”hŒINT_MAX”…”�”}”(hj�Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjdBubhŒ , even if ”…”�”}”(hjdBh²hh³Nh´NubjÂ)�”}”(hŒ**max**”h]”hŒmax”…”�”}”(hj¢Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjdBubhŒ is larger.”…”�”}”(hjdBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mæhj|Aubhþ)�”}”(hŒ **Context**”h]”jÂ)�”}”(hj½Bh]”hŒContext”…”�”}”(hj¿Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj»Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Méhj|Aubhþ)�”}”(hŒ,Any context. Takes and releases the xa_lock.”h]”hŒ,Any context. Takes and releases the xa_lock.”…”�”}”(hjÓBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mêhj|Aubhþ)�”}”(hŒ **Return**”h]”jÂ)�”}”(hjäBh]”hŒReturn”…”�”}”(hjæBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjâBubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mìhj|Aubhþ)�”}”(hŒ4The lowest used ID, or errno if no used ID is found.”h]”hŒ4The lowest used ID, or errno if no used ID is found.”…”�”}”(hjúBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´Mëhj|Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œida_free (C function)”Œ c.ida_free”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ0void ida_free (struct ida *ida, unsigned int id)”h]”j4)�”}”(hŒ/void ida_free(struct ida *ida, unsigned int id)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj)Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj%Ch²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M%ubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Ch²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj%Ch²hh³j7Ch´M%ubj:)�”}”(hŒida_free”h]”j@)�”}”(hŒida_free”h]”hŒida_free”…”�”}”(hjJCh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjFCubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj%Ch²hh³j7Ch´M%ubjÊ)�”}”(hŒ"(struct ida *ida, unsigned int id)”h]”(jÐ)�”}”(hŒstruct ida *ida”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjfCh²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjbCubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsCh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjbCubh)�”}”(hhh]”j@)�”}”(hŒida”h]”hŒida”…”�”}”(hj„Ch²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hj�Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j†CŒmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jLCsbŒ c.ida_free”†”asbuh1hhjbCubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Ch²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjbCubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj²Ch²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjbCubj@)�”}”(hŒida”h]”hŒida”…”�”}”(hj¿Ch²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjbCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj^CubjÐ)�”}”(hŒunsigned int id”h]”(js)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjØCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÔCubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæCh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÔCubjs)�”}”(hŒint”h]”hŒint”…”�”}”(hjôCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhjÔCubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjÔCubj@)�”}”(hŒid”h]”hŒid”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjÔCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhj^Cubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj%Ch²hh³j7Ch´M%ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj!Ch²hh³j7Ch´M%ubah}”(h]”jCah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³j7Ch´M%hjCh²hubjm)�”}”(hhh]”hþ)�”}”(hŒRelease an allocated ID.”h]”hŒRelease an allocated ID.”…”�”}”(hj:Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M%hj7Dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjCh²hh³j7Ch´M%ubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jjRDj€jRDj�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hŒ»**Parameters** ``struct ida *ida`` IDA handle. ``unsigned int id`` Previously allocated ID. **Context** Any context. It is safe to call this function without locking in your code.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hj\Dh]”hŒ Parameters”…”�”}”(hj^Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjZDubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M)hjVDubjØ)�”}”(hhh]”(jÝ)�”}”(hŒ ``struct ida *ida`` IDA handle. ”h]”(jã)�”}”(hŒ``struct ida *ida``”h]”j³)�”}”(hj{Dh]”hŒstruct ida *ida”…”�”}”(hj}Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hjyDubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M&hjuDubjý)�”}”(hhh]”hþ)�”}”(hŒ IDA handle.”h]”hŒ IDA handle.”…”�”}”(hj”Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³j�Dh´M&hj‘Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jühjuDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³j�Dh´M&hjrDubjÝ)�”}”(hŒ-``unsigned int id`` Previously allocated ID. ”h]”(jã)�”}”(hŒ``unsigned int id``”h]”j³)�”}”(hj´Dh]”hŒunsigned int id”…”�”}”(hj¶Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj²Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M'hj®Dubjý)�”}”(hhh]”hþ)�”}”(hŒPreviously allocated ID.”h]”hŒPreviously allocated ID.”…”�”}”(hjÍDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jÉDh´M'hjÊDubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj®Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jÉDh´M'hjrDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjVDubhþ)�”}”(hŒ **Context**”h]”jÂ)�”}”(hjïDh]”hŒContext”…”�”}”(hjñDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjíDubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M)hjVDubhþ)�”}”(hŒKAny context. It is safe to call this function without locking in your code.”h]”hŒKAny context. It is safe to call this function without locking in your code.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M)hjVDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j$Œida_destroy (C function)”Œ c.ida_destroy”hNt”auh1jhjh²hh³Nh´Nubj))�”}”(hhh]”(j.)�”}”(hŒ"void ida_destroy (struct ida *ida)”h]”j4)�”}”(hŒ!void ida_destroy(struct ida *ida)”h]”(js)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj4Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jrhj0Eh²hh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´MWubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCEh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hj0Eh²hh³jBEh´MWubj:)�”}”(hŒ ida_destroy”h]”j@)�”}”(hŒ ida_destroy”h]”hŒ ida_destroy”…”�”}”(hjUEh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjQEubah}”(h]”h ]”(jRjSeh"]”h$]”h&]”hÅhÆuh1j9hj0Eh²hh³jBEh´MWubjÊ)�”}”(hŒ(struct ida *ida)”h]”jÐ)�”}”(hŒstruct ida *ida”h]”(jÖ)�”}”(hjöh]”hŒstruct”…”�”}”(hjqEh²hh³Nh´Nubah}”(h]”h ]”jâah"]”h$]”h&]”uh1jÕhjmEubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Eh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjmEubh)�”}”(hhh]”j@)�”}”(hŒida”h]”hŒida”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjŒEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j´Œreftype”j)Œ reftarget”j‘EŒmodname”NŒ classname”Nj-j0)�”}”j3]”j6)�”}”j)jWEsbŒ c.ida_destroy”†”asbuh1hhjmEubj…)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Eh²hh³Nh´Nubah}”(h]”h ]”j‘ah"]”h$]”h&]”uh1j„hjmEubjJ)�”}”(hjMh]”hŒ*”…”�”}”(hj½Eh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjmEubj@)�”}”(hŒida”h]”hŒida”…”�”}”(hjÊEh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j?hjmEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÏhjiEubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÉhj0Eh²hh³jBEh´MWubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆj^ˆuh1j3j_j`hj,Eh²hh³jBEh´MWubah}”(h]”j'Eah ]”(jdjeeh"]”h$]”h&]”jiˆjj)jkhuh1j-h³jBEh´MWhj)Eh²hubjm)�”}”(hhh]”hþ)�”}”(hŒ Free all IDs.”h]”hŒ Free all IDs.”…”�”}”(hjôEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´MWhjñEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj)Eh²hh³jBEh´MWubeh}”(h]”h ]”(j´Œfunction”eh"]”h$]”h&]”j~j´jj Fj€j Fj�‰j‚‰jƒ‰uh1j(h²hhjh³Nh´Nubj¸)�”}”(hXx**Parameters** ``struct ida *ida`` IDA handle. **Description** Calling this function frees all IDs and releases all resources used by an IDA. When this call returns, the IDA is empty and can be reused or freed. If the IDA is already empty, there is no need to call this function. **Context** Any context. It is safe to call this function without locking in your code.”h]”(hþ)�”}”(hŒ**Parameters**”h]”jÂ)�”}”(hjFh]”hŒ Parameters”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M[hjFubjØ)�”}”(hhh]”jÝ)�”}”(hŒ ``struct ida *ida`` IDA handle. ”h]”(jã)�”}”(hŒ``struct ida *ida``”h]”j³)�”}”(hj5Fh]”hŒstruct ida *ida”…”�”}”(hj7Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j²hj3Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jâh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´MXhj/Fubjý)�”}”(hhh]”hþ)�”}”(hŒ IDA handle.”h]”hŒ IDA handle.”…”�”}”(hjNFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³jJFh´MXhjKFubah}”(h]”h ]”h"]”h$]”h&]”uh1jühj/Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÜh³jJFh´MXhj,Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjFubhþ)�”}”(hŒ**Description**”h]”jÂ)�”}”(hjpFh]”hŒ Description”…”�”}”(hjrFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhjnFubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´MZhjFubhþ)�”}”(hŒÚCalling this function frees all IDs and releases all resources used by an IDA. When this call returns, the IDA is empty and can be reused or freed. If the IDA is already empty, there is no need to call this function.”h]”hŒÚCalling this function frees all IDs and releases all resources used by an IDA. When this call returns, the IDA is empty and can be reused or freed. If the IDA is already empty, there is no need to call this function.”…”�”}”(hj†Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´MYhjFubhþ)�”}”(hŒ **Context**”h]”jÂ)�”}”(hj—Fh]”hŒContext”…”�”}”(hj™Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj•Fubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M^hjFubhþ)�”}”(hŒKAny context. It is safe to call this function without locking in your code.”h]”hŒKAny context. It is safe to call this function without locking in your code.”…”�”}”(hj­Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³ŒF/var/lib/git/docbuild/linux/Documentation/core-api/idr:83: ./lib/idr.c”h´M_hjFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j·hjh²hh³Nh´Nubeh}”(h]”Œfunctions-and-structures”ah ]”h"]”Œfunctions and structures”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KOubeh}”(h]”Œ id-allocation”ah ]”h"]”Œ id allocation”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jöFŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jÐFjÍFjzjwjŠj‡jjjÈFjÅFuŒ nametypes”}”(jÐF‰jz‰jЉj‰jÈF‰uh}”(jÍFhÊjwjj‡j}jj�jÅFjj&j/j[j`jejjj8j=jU jZ jV j[ j× jÜ j�j†j©j®jWj\j>jCjºj¿j�j†jj j)j.j9j>j”#j™#j�'j”'j®+j³+j.j.j­0j²0j©4j®4jò6j÷6j9j$9j!<j&<jñ?jö?jCj!Cj'Ej,EuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.