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]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.hhKhhubah}(h]h ]h"]h$]h&]uh1hhhubh)}(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}(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&]uh1hhhubh)}(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}(hj2hhhNhNubah}(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&]uh1hhhubh)}(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}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:5: ./include/linux/generic-radix-tree.hhKhjGubah}(h]h ]h"]h$]h&]uh1hhhubh)}(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}(hjdhhhNhNubah}(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&]uh1hhhubeh}(h]h ]h"]h$]h&]bullet-uh1hhjhKhhhhubh)}(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&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhjhNhNubh)}(h``genradix_init (_radix)``h]hliteral)}(hj"h]hgenradix_init (_radix)}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj ubah}(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}(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.hhKhj<ubah}(h]h ]h"]h$]h&]uh1j:hjNhKhjhhubh container)}(hS**Parameters** ``_radix`` genradix to initialize **Description** Does not failh](h)}(h**Parameters**h]hstrong)}(hj]h]h Parameters}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj[ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjWubhdefinition_list)}(hhh]hdefinition_list_item)}(h"``_radix`` genradix to initialize h](hterm)}(h ``_radix``h]j%)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhj|ubh definition)}(hhh]h)}(hgenradix to initializeh]hgenradix to initialize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jzhjhKhjwubah}(h]h ]h"]h$]h&]uh1juhjWubh)}(h**Description**h]j`)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjWubh)}(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.hhKhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jUhjhhhNhNubj)}(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}(hj hhhNhNubah}(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&]jjjuh1jjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jmacroeh"]h$]h&]jjjj6jj6jjjuh1jhhhjhNhNubh)}(h``genradix_free (_radix)``h]j%)}(hj<h]hgenradix_free (_radix)}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj:ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjhhubj;)}(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}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjRubah}(h]h ]h"]h$]h&]uh1j:hjdhKhjhhubjV)}(h}**Parameters** ``_radix`` the genradix to free **Description** After freeing, **_radix** will be reinitialized and emptyh](h)}(h**Parameters**h]j`)}(hjqh]h Parameters}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjoubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjkubjv)}(hhh]j{)}(h ``_radix`` the genradix to free h](j)}(h ``_radix``h]j%)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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&]uh1jzhjhKhjubah}(h]h ]h"]h$]h&]uh1juhjkubh)}(h**Description**h]j`)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjkubh)}(h9After freeing, **_radix** will be reinitialized and emptyh](hAfter freeing, }(hjhhhNhNubj`)}(h **_radix**h]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjubh 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.hhKhjkubeh}(h]h ] kernelindentah"]h$]h&]uh1jUhjhhhNhNubj)}(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)}(hjh]h genradix_ptr}(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.hhKubah}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhj9hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj9hKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhj9hKubeh}(h]h ](jmacroeh"]h$]h&]jjjjRjjRjjjuh1jhhhjhNhNubh)}(h``genradix_ptr (_radix, _idx)``h]j%)}(hjXh]hgenradix_ptr (_radix, _idx)}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjVubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjhhubj;)}(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}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjnubah}(h]h ]h"]h$]h&]uh1j:hjhKhjhhubjV)}(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]j`)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubjv)}(hhh](j{)}(h``_radix`` genradix to access h](j)}(h ``_radix``h]j%)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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&]uh1jzhjhKhjubj{)}(h``_idx`` index to fetch h](j)}(h``_idx``h]j%)}(hjh]h_idx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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&]uh1jzhjhKhjubeh}(h]h ]h"]h$]h&]uh1juhjubh)}(h**Description**h]j`)}(hj h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjubah}(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 }(hj6hhhNhNubj`)}(h**_idx**h]h_idx}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj6ubh', or NULL if that entry does not exist.}(hj6hhhNhNubeh}(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&]uh1jUhjhhhNhNubj)}(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)}(hjqh]hgenradix_ptr_alloc}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubah}(h]h ](jjeh"]h$]h&]jjuh1jhjshhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKubah}(h]h ]h"]h$]h&]jjjuh1jjjhjohhhjhKubah}(h]jjah ](jjeh"]h$]h&]jj)jhuh1jhjhKhjlhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjlhhhjhKubeh}(h]h ](jmacroeh"]h$]h&]jjjjjjjjjuh1jhhhjhNhNubh)}(h+``genradix_ptr_alloc (_radix, _idx, _gfp)``h]j%)}(hjh]h'genradix_ptr_alloc (_radix, _idx, _gfp)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjhhubj;)}(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&]uh1j:hjhKhjhhubjV)}(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]j`)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjubjv)}(hhh](j{)}(h``_radix`` genradix to access h](j)}(h ``_radix``h]j%)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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&]uh1jzhjhKhjubj{)}(h``_idx`` index to fetch h](j)}(h``_idx``h]j%)}(hj:h]h_idx}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj8ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhj4ubj)}(hhh]h)}(hindex to fetchh]hindex to fetch}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhKhjPubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jzhjOhKhjubj{)}(h``_gfp`` gfp mask h](j)}(h``_gfp``h]j%)}(hjsh]h_gfp}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjqubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhKhjmubj)}(hhh]h)}(hgfp maskh]hgfp mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jzhjhKhjubeh}(h]h ]h"]h$]h&]uh1juhjubh)}(h**Description**h]j`)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjubah}(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 }(hjhhhNhNubj`)}(h**_idx**h]h_idx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjubh, 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&]uh1jUhjhhhNhNubj)}(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}(hj hhhNhNubah}(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.hhMubah}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhjhMhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]jjjj5jj5jjjuh1jhhhjhNhNubh)}(h%``genradix_iter_init (_radix, _idx)``h]j%)}(hj;h]h!genradix_iter_init (_radix, _idx)}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj9ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjhhubj;)}(hinitialize a genradix_iter h]h)}(hinitialize a genradix_iterh]hinitialize a genradix_iter}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM hjQubah}(h]h ]h"]h$]h&]uh1j:hjchM hjhhubjV)}(hj**Parameters** ``_radix`` genradix that will be iterated over ``_idx`` index to start iterating fromh](h)}(h**Parameters**h]j`)}(hjph]h Parameters}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjnubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjjubjv)}(hhh](j{)}(h/``_radix`` genradix that will be iterated over h](j)}(h ``_radix``h]j%)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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&]uh1jzhjhMhjubj{)}(h&``_idx`` index to start iterating fromh](j)}(h``_idx``h]j%)}(hjh]h_idx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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&]uh1jzhjhMhjubeh}(h]h ]h"]h$]h&]uh1juhjjubeh}(h]h ] kernelindentah"]h$]h&]uh1jUhjhhhNhNubj)}(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)}(hjh]hgenradix_iter_peek}(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.hhM!ubah}(h]h ]h"]h$]h&]jjjuh1jjjhjhhhj9hM!ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jhj9hM!hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhj9hM!ubeh}(h]h ](jmacroeh"]h$]h&]jjjjRjjRjjjuh1jhhhjhNhNubh)}(h&``genradix_iter_peek (_iter, _radix)``h]j%)}(hjXh]h"genradix_iter_peek (_iter, _radix)}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjVubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM#hjhhubj;)}(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}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjnubah}(h]h ]h"]h$]h&]uh1j:hjhMhjhhubjV)}(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]j`)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjubjv)}(hhh](j{)}(h``_iter`` a genradix_iter h](j)}(h ``_iter``h]j%)}(hjh]h_iter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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&]uh1jzhjhMhjubj{)}(h(``_radix`` genradix being iterated over h](j)}(h ``_radix``h]j%)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jzhjhMhjubeh}(h]h ]h"]h$]h&]uh1juhjubh)}(h**Description**h]j`)}(hj h]h Description}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj 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 }(hj6 hhhNhNubj`)}(h **_iter**h]h_iter}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj6 ubh#’s current position, returns NULL}(hj6 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&]uh1jUhjhhhNhNubj)}(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)}(hjq h]hgenradix_iter_peek_prev}(hj{ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjs hhhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM1ubah}(h]h ]h"]h$]h&]jjjuh1jjjhjo hhhj hM1ubah}(h]jj ah ](jjeh"]h$]h&]jj)jhuh1jhj hM1hjl hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjl hhhj hM1ubeh}(h]h ](jmacroeh"]h$]h&]jjjj jj jjjuh1jhhhjhNhNubh)}(h+``genradix_iter_peek_prev (_iter, _radix)``h]j%)}(hj h]h'genradix_iter_peek_prev (_iter, _radix)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhM3hjhhubj;)}(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&]uh1j:hj hM*hjhhubjV)}(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]j`)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj 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 ubjv)}(hhh](j{)}(h``_iter`` a genradix_iter h](j)}(h ``_iter``h]j%)}(hj h]h_iter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj 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&]uh1jzhj hM,hj ubj{)}(h(``_radix`` genradix being iterated over h](j)}(h ``_radix``h]j%)}(hj: h]h_radix}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj8 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-hj4 ubj)}(hhh]h)}(hgenradix being iterated overh]hgenradix being iterated over}(hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjO hM-hjP ubah}(h]h ]h"]h$]h&]uh1jhj4 ubeh}(h]h ]h"]h$]h&]uh1jzhjO hM-hj ubeh}(h]h ]h"]h$]h&]uh1juhj ubh)}(h**Description**h]j`)}(hju h]h Description}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjs 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 hhhNhNubj`)}(h **_iter**h]h_iter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj 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&]uh1jUhjhhhNhNubj)}(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.hhMnubah}(h]h ]h"]h$]h&]jjjuh1jjjhj hhhj hMnubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj hMnhj hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj hhhj hMnubeh}(h]h ](jmacroeh"]h$]h&]jjjj jj jjjuh1jhhhjhNhNubh)}(h)``genradix_for_each (_radix, _iter, _p)``h]j%)}(hj h]h%genradix_for_each (_radix, _iter, _p)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMphjhhubj;)}(h!iterate over entry in a genradix h]h)}(h iterate over entry in a genradixh]h iterate over entry in a genradix}(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.hhMfhj ubah}(h]h ]h"]h$]h&]uh1j:hj* hMfhjhhubjV)}(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]j`)}(hj7 h]h Parameters}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj5 ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMjhj1 ubjv)}(hhh](j{)}(h$``_radix`` genradix to iterate over h](j)}(h ``_radix``h]j%)}(hjV h]h_radix}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjT ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMghjP ubj)}(hhh]h)}(hgenradix to iterate overh]hgenradix to iterate over}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjk hMghjl ubah}(h]h ]h"]h$]h&]uh1jhjP ubeh}(h]h ]h"]h$]h&]uh1jzhjk hMghjM ubj{)}(h4``_iter`` a genradix_iter to track current position h](j)}(h ``_iter``h]j%)}(hj h]h_iter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj 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&]uh1jzhj hMhhjM ubj{)}(h&``_p`` pointer to genradix entry type h](j)}(h``_p``h]j%)}(hj h]h_p}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj 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&]uh1jzhj hMihjM ubeh}(h]h ]h"]h$]h&]uh1juhj1 ubh)}(h**Description**h]j`)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMkhj1 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 hhhNhNubj`)}(h**_p**h]h_p}(hj! hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj ubh& will point to the current entry, and }(hj hhhNhNubj`)}(h **_iter.pos**h]h _iter.pos}(hj3 hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj 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.hhMkhj1 ubeh}(h]h ] kernelindentah"]h$]h&]uh1jUhjhhhNhNubj)}(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)}(hjf h]hgenradix_for_each_reverse}(hjp hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjh 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&]jjjuh1jjjhjd hhhj hM}ubah}(h]j_ ah ](jjeh"]h$]h&]jj)jhuh1jhj hM}hja hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhja hhhj hM}ubeh}(h]h ](jmacroeh"]h$]h&]jjjj jj jjjuh1jhhhjhNhNubh)}(h1``genradix_for_each_reverse (_radix, _iter, _p)``h]j%)}(hj h]h-genradix_for_each_reverse (_radix, _iter, _p)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjhhubj;)}(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&]uh1j:hj hMuhjhhubjV)}(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]j`)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj 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 ubjv)}(hhh](j{)}(h$``_radix`` genradix to iterate over h](j)}(h ``_radix``h]j%)}(hj h]h_radix}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj 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&]uh1jzhj hMvhj ubj{)}(h4``_iter`` a genradix_iter to track current position h](j)}(h ``_iter``h]j%)}(hj/ h]h_iter}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj- 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}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjD hMwhjE ubah}(h]h ]h"]h$]h&]uh1jhj) ubeh}(h]h ]h"]h$]h&]uh1jzhjD hMwhj ubj{)}(h&``_p`` pointer to genradix entry type h](j)}(h``_p``h]j%)}(hjh h]h_p}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjf ubah}(h]h ]h"]h$]h&]uh1jhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMxhjb 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&]uh1jhjb ubeh}(h]h ]h"]h$]h&]uh1jzhj} hMxhj ubeh}(h]h ]h"]h$]h&]uh1juhj ubh)}(h**Description**h]j`)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj 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 hhhNhNubj`)}(h**_p**h]h_p}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj ubh& will point to the current entry, and }(hj hhhNhNubj`)}(h **_iter.pos**h]h _iter.pos}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j_hj 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.hhMzhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jUhjhhhNhNubj)}(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}(hjhhhNhNubah}(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&]jjjuh1jjjhjhhhj#hMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jhj#hMhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhj#hMubeh}(h]h ](jmacroeh"]h$]h&]jjjj<jj<jjjuh1jhhhjhNhNubh)}(h)``genradix_prealloc (_radix, _nr, _gfp)``h]j%)}(hjBh]h%genradix_prealloc (_radix, _nr, _gfp)}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj@ubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjhhubj;)}(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}(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.hhMhjXubah}(h]h ]h"]h$]h&]uh1j:hjjhMhjhhubjV)}(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]j`)}(hjwh]h Parameters}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjuubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjqubjv)}(hhh](j{)}(h#``_radix`` genradix to preallocate h](j)}(h ``_radix``h]j%)}(hjh]h_radix}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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&]uh1jzhjhMhjubj{)}(h)``_nr`` number of entries to preallocate h](j)}(h``_nr``h]j%)}(hjh]h_nr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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&]uh1jzhjhMhjubj{)}(h``_gfp`` gfp mask h](j)}(h``_gfp``h]j%)}(hjh]h_gfp}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(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}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jzhjhMhjubeh}(h]h ]h"]h$]h&]uh1juhjqubh)}(h**Description**h]j`)}(hjCh]h Description}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j_hjAubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjqubh)}(h(Returns 0 on success, -ENOMEM on failureh]h(Returns 0 on success, -ENOMEM on failure}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhn/var/lib/git/docbuild/linux/Documentation/core-api/generic-radix-tree:11: ./include/linux/generic-radix-tree.hhMhjqubeh}(h]h ] kernelindentah"]h$]h&]uh1jUhjhhhNhNubeh}(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}(j|jyjtjqu nametypes}(j|jtuh}(jyhjqjjjjjjjjjjojjjjjj jo j j j_ jd j ju 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.