sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget//translations/zh_CN/core-api/generic-radix-treemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/zh_TW/core-api/generic-radix-treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/it_IT/core-api/generic-radix-treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/ja_JP/core-api/generic-radix-treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/ko_KR/core-api/generic-radix-treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/pt_BR/core-api/generic-radix-treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/sp_SP/core-api/generic-radix-treemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h!Generic radix trees/sparse arraysh]h!Generic radix trees/sparse arrays}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhI/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree.rsthKubh paragraph)}(hYVery simple and minimalistic, supporting arbitrary size entries up to GENRADIX_NODE_SIZE.h]hYVery simple and minimalistic, supporting arbitrary size entries up to GENRADIX_NODE_SIZE.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhKhhhhubh)}(h;A genradix is defined with the type it will store, like so:h]h;A genradix is defined with the type it will store, like so:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhKhhhhubh)}(h)static GENRADIX(struct foo) foo_genradix;h]h)static GENRADIX(struct foo) foo_genradix;}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhK hhhhubh)}(hThe main operations are:h]hThe main operations are:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhK hhhhubh bullet_list)}(hhh](h list_item)}(h4genradix_init(radix) - initialize an empty genradix h]h)}(h3genradix_init(radix) - initialize an empty genradixh]h3genradix_init(radix) - initialize an empty genradix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhKhjubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hQgenradix_free(radix) - free all memory owned by the genradix and reinitialize it h]h)}(hPgenradix_free(radix) - free all memory owned by the genradix and reinitialize ith]hPgenradix_free(radix) - free all memory owned by the genradix and reinitialize it}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhKhj)ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hkgenradix_ptr(radix, idx) - gets a pointer to the entry at idx, returning NULL if that entry does not exist h]h)}(hjgenradix_ptr(radix, idx) - gets a pointer to the entry at idx, returning NULL if that entry does not existh]hjgenradix_ptr(radix, idx) - gets a pointer to the entry at idx, returning NULL if that entry does not exist}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhKhjBubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(h]genradix_ptr_alloc(radix, idx, gfp) - gets a pointer to an entry, allocating it if necessary h]h)}(h\genradix_ptr_alloc(radix, idx, gfp) - gets a pointer to an entry, allocating it if necessaryh]h\genradix_ptr_alloc(radix, idx, gfp) - gets a pointer to an entry, allocating it if necessary}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhKhj[ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hJgenradix_for_each(radix, iter, p) - iterate over each entry in a genradix h]h)}(hIgenradix_for_each(radix, iter, p) - iterate over each entry in a genradixh]hIgenradix_for_each(radix, iter, p) - iterate over each entry in a genradix}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhKhjtubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]bullet-uh1j hj"hKhhhhubh)}(hThe radix tree allocates one page of entries at a time, so entries may exist that were never explicitly allocated - they will be initialized to all zeroes.h]hThe radix tree allocates one page of entries at a time, so entries may exist that were never explicitly allocated - they will be initialized to all zeroes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhKhhhhubh)}(hInternally, a genradix is just a radix tree of pages, and indexing works in terms of byte offsets. The wrappers in this header file use sizeof on the type the radix contains to calculate a byte offset from the index - see __idx_to_offset.h]hInternally, a genradix is just a radix tree of pages, and indexing works in terms of byte offsets. The wrappers in this header file use sizeof on the type the radix contains to calculate a byte offset from the index - see __idx_to_offset.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhKhhhhubh)}(hhh](h)}(hgeneric radix tree functionsh]hgeneric radix tree functions}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK ubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlegenradix_init (C macro)c.genradix_inithNtauh1jhjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h genradix_inith]hdesc_signature_line)}(h genradix_inith]h desc_name)}(h genradix_inith]h desc_sig_name)}(hjh]h genradix_init}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1jhjhhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKubah}(h]h ]h"]h$]h&]jj add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKhjhhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](cmacroeh"]h$]h&]domainj)objtypej*desctypej*noindex noindexentrynocontentsentryuh1jhhhjhNhNubh)}(h``genradix_init (_radix)``h]hliteral)}(hj6h]hgenradix_init (_radix)}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hj4ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjhhubh block_quote)}(hinitialize a genradix h]h)}(hinitialize a genradixh]hinitialize a genradix}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjPubah}(h]h ]h"]h$]h&]uh1jNhjbhKhjhhubh container)}(hS**Parameters** ``_radix`` genradix to initialize **Description** Does not failh](h)}(h**Parameters**h]hstrong)}(hjqh]h Parameters}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjoubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjkubhdefinition_list)}(hhh]hdefinition_list_item)}(h"``_radix`` genradix to initialize h](hterm)}(h ``_radix``h]j9)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubh definition)}(hhh]h)}(hgenradix to initializeh]hgenradix to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjkubh)}(h**Description**h]jt)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjkubh)}(h Does not failh]h Does not fail}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjkubeh}(h]h ] kernelindentah"]h$]h&]uh1jihjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgenradix_free (C macro)c.genradix_freehNtauh1jhjhhhNhNubj)}(hhh](j)}(h genradix_freeh]j)}(h genradix_freeh]j)}(h genradix_freeh]j)}(hjh]h genradix_free}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKubah}(h]h ]h"]h$]h&]jjj uh1jjjhjhhhj1hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj1hKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhj1hKubeh}(h]h ](j)macroeh"]h$]h&]j.j)j/jJj0jJj1j2j3uh1jhhhjhNhNubh)}(h``genradix_free (_radix)``h]j9)}(hjPh]hgenradix_free (_radix)}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjhhubjO)}(h$free all memory owned by a genradix h]h)}(h#free all memory owned by a genradixh]h#free all memory owned by a genradix}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjfubah}(h]h ]h"]h$]h&]uh1jNhjxhKhjhhubjj)}(h}**Parameters** ``_radix`` the genradix to free **Description** After freeing, **_radix** will be reinitialized and emptyh](h)}(h**Parameters**h]jt)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubj)}(hhh]j)}(h ``_radix`` the genradix to free h](j)}(h ``_radix``h]j9)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubj)}(hhh]h)}(hthe genradix to freeh]hthe genradix to free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]jt)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubh)}(h9After freeing, **_radix** will be reinitialized and emptyh](hAfter freeing, }(hjhhhNhNubjt)}(h **_radix**h]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubh will be reinitialized and empty}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jihjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgenradix_ptr (C macro)c.genradix_ptrhNtauh1jhjhhhNhNubj)}(hhh](j)}(h genradix_ptrh]j)}(h genradix_ptrh]j)}(h genradix_ptrh]j)}(hj0h]h genradix_ptr}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj2hhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKubah}(h]h ]h"]h$]h&]jjj uh1jjjhj.hhhjMhKubah}(h]j)ah ](jjeh"]h$]h&]jj)jhuh1jhjMhKhj+hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj+hhhjMhKubeh}(h]h ](j)macroeh"]h$]h&]j.j)j/jfj0jfj1j2j3uh1jhhhjhNhNubh)}(h``genradix_ptr (_radix, _idx)``h]j9)}(hjlh]hgenradix_ptr (_radix, _idx)}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjhhubjO)}(h"get a pointer to a genradix entry h]h)}(h!get a pointer to a genradix entryh]h!get a pointer to a genradix entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubah}(h]h ]h"]h$]h&]uh1jNhjhKhjhhubjj)}(h**Parameters** ``_radix`` genradix to access ``_idx`` index to fetch **Description** Returns a pointer to entry at **_idx**, or NULL if that entry does not exist.h](h)}(h**Parameters**h]jt)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubj)}(hhh](j)}(h``_radix`` genradix to access h](j)}(h ``_radix``h]j9)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubj)}(hhh]h)}(hgenradix to accessh]hgenradix to access}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``_idx`` index to fetch h](j)}(h``_idx``h]j9)}(hjh]h_idx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubj)}(hhh]h)}(hindex to fetchh]hindex to fetch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]jt)}(hj4h]h Description}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj2ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubh)}(hMReturns a pointer to entry at **_idx**, or NULL if that entry does not exist.h](hReturns a pointer to entry at }(hjJhhhNhNubjt)}(h**_idx**h]h_idx}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjJubh', or NULL if that entry does not exist.}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jihjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgenradix_ptr_alloc (C macro)c.genradix_ptr_allochNtauh1jhjhhhNhNubj)}(hhh](j)}(hgenradix_ptr_alloch]j)}(hgenradix_ptr_alloch]j)}(hgenradix_ptr_alloch]j)}(hjh]hgenradix_ptr_alloc}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKubah}(h]h ]h"]h$]h&]jjj uh1jjjhjhhhjhKubah}(h]j~ah ](jjeh"]h$]h&]jj)jhuh1jhjhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](j)macroeh"]h$]h&]j.j)j/jj0jj1j2j3uh1jhhhjhNhNubh)}(h+``genradix_ptr_alloc (_radix, _idx, _gfp)``h]j9)}(hjh]h'genradix_ptr_alloc (_radix, _idx, _gfp)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjhhubjO)}(h>get a pointer to a genradix entry, allocating it if necessary h]h)}(h=get a pointer to a genradix entry, allocating it if necessaryh]h=get a pointer to a genradix entry, allocating it if necessary}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubah}(h]h ]h"]h$]h&]uh1jNhjhKhjhhubjj)}(h**Parameters** ``_radix`` genradix to access ``_idx`` index to fetch ``_gfp`` gfp mask **Description** Returns a pointer to entry at **_idx**, or NULL on allocation failureh](h)}(h**Parameters**h]jt)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubj)}(hhh](j)}(h``_radix`` genradix to access h](j)}(h ``_radix``h]j9)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubj)}(hhh]h)}(hgenradix to accessh]hgenradix to access}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hKhj+ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj*hKhj ubj)}(h``_idx`` index to fetch h](j)}(h``_idx``h]j9)}(hjNh]h_idx}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjLubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjHubj)}(hhh]h)}(hindex to fetchh]hindex to fetch}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchKhjdubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1jhjchKhj ubj)}(h``_gfp`` gfp mask h](j)}(h``_gfp``h]j9)}(hjh]h_gfp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubj)}(hhh]h)}(hgfp maskh]hgfp mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]jt)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubh)}(hEReturns a pointer to entry at **_idx**, or NULL on allocation failureh](hReturns a pointer to entry at }(hjhhhNhNubjt)}(h**_idx**h]h_idx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubh, or NULL on allocation failure}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jihjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgenradix_iter_init (C macro)c.genradix_iter_inithNtauh1jhjhhhNhNubj)}(hhh](j)}(hgenradix_iter_inith]j)}(hgenradix_iter_inith]j)}(hgenradix_iter_inith]j)}(hjh]hgenradix_iter_init}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM ubah}(h]h ]h"]h$]h&]jjj uh1jjjhjhhhj0hM ubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj0hM hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhj0hM ubeh}(h]h ](j)macroeh"]h$]h&]j.j)j/jIj0jIj1j2j3uh1jhhhjhNhNubh)}(h%``genradix_iter_init (_radix, _idx)``h]j9)}(hjOh]h!genradix_iter_init (_radix, _idx)}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjMubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjhhubjO)}(hinitialize a genradix_iter h]h)}(hinitialize a genradix_iterh]hinitialize a genradix_iter}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM hjeubah}(h]h ]h"]h$]h&]uh1jNhjwhM hjhhubjj)}(hj**Parameters** ``_radix`` genradix that will be iterated over ``_idx`` index to start iterating fromh](h)}(h**Parameters**h]jt)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhj~ubj)}(hhh](j)}(h/``_radix`` genradix that will be iterated over h](j)}(h ``_radix``h]j9)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubj)}(hhh]h)}(h#genradix that will be iterated overh]h#genradix that will be iterated over}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h&``_idx`` index to start iterating fromh](j)}(h``_idx``h]j9)}(hjh]h_idx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubj)}(hhh]h)}(hindex to start iterating fromh]hindex to start iterating from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jihjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgenradix_iter_peek (C macro)c.genradix_iter_peekhNtauh1jhjhhhNhNubj)}(hhh](j)}(hgenradix_iter_peekh]j)}(hgenradix_iter_peekh]j)}(hgenradix_iter_peekh]j)}(hj0h]hgenradix_iter_peek}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj2hhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMubah}(h]h ]h"]h$]h&]jjj uh1jjjhj.hhhjMhMubah}(h]j)ah ](jjeh"]h$]h&]jj)jhuh1jhjMhMhj+hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj+hhhjMhMubeh}(h]h ](j)macroeh"]h$]h&]j.j)j/jfj0jfj1j2j3uh1jhhhjhNhNubh)}(h&``genradix_iter_peek (_iter, _radix)``h]j9)}(hjlh]h"genradix_iter_peek (_iter, _radix)}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjhhubjO)}(h8get first entry at or above iterator's current position h]h)}(h7get first entry at or above iterator's current positionh]h9get first entry at or above iterator’s current position}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubah}(h]h ]h"]h$]h&]uh1jNhjhMhjhhubjj)}(h**Parameters** ``_iter`` a genradix_iter ``_radix`` genradix being iterated over **Description** If no more entries exist at or above **_iter**'s current position, returns NULLh](h)}(h**Parameters**h]jt)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubj)}(hhh](j)}(h``_iter`` a genradix_iter h](j)}(h ``_iter``h]j9)}(hjh]h_iter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubj)}(hhh]h)}(ha genradix_iterh]ha genradix_iter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h(``_radix`` genradix being iterated over h](j)}(h ``_radix``h]j9)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubj)}(hhh]h)}(hgenradix being iterated overh]hgenradix being iterated over}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]jt)}(hj4 h]h Description}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj2 ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubh)}(hOIf no more entries exist at or above **_iter**'s current position, returns NULLh](h%If no more entries exist at or above }(hjJ hhhNhNubjt)}(h **_iter**h]h_iter}(hjR hhhNhNubah}(h]h ]h"]h$]h&]uh1jshjJ ubh#’s current position, returns NULL}(hjJ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jihjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j!genradix_iter_peek_prev (C macro)c.genradix_iter_peek_prevhNtauh1jhjhhhNhNubj)}(hhh](j)}(hgenradix_iter_peek_prevh]j)}(hgenradix_iter_peek_prevh]j)}(hgenradix_iter_peek_prevh]j)}(hj h]hgenradix_iter_peek_prev}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM*ubah}(h]h ]h"]h$]h&]jjj uh1jjjhj hhhj hM*ubah}(h]j~ ah ](jjeh"]h$]h&]jj)jhuh1jhj hM*hj hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj hhhj hM*ubeh}(h]h ](j)macroeh"]h$]h&]j.j)j/j j0j j1j2j3uh1jhhhjhNhNubh)}(h+``genradix_iter_peek_prev (_iter, _radix)``h]j9)}(hj h]h'genradix_iter_peek_prev (_iter, _radix)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM,hjhhubjO)}(h8get first entry at or below iterator's current position h]h)}(h7get first entry at or below iterator's current positionh]h9get first entry at or below iterator’s current position}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM*hj ubah}(h]h ]h"]h$]h&]uh1jNhj hM*hjhhubjj)}(h**Parameters** ``_iter`` a genradix_iter ``_radix`` genradix being iterated over **Description** If no more entries exist at or below **_iter**'s current position, returns NULLh](h)}(h**Parameters**h]jt)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM.hj ubj)}(hhh](j)}(h``_iter`` a genradix_iter h](j)}(h ``_iter``h]j9)}(hj h]h_iter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM,hj ubj)}(hhh]h)}(ha genradix_iterh]ha genradix_iter}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj* hM,hj+ ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj* hM,hj ubj)}(h(``_radix`` genradix being iterated over h](j)}(h ``_radix``h]j9)}(hjN h]h_radix}(hjP hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjL ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM-hjH ubj)}(hhh]h)}(hgenradix being iterated overh]hgenradix being iterated over}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc hM-hjd ubah}(h]h ]h"]h$]h&]uh1jhjH ubeh}(h]h ]h"]h$]h&]uh1jhjc hM-hj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]jt)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM/hj ubh)}(hOIf no more entries exist at or below **_iter**'s current position, returns NULLh](h%If no more entries exist at or below }(hj hhhNhNubjt)}(h **_iter**h]h_iter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubh#’s current position, returns NULL}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM.hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jihjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgenradix_for_each (C macro)c.genradix_for_eachhNtauh1jhjhhhNhNubj)}(hhh](j)}(hgenradix_for_eachh]j)}(hgenradix_for_eachh]j)}(hgenradix_for_eachh]j)}(hj h]hgenradix_for_each}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMfubah}(h]h ]h"]h$]h&]jjj uh1jjjhj hhhj hMfubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj hMfhj hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj hhhj hMfubeh}(h]h ](j)macroeh"]h$]h&]j.j)j/j j0j j1j2j3uh1jhhhjhNhNubh)}(h)``genradix_for_each (_radix, _iter, _p)``h]j9)}(hj h]h%genradix_for_each (_radix, _iter, _p)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhhjhhubjO)}(h!iterate over entry in a genradix h]h)}(h iterate over entry in a genradixh]h iterate over entry in a genradix}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMfhj, ubah}(h]h ]h"]h$]h&]uh1jNhj> hMfhjhhubjj)}(hX**Parameters** ``_radix`` genradix to iterate over ``_iter`` a genradix_iter to track current position ``_p`` pointer to genradix entry type **Description** On every iteration, **_p** will point to the current entry, and **_iter.pos** will be the current entry's index.h](h)}(h**Parameters**h]jt)}(hjK h]h Parameters}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1jshjI ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMjhjE ubj)}(hhh](j)}(h$``_radix`` genradix to iterate over h](j)}(h ``_radix``h]j9)}(hjj h]h_radix}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjh ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMghjd ubj)}(hhh]h)}(hgenradix to iterate overh]hgenradix to iterate over}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMghj ubah}(h]h ]h"]h$]h&]uh1jhjd ubeh}(h]h ]h"]h$]h&]uh1jhj hMghja ubj)}(h4``_iter`` a genradix_iter to track current position h](j)}(h ``_iter``h]j9)}(hj h]h_iter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhhj ubj)}(hhh]h)}(h)a genradix_iter to track current positionh]h)a genradix_iter to track current position}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhhja ubj)}(h&``_p`` pointer to genradix entry type h](j)}(h``_p``h]j9)}(hj h]h_p}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMihj ubj)}(hhh]h)}(hpointer to genradix entry typeh]hpointer to genradix entry type}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMihj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMihja ubeh}(h]h ]h"]h$]h&]uh1jhjE ubh)}(h**Description**h]jt)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMkhjE ubh)}(hpOn every iteration, **_p** will point to the current entry, and **_iter.pos** will be the current entry's index.h](hOn every iteration, }(hj- hhhNhNubjt)}(h**_p**h]h_p}(hj5 hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj- ubh& will point to the current entry, and }(hj- hhhNhNubjt)}(h **_iter.pos**h]h _iter.pos}(hjG hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj- ubh% will be the current entry’s index.}(hj- hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMjhjE ubeh}(h]h ] kernelindentah"]h$]h&]uh1jihjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j#genradix_for_each_reverse (C macro)c.genradix_for_each_reversehNtauh1jhjhhhNhNubj)}(hhh](j)}(hgenradix_for_each_reverseh]j)}(hgenradix_for_each_reverseh]j)}(hgenradix_for_each_reverseh]j)}(hjz h]hgenradix_for_each_reverse}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj| hhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMuubah}(h]h ]h"]h$]h&]jjj uh1jjjhjx hhhj hMuubah}(h]js ah ](jjeh"]h$]h&]jj)jhuh1jhj hMuhju hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhju hhhj hMuubeh}(h]h ](j)macroeh"]h$]h&]j.j)j/j j0j j1j2j3uh1jhhhjhNhNubh)}(h1``genradix_for_each_reverse (_radix, _iter, _p)``h]j9)}(hj h]h-genradix_for_each_reverse (_radix, _iter, _p)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMwhjhhubjO)}(h0iterate over entry in a genradix, reverse order h]h)}(h/iterate over entry in a genradix, reverse orderh]h/iterate over entry in a genradix, reverse order}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMuhj ubah}(h]h ]h"]h$]h&]uh1jNhj hMuhjhhubjj)}(hX**Parameters** ``_radix`` genradix to iterate over ``_iter`` a genradix_iter to track current position ``_p`` pointer to genradix entry type **Description** On every iteration, **_p** will point to the current entry, and **_iter.pos** will be the current entry's index.h](h)}(h**Parameters**h]jt)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMyhj ubj)}(hhh](j)}(h$``_radix`` genradix to iterate over h](j)}(h ``_radix``h]j9)}(hj h]h_radix}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hj ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMvhj ubj)}(hhh]h)}(hgenradix to iterate overh]hgenradix to iterate over}(hj# hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMvhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hMvhj ubj)}(h4``_iter`` a genradix_iter to track current position h](j)}(h ``_iter``h]j9)}(hjC h]h_iter}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjA ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMwhj= ubj)}(hhh]h)}(h)a genradix_iter to track current positionh]h)a genradix_iter to track current position}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjX hMwhjY ubah}(h]h ]h"]h$]h&]uh1jhj= ubeh}(h]h ]h"]h$]h&]uh1jhjX hMwhj ubj)}(h&``_p`` pointer to genradix entry type h](j)}(h``_p``h]j9)}(hj| h]h_p}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjz ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMxhjv ubj)}(hhh]h)}(hpointer to genradix entry typeh]hpointer to genradix entry type}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMxhj ubah}(h]h ]h"]h$]h&]uh1jhjv ubeh}(h]h ]h"]h$]h&]uh1jhj hMxhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]jt)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMzhj ubh)}(hpOn every iteration, **_p** will point to the current entry, and **_iter.pos** will be the current entry's index.h](hOn every iteration, }(hj hhhNhNubjt)}(h**_p**h]h_p}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubh& will point to the current entry, and }(hj hhhNhNubjt)}(h **_iter.pos**h]h _iter.pos}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jshj ubh% will be the current entry’s index.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMyhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jihjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jgenradix_prealloc (C macro)c.genradix_preallochNtauh1jhjhhhNhNubj)}(hhh](j)}(hgenradix_prealloch]j)}(hgenradix_prealloch]j)}(hgenradix_prealloch]j)}(hjh]hgenradix_prealloc}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMubah}(h]h ]h"]h$]h&]jjj uh1jjjhjhhhj7hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj7hMhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhj7hMubeh}(h]h ](j)macroeh"]h$]h&]j.j)j/jPj0jPj1j2j3uh1jhhhjhNhNubh)}(h)``genradix_prealloc (_radix, _nr, _gfp)``h]j9)}(hjVh]h%genradix_prealloc (_radix, _nr, _gfp)}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjTubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjhhubjO)}(h,preallocate entries in a generic radix tree h]h)}(h+preallocate entries in a generic radix treeh]h+preallocate entries in a generic radix tree}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjlubah}(h]h ]h"]h$]h&]uh1jNhj~hMhjhhubjj)}(h**Parameters** ``_radix`` genradix to preallocate ``_nr`` number of entries to preallocate ``_gfp`` gfp mask **Description** Returns 0 on success, -ENOMEM on failureh](h)}(h**Parameters**h]jt)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubj)}(hhh](j)}(h#``_radix`` genradix to preallocate h](j)}(h ``_radix``h]j9)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubj)}(hhh]h)}(hgenradix to preallocateh]hgenradix to preallocate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h)``_nr`` number of entries to preallocate h](j)}(h``_nr``h]j9)}(hjh]h_nr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubj)}(hhh]h)}(h number of entries to preallocateh]h number of entries to preallocate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h``_gfp`` gfp mask h](j)}(h``_gfp``h]j9)}(hjh]h_gfp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j8hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubj)}(hhh]h)}(hgfp maskh]hgfp mask}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMhj2ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj1hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]jt)}(hjWh]h Description}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jshjUubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubh)}(h(Returns 0 on success, -ENOMEM on failureh]h(Returns 0 on success, -ENOMEM on failure}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jihjhhhNhNubeh}(h]generic-radix-tree-functionsah ]h"]generic radix tree functionsah$]h&]uh1hhhhhhhhK ubeh}(h]!generic-radix-trees-sparse-arraysah ]h"]!generic radix trees/sparse arraysah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehʌ _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjju nametypes}(jjuh}(jhjjjjj jj)j.j~jj jj)j.j~ j j j js jx jju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.