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/maple_treemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/core-api/maple_treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/core-api/maple_treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/core-api/maple_treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/core-api/maple_treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/sp_SP/core-api/maple_treemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h!SPDX-License-Identifier: GPL-2.0+h]h!SPDX-License-Identifier: GPL-2.0+}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhA/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree.rsthKubhsection)}(hhh](htitle)}(h Maple Treeh]h Maple Tree}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hAuthorh]hAuthor}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(hLiam R. Howlett h]h paragraph)}(hLiam R. Howletth]hLiam R. Howlett}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hOverviewh]hOverview}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhK ubh)}(hXCThe Maple Tree is a B-Tree data type which is optimized for storing non-overlapping ranges, including ranges of size 1. The tree was designed to be simple to use and does not require a user written search method. It supports iterating over a range of entries and going to the previous or next entry in a cache-efficient manner. The tree can also be put into an RCU-safe mode of operation which allows reading and writing concurrently. Writers must synchronize on a lock, which can be the default spinlock, or the user can set the lock to an external lock of a different type.h]hXCThe Maple Tree is a B-Tree data type which is optimized for storing non-overlapping ranges, including ranges of size 1. The tree was designed to be simple to use and does not require a user written search method. It supports iterating over a range of entries and going to the previous or next entry in a cache-efficient manner. The tree can also be put into an RCU-safe mode of operation which allows reading and writing concurrently. Writers must synchronize on a lock, which can be the default spinlock, or the user can set the lock to an external lock of a different type.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj hhubh)}(hXKThe Maple Tree maintains a small memory footprint and was designed to use modern processor cache efficiently. The majority of the users will be able to use the normal API. An :ref:`maple-tree-advanced-api` exists for more complex scenarios. The most important usage of the Maple Tree is the tracking of the virtual memory areas.h](hThe Maple Tree maintains a small memory footprint and was designed to use modern processor cache efficiently. The majority of the users will be able to use the normal API. An }(hj*hhhNhNubh)}(h:ref:`maple-tree-advanced-api`h]hinline)}(hj4h]hmaple-tree-advanced-api}(hj8hhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1j6hj2ubah}(h]h ]h"]h$]h&]refdoccore-api/maple_tree refdomainjCreftyperef refexplicitrefwarn reftargetmaple-tree-advanced-apiuh1hhhhKhj*ubh| exists for more complex scenarios. The most important usage of the Maple Tree is the tracking of the virtual memory areas.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hXThe Maple Tree can store values between ``0`` and ``ULONG_MAX``. The Maple Tree reserves values with the bottom two bits set to '10' which are below 4096 (ie 2, 6, 10 .. 4094) for internal use. If the entries may use reserved entries then the users can convert the entries using xa_mk_value() and convert them back by calling xa_to_value(). If the user needs to use a reserved value, then the user can convert the value when using the :ref:`maple-tree-advanced-api`, but are blocked by the normal API.h](h(The Maple Tree can store values between }(hjahhhNhNubhliteral)}(h``0``h]h0}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjaubh and }(hjahhhNhNubjj)}(h ``ULONG_MAX``h]h ULONG_MAX}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjaubhX{. The Maple Tree reserves values with the bottom two bits set to ‘10’ which are below 4096 (ie 2, 6, 10 .. 4094) for internal use. If the entries may use reserved entries then the users can convert the entries using xa_mk_value() and convert them back by calling xa_to_value(). If the user needs to use a reserved value, then the user can convert the value when using the }(hjahhhNhNubh)}(h:ref:`maple-tree-advanced-api`h]j7)}(hjh]hmaple-tree-advanced-api}(hjhhhNhNubah}(h]h ](jBstdstd-refeh"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&]refdocjO refdomainjreftyperef refexplicitrefwarnjUmaple-tree-advanced-apiuh1hhhhKhjaubh$, but are blocked by the normal API.}(hjahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(haThe Maple Tree can also be configured to support searching for a gap of a given size (or larger).h]haThe Maple Tree can also be configured to support searching for a gap of a given size (or larger).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hj hhubh)}(hXPre-allocating of nodes is also supported using the :ref:`maple-tree-advanced-api`. This is useful for users who must guarantee a successful store operation within a given code segment when allocating cannot be done. Allocations of nodes are relatively small at around 256 bytes.h](h4Pre-allocating of nodes is also supported using the }(hjhhhNhNubh)}(h:ref:`maple-tree-advanced-api`h]j7)}(hjh]hmaple-tree-advanced-api}(hjhhhNhNubah}(h]h ](jBstdstd-refeh"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&]refdocjO refdomainjreftyperef refexplicitrefwarnjUmaple-tree-advanced-apiuh1hhhhK'hjubh. This is useful for users who must guarantee a successful store operation within a given code segment when allocating cannot be done. Allocations of nodes are relatively small at around 256 bytes.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK'hj hhubhtarget)}(h.. _maple-tree-normal-api:h]h}(h]h ]h"]h$]h&]refidmaple-tree-normal-apiuh1jhK-hj hhhhubeh}(h]overviewah ]h"]overviewah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h Normal APIh]h Normal API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK0ubh)}(hXStart by initialising a maple tree, either with DEFINE_MTREE() for statically allocated maple trees or mt_init() for dynamically allocated ones. A freshly-initialised maple tree contains a ``NULL`` pointer for the range ``0`` - ``ULONG_MAX``. There are currently two types of maple trees supported: the allocation tree and the regular tree. The regular tree has a higher branching factor for internal nodes. The allocation tree has a lower branching factor but allows the user to search for a gap of a given size or larger from either ``0`` upwards or ``ULONG_MAX`` down. An allocation tree can be used by passing in the ``MT_FLAGS_ALLOC_RANGE`` flag when initialising the tree.h](hStart by initialising a maple tree, either with DEFINE_MTREE() for statically allocated maple trees or mt_init() for dynamically allocated ones. A freshly-initialised maple tree contains a }(hj hhhNhNubjj)}(h``NULL``h]hNULL}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubh pointer for the range }(hj hhhNhNubjj)}(h``0``h]h0}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubh - }(hj hhhNhNubjj)}(h ``ULONG_MAX``h]h ULONG_MAX}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubhX). There are currently two types of maple trees supported: the allocation tree and the regular tree. The regular tree has a higher branching factor for internal nodes. The allocation tree has a lower branching factor but allows the user to search for a gap of a given size or larger from either }(hj hhhNhNubjj)}(h``0``h]h0}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubh upwards or }(hj hhhNhNubjj)}(h ``ULONG_MAX``h]h ULONG_MAX}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubh9 down. An allocation tree can be used by passing in the }(hj hhhNhNubjj)}(h``MT_FLAGS_ALLOC_RANGE``h]hMT_FLAGS_ALLOC_RANGE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubh! flag when initialising the tree.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK2hjhhubh)}(hXYou can then set entries using mtree_store() or mtree_store_range(). mtree_store() will overwrite any entry with the new entry and return 0 on success or an error code otherwise. mtree_store_range() works in the same way but takes a range. mtree_load() is used to retrieve the entry stored at a given index. You can use mtree_erase() to erase an entire range by only knowing one value within that range, or mtree_store() call with an entry of NULL may be used to partially erase a range or many ranges at once.h]hXYou can then set entries using mtree_store() or mtree_store_range(). mtree_store() will overwrite any entry with the new entry and return 0 on success or an error code otherwise. mtree_store_range() works in the same way but takes a range. mtree_load() is used to retrieve the entry stored at a given index. You can use mtree_erase() to erase an entire range by only knowing one value within that range, or mtree_store() call with an entry of NULL may be used to partially erase a range or many ranges at once.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKindex and mas->last, respectively.h]haThe maple state keeps track of the range start and end in mas->index and mas->last, respectively.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hmas_walk() will walk the tree to the location of mas->index and set the mas->index and mas->last according to the range for the entry.h]hmas_walk() will walk the tree to the location of mas->index and set the mas->index and mas->last according to the range for the entry.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hYou can set entries using mas_store(). mas_store() will overwrite any entry with the new entry and return the first existing entry that is overwritten. The range is passed in as members of the maple state: index and last.h]hYou can set entries using mas_store(). mas_store() will overwrite any entry with the new entry and return the first existing entry that is overwritten. The range is passed in as members of the maple state: index and last.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX.You can use mas_erase() to erase an entire range by setting index and last of the maple state to the desired range to erase. This will erase the first range that is found in that range, set the maple state index and last as the range that was erased and return the entry that existed at that location.h]hX.You can use mas_erase() to erase an entire range by setting index and last of the maple state to the desired range to erase. This will erase the first range that is found in that range, set the maple state index and last as the range that was erased and return the entry that existed at that location.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hYou can walk each entry within a range by using mas_for_each(). If you want to walk each element of the tree then ``0`` and ``ULONG_MAX`` may be used as the range. If the lock needs to be periodically dropped, see the locking section mas_pause().h](hsYou can walk each entry within a range by using mas_for_each(). If you want to walk each element of the tree then }(hjhhhNhNubjj)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubh and }(hjhhhNhNubjj)}(h ``ULONG_MAX``h]h ULONG_MAX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubhn may be used as the range. If the lock needs to be periodically dropped, see the locking section mas_pause().}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXmUsing a maple state allows mas_next() and mas_prev() to function as if the tree was a linked list. With such a high branching factor the amortized performance penalty is outweighed by cache optimization. mas_next() will return the next entry which occurs after the entry at index. mas_prev() will return the previous entry which occurs before the entry at index.h]hXmUsing a maple state allows mas_next() and mas_prev() to function as if the tree was a linked list. With such a high branching factor the amortized performance penalty is outweighed by cache optimization. mas_next() will return the next entry which occurs after the entry at index. mas_prev() will return the previous entry which occurs before the entry at index.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hmas_find() will find the first entry which exists at or above index on the first call, and the next entry from every subsequent calls.h]hmas_find() will find the first entry which exists at or above index on the first call, and the next entry from every subsequent calls.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hmas_find_rev() will find the first entry which exists at or below the last on the first call, and the previous entry from every subsequent calls.h]hmas_find_rev() will find the first entry which exists at or below the last on the first call, and the previous entry from every subsequent calls.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hoIf the user needs to yield the lock during an operation, then the maple state must be paused using mas_pause().h]hoIf the user needs to yield the lock during an operation, then the maple state must be paused using mas_pause().}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXThere are a few extra interfaces provided when using an allocation tree. If you wish to search for a gap within a range, then mas_empty_area() or mas_empty_area_rev() can be used. mas_empty_area() searches for a gap starting at the lowest index given up to the maximum of the range. mas_empty_area_rev() searches for a gap starting at the highest index given and continues downward to the lower bound of the range.h]hXThere are a few extra interfaces provided when using an allocation tree. If you wish to search for a gap within a range, then mas_empty_area() or mas_empty_area_rev() can be used. mas_empty_area() searches for a gap starting at the lowest index given up to the maximum of the range. mas_empty_area_rev() searches for a gap starting at the highest index given and continues downward to the lower bound of the range.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h.. _maple-tree-advanced-alloc:h]h}(h]h ]h"]h$]h&]jmaple-tree-advanced-allocuh1jhKhjhhhhubh)}(hhh](h)}(hAdvanced Allocating Nodesh]hAdvanced Allocating Nodes}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hhhhhKubh)}(hXAllocations are usually handled internally to the tree, however if allocations need to occur before a write occurs then calling mas_expected_entries() will allocate the worst-case number of needed nodes to insert the provided number of ranges. This also causes the tree to enter mass insertion mode. Once insertions are complete calling mas_destroy() on the maple state will free the unused allocations.h]hXAllocations are usually handled internally to the tree, however if allocations need to occur before a write occurs then calling mas_expected_entries() will allocate the worst-case number of needed nodes to insert the provided number of ranges. This also causes the tree to enter mass insertion mode. Once insertions are complete calling mas_destroy() on the maple state will free the unused allocations.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubj)}(h.. _maple-tree-advanced-locks:h]h}(h]h ]h"]h$]h&]jmaple-tree-advanced-locksuh1jhKhj1hhhhubeh}(h](advanced-allocating-nodesj0eh ]h"](advanced allocating nodesmaple-tree-advanced-alloceh$]h&]uh1hhjhhhhhKj}jaj&sj}j0j&subh)}(hhh](h)}(hAdvanced Lockingh]hAdvanced Locking}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhhhhhKubh)}(hX'The maple tree uses a spinlock by default, but external locks can be used for tree updates as well. To use an external lock, the tree must be initialized with the ``MT_FLAGS_LOCK_EXTERN flag``, this is usually done with the MTREE_INIT_EXT() #define, which takes an external lock as an argument.h](hThe maple tree uses a spinlock by default, but external locks can be used for tree updates as well. To use an external lock, the tree must be initialized with the }(hjwhhhNhNubjj)}(h``MT_FLAGS_LOCK_EXTERN flag``h]hMT_FLAGS_LOCK_EXTERN flag}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjwubhf, this is usually done with the MTREE_INIT_EXT() #define, which takes an external lock as an argument.}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjfhhubeh}(h](advanced-lockingjZeh ]h"](advanced lockingmaple-tree-advanced-lockseh$]h&]uh1hhjhhhhhKj}jjPsj}jZjPsubeh}(h]( advanced-apijeh ]h"]( advanced apimaple-tree-advanced-apieh$]h&]uh1hhhhhhhhKj}jjsj}jjsubh)}(hhh](h)}(hFunctions and structuresh]hFunctions and structures}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj)}(h.. _Maple tree flags:h]h}(h]h ]h"]h$]h&]jmaple-tree-flagsuh1jhKhjhhhNubh)}(h**Maple tree flags**h]hstrong)}(hjh]hMaple tree flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]jah ]h"]maple tree flagsah$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjhhj}jjsj}jjsubj7)}(hhh](j<)}(h4MT_FLAGS_ALLOC_RANGE - Track gaps in this treeh]h)}(hjh]h4MT_FLAGS_ALLOC_RANGE - Track gaps in this tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h0MT_FLAGS_USE_RCU - Operate in RCU modeh]h)}(hjh]h0MT_FLAGS_USE_RCU - Operate in RCU mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(hIMT_FLAGS_HEIGHT_OFFSET - The position of the tree height in the flagsh]h)}(hjh]hIMT_FLAGS_HEIGHT_OFFSET - The position of the tree height in the flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(hEMT_FLAGS_HEIGHT_MASK - The mask for the maple tree height valueh]h)}(hj3h]hEMT_FLAGS_HEIGHT_MASK - The mask for the maple tree height value}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj1ubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h4MT_FLAGS_LOCK_MASK - How the mt_lock is usedh]h)}(hjKh]h4MT_FLAGS_LOCK_MASK - How the mt_lock is used}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjIubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h.MT_FLAGS_LOCK_IRQ - Acquired irq-safeh]h)}(hjch]h.MT_FLAGS_LOCK_IRQ - Acquired irq-safe}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjaubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h-MT_FLAGS_LOCK_BH - Acquired bh-safeh]h)}(hj{h]h-MT_FLAGS_LOCK_BH - Acquired bh-safe}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjyubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h1MT_FLAGS_LOCK_EXTERN - mt_lock is not used h]h)}(h0MT_FLAGS_LOCK_EXTERN - mt_lock is not usedh]h0MT_FLAGS_LOCK_EXTERN - mt_lock is not used}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1j;hjubeh}(h]h ]h"]h$]h&]jjuh1j6hjhKhjhhubh)}(h:MAPLE_HEIGHT_MAX The largest height that can be storedh]h:MAPLE_HEIGHT_MAX The largest height that can be stored}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleMTREE_INIT (C macro) c.MTREE_INIThNtauh1jhjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h MTREE_INITh]hdesc_signature_line)}(h MTREE_INITh]h desc_name)}(h MTREE_INITh]h desc_sig_name)}(hjh]h MTREE_INIT}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKubah}(h]h ]h"]h$]h&]hh 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&]uh1j hjhhhjhKubeh}(h]h ](cmacroeh"]h$]h&]domainj" objtypej# desctypej# noindex noindexentrynocontentsentryuh1jhhhjhNhNubh)}(h``MTREE_INIT (name, __flags)``h]jj)}(hj/ h]hMTREE_INIT (name, __flags)}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj- ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjhhubh block_quote)}(hInitialize a maple tree h]h)}(hInitialize a maple treeh]hInitialize a maple tree}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjG ubah}(h]h ]h"]h$]h&]uh1jE hjY hKhjhhubh container)}(hR**Parameters** ``name`` The maple tree name ``__flags`` The maple tree flagsh](h)}(h**Parameters**h]j)}(hjh h]h Parameters}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjb ubj)}(hhh](j)}(h``name`` The maple tree name h](j")}(h``name``h]jj)}(hj h]hname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubj2)}(hhh]h)}(hThe maple tree nameh]hThe maple tree name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj~ ubj)}(h ``__flags`` The maple tree flagsh](j")}(h ``__flags``h]jj)}(hj h]h__flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubj2)}(hhh]h)}(hThe maple tree flagsh]hThe maple tree flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubah}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj~ ubeh}(h]h ]h"]h$]h&]uh1jhjb ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jMTREE_INIT_EXT (C macro)c.MTREE_INIT_EXThNtauh1jhjhhhNhNubj)}(hhh](j)}(hMTREE_INIT_EXTh]j)}(hMTREE_INIT_EXTh]j)}(hMTREE_INIT_EXTh]j)}(hj h]hMTREE_INIT_EXT}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMubah}(h]h ]h"]h$]h&]hhj uh1jj j hj hhhj1 hMubah}(h]j ah ](j j eh"]h$]h&]j j )j huh1jhj1 hMhj hhubj )}(hhh]h}(h]h ]h"]h$]h&]uh1j hj hhhj1 hMubeh}(h]h ](j" macroeh"]h$]h&]j' j" j( jJ j) jJ j* j+ j, uh1jhhhjhNhNubh)}(h*``MTREE_INIT_EXT (name, __flags, __lock)``h]jj)}(hjP h]h&MTREE_INIT_EXT (name, __flags, __lock)}(hjR hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjN ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubjF )}(h/Initialize a maple tree with an external lock. h]h)}(h.Initialize a maple tree with an external lock.h]h.Initialize a maple tree with an external lock.}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjf ubah}(h]h ]h"]h$]h&]uh1jE hjx hKhjhhubja )}(hl**Parameters** ``name`` The tree name ``__flags`` The maple tree flags ``__lock`` The external lockh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj ubj)}(hhh](j)}(h``name`` The tree name h](j")}(h``name``h]jj)}(hj h]hname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubj2)}(hhh]h)}(h The tree nameh]h The tree name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(h!``__flags`` The maple tree flags h](j")}(h ``__flags``h]jj)}(hj h]h__flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubj2)}(hhh]h)}(hThe maple tree flagsh]hThe maple tree flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(h``__lock`` The external lockh](j")}(h ``__lock``h]jj)}(hj h]h__lock}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj ubj2)}(hhh]h)}(hThe external lockh]hThe external lock}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj, ubah}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ]h"]h$]h&]uh1jhj+ hMhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_empty (C function) c.mtree_emptyhNtauh1jhjhhhNhNubj)}(hhh](j)}(h.bool mtree_empty (const struct maple_tree *mt)h]j)}(h-bool mtree_empty(const struct maple_tree *mt)h](hdesc_sig_keyword_type)}(hboolh]hbool}(hjr hhhNhNubah}(h]h ]ktah"]h$]h&]uh1jp hjl hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMiubhdesc_sig_space)}(h h]h }(hj hhhNhNubah}(h]h ]wah"]h$]h&]uh1j hjl hhhj hMiubj)}(h mtree_emptyh]j)}(h mtree_emptyh]h mtree_empty}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjl hhhj hMiubhdesc_parameterlist)}(h(const struct maple_tree *mt)h]hdesc_parameter)}(hconst struct maple_tree *mth](hdesc_sig_keyword)}(hconsth]hconst}(hj hhhNhNubah}(h]h ]kah"]h$]h&]uh1j hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(hstructh]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj" reftype identifier reftargetj modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}j j sb c.mtree_emptyasbuh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubhdesc_sig_punctuation)}(hjh]h*}(hj- hhhNhNubah}(h]h ]pah"]h$]h&]uh1j+ hj ubj)}(hmth]hmt}(hj; hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubah}(h]h ]h"]h$]h&]hhuh1j hjl hhhj hMiubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjh hhhj hMiubah}(h]jc ah ](j j eh"]h$]h&]j j )j huh1jhj hMihje hhubj )}(hhh]h)}(h,Determine if a tree has any present entries.h]h,Determine if a tree has any present entries.}(hje hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMchjb hhubah}(h]h ]h"]h$]h&]uh1j hje hhhj hMiubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j} j) j} j* j+ j, uh1jhhhjhNhNubja )}(h**Parameters** ``const struct maple_tree *mt`` Maple Tree. **Context** Any context. **Return** ``true`` if the tree contains only NULL pointers.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMghj ubj)}(hhh]j)}(h,``const struct maple_tree *mt`` Maple Tree. h](j")}(h``const struct maple_tree *mt``h]jj)}(hj h]hconst struct maple_tree *mt}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMdhj ubj2)}(hhh]h)}(h Maple Tree.h]h Maple Tree.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMdhj ubah}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMdhj ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h **Context**h]j)}(hj h]hContext}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMfhj ubh)}(h Any context.h]h Any context.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMfhj ubh)}(h **Return**h]j)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhhj ubh)}(h1``true`` if the tree contains only NULL pointers.h](jj)}(h``true``h]htrue}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubh) if the tree contains only NULL pointers.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMghj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_reset (C function) c.mas_resethNtauh1jhjhhhNhNubj)}(hhh](j)}(h%void mas_reset (struct ma_state *mas)h]j)}(h$void mas_reset(struct ma_state *mas)h](jq )}(hvoidh]hvoid}(hj[ hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjW hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM?ubj )}(h h]h }(hjj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjW hhhji hM?ubj)}(h mas_reseth]j)}(h mas_reseth]h mas_reset}(hj| hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjx ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjW hhhji hM?ubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubh)}(hhh]j)}(hma_stateh]hma_state}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj modnameN classnameNj j )}j ]j )}j j~ sb c.mas_resetasbuh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj, )}(hjh]h*}(hj hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj ubj)}(hmash]hmas}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubah}(h]h ]h"]h$]h&]hhuh1j hjW hhhji hM?ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjS hhhji hM?ubah}(h]jN ah ](j j eh"]h$]h&]j j )j huh1jhji hM?hjP hhubj )}(hhh]h)}(h#Reset a Maple Tree operation state.h]h#Reset a Maple Tree operation state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM6hjhhubah}(h]h ]h"]h$]h&]uh1j hjP hhhji hM?ubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j3j) j3j* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct ma_state *mas`` Maple Tree operation state. **Description** Resets the error or walk state of the **mas** so future walks of the array will start from the root. Use this if you have dropped the lock and want to reuse the ma_state. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj=h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM:hj7ubj)}(hhh]j)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j")}(h``struct ma_state *mas``h]jj)}(hj\h]hstruct ma_state *mas}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjZubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM7hjVubj2)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhM7hjrubah}(h]h ]h"]h$]h&]uh1j1hjVubeh}(h]h ]h"]h$]h&]uh1jhjqhM7hjSubah}(h]h ]h"]h$]h&]uh1jhj7ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM9hj7ubh)}(hResets the error or walk state of the **mas** so future walks of the array will start from the root. Use this if you have dropped the lock and want to reuse the ma_state.h](h&Resets the error or walk state of the }(hjhhhNhNubj)}(h**mas**h]hmas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh~ so future walks of the array will start from the root. Use this if you have dropped the lock and want to reuse the ma_state.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM9hj7ubh)}(h **Context**h]j)}(hjh]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM=hj7ubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM=hj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_for_each (C macro)c.mas_for_eachhNtauh1jhjhhhNhNubj)}(hhh](j)}(h mas_for_eachh]j)}(h mas_for_eachh]j)}(h mas_for_eachh]j)}(hjh]h mas_for_each}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMPubah}(h]h ]h"]h$]h&]hhj uh1jj j hj hhhj,hMPubah}(h]jah ](j j eh"]h$]h&]j j )j huh1jhj,hMPhj hhubj )}(hhh]h}(h]h ]h"]h$]h&]uh1j hj hhhj,hMPubeh}(h]h ](j" macroeh"]h$]h&]j' j" j( jEj) jEj* j+ j, uh1jhhhjhNhNubh)}(h(``mas_for_each (__mas, __entry, __max)``h]jj)}(hjKh]h$mas_for_each (__mas, __entry, __max)}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjIubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMRhjhhubjF )}(h(Iterate over a range of the maple tree. h]h)}(h'Iterate over a range of the maple tree.h]h'Iterate over a range of the maple tree.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMFhjaubah}(h]h ]h"]h$]h&]uh1jE hjshMFhjhhubja )}(hX0**Parameters** ``__mas`` Maple Tree operation state (maple_state) ``__entry`` Entry retrieved from the tree ``__max`` maximum index to retrieve from the tree **Description** When returned, mas->index and mas->last will hold the entire range for the entry. **Note** may return the zero entry.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMJhjzubj)}(hhh](j)}(h3``__mas`` Maple Tree operation state (maple_state) h](j")}(h ``__mas``h]jj)}(hjh]h__mas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMGhjubj2)}(hhh]h)}(h(Maple Tree operation state (maple_state)h]h(Maple Tree operation state (maple_state)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMGhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMGhjubj)}(h*``__entry`` Entry retrieved from the tree h](j")}(h ``__entry``h]jj)}(hjh]h__entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMHhjubj2)}(hhh]h)}(hEntry retrieved from the treeh]hEntry retrieved from the tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMHhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMHhjubj)}(h2``__max`` maximum index to retrieve from the tree h](j")}(h ``__max``h]jj)}(hjh]h__max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMIhj ubj2)}(hhh]h)}(h'maximum index to retrieve from the treeh]h'maximum index to retrieve from the tree}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMIhj'ubah}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ]h"]h$]h&]uh1jhj&hMIhjubeh}(h]h ]h"]h$]h&]uh1jhjzubh)}(h**Description**h]j)}(hjLh]h Description}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMKhjzubh)}(hQWhen returned, mas->index and mas->last will hold the entire range for the entry.h]hQWhen returned, mas->index and mas->last will hold the entire range for the entry.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMKhjzubh)}(h**Note**h]j)}(hjsh]hNote}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMNhjzubh)}(hmay return the zero entry.h]hmay return the zero entry.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMNhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_for_each_rev (C macro)c.mas_for_each_revhNtauh1jhjhhhNhNubj)}(hhh](j)}(hmas_for_each_revh]j)}(hmas_for_each_revh]j)}(hmas_for_each_revh]j)}(hjh]hmas_for_each_rev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM^ubah}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhM^ubah}(h]jah ](j j eh"]h$]h&]j j )j huh1jhjhM^hjhhubj )}(hhh]h}(h]h ]h"]h$]h&]uh1j hjhhhjhM^ubeh}(h]h ](j" macroeh"]h$]h&]j' j" j( jj) jj* j+ j, uh1jhhhjhNhNubh)}(h,``mas_for_each_rev (__mas, __entry, __min)``h]jj)}(hjh]h(mas_for_each_rev (__mas, __entry, __min)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM`hjhhubjF )}(h9Iterate over a range of the maple tree in reverse order. h]h)}(h8Iterate over a range of the maple tree in reverse order.h]h8Iterate over a range of the maple tree in reverse order.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMThjubah}(h]h ]h"]h$]h&]uh1jE hjhMThjhhubja )}(hX0**Parameters** ``__mas`` Maple Tree operation state (maple_state) ``__entry`` Entry retrieved from the tree ``__min`` minimum index to retrieve from the tree **Description** When returned, mas->index and mas->last will hold the entire range for the entry. **Note** may return the zero entry.h](h)}(h**Parameters**h]j)}(hj#h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMXhjubj)}(hhh](j)}(h3``__mas`` Maple Tree operation state (maple_state) h](j")}(h ``__mas``h]jj)}(hjBh]h__mas}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj@ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMUhj<ubj2)}(hhh]h)}(h(Maple Tree operation state (maple_state)h]h(Maple Tree operation state (maple_state)}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjWhMUhjXubah}(h]h ]h"]h$]h&]uh1j1hj<ubeh}(h]h ]h"]h$]h&]uh1jhjWhMUhj9ubj)}(h*``__entry`` Entry retrieved from the tree h](j")}(h ``__entry``h]jj)}(hj{h]h__entry}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjyubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMVhjuubj2)}(hhh]h)}(hEntry retrieved from the treeh]hEntry retrieved from the tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMVhjubah}(h]h ]h"]h$]h&]uh1j1hjuubeh}(h]h ]h"]h$]h&]uh1jhjhMVhj9ubj)}(h2``__min`` minimum index to retrieve from the tree h](j")}(h ``__min``h]jj)}(hjh]h__min}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMWhjubj2)}(hhh]h)}(h'minimum index to retrieve from the treeh]h'minimum index to retrieve from the tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMWhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMWhj9ubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMYhjubh)}(hQWhen returned, mas->index and mas->last will hold the entire range for the entry.h]hQWhen returned, mas->index and mas->last will hold the entire range for the entry.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMYhjubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM\hjubh)}(hmay return the zero entry.h]hmay return the zero entry.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM\hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j__mas_set_range (C function)c.__mas_set_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(hTvoid __mas_set_range (struct ma_state *mas, unsigned long start, unsigned long last)h]j)}(hSvoid __mas_set_range(struct ma_state *mas, unsigned long start, unsigned long last)h](jq )}(hvoidh]hvoid}(hj[hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjWhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMubj )}(h h]h }(hjjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWhhhjihMubj)}(h__mas_set_rangeh]j)}(h__mas_set_rangeh]h__mas_set_range}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubah}(h]h ](jjeh"]h$]h&]hhuh1jhjWhhhjihMubj )}(h?(struct ma_state *mas, unsigned long start, unsigned long last)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j)}(hma_stateh]hma_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjmodnameN classnameNj j )}j ]j )}j j~sbc.__mas_set_rangeasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj, )}(hjh]h*}(hjhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjubj)}(hmash]hmas}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long starth](jq )}(hunsignedh]hunsigned}(hj hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjq )}(hlongh]hlong}(hj&hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(h h]h }(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hstarth]hstart}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long lasth](jq )}(hunsignedh]hunsigned}(hj[hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjWubj )}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWubjq )}(hlongh]hlong}(hjwhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjWubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWubj)}(hlasth]hlast}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjWhhhjihMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjShhhjihMubah}(h]jNah ](j j eh"]h$]h&]j j )j huh1jhjihMhjPhhubj )}(hhh]h)}(hISet up Maple Tree operation state to a sub-range of the current location.h]hISet up Maple Tree operation state to a sub-range of the current location.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j hjPhhhjihMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jj) jj* j+ j, uh1jhhhjhNhNubja )}(hXT**Parameters** ``struct ma_state *mas`` Maple Tree operation state. ``unsigned long start`` New start of range in the Maple Tree. ``unsigned long last`` New end of range in the Maple Tree. **Description** set the internal maple state values to a sub-range. Please use mas_set_range() if you do not know where you are in the tree.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj)}(hhh](j)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j")}(h``struct ma_state *mas``h]jj)}(hjh]hstruct ma_state *mas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj2)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h>``unsigned long start`` New start of range in the Maple Tree. h](j")}(h``unsigned long start``h]jj)}(hj7h]hunsigned long start}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj5ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj1ubj2)}(hhh]h)}(h%New start of range in the Maple Tree.h]h%New start of range in the Maple Tree.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhMhjMubah}(h]h ]h"]h$]h&]uh1j1hj1ubeh}(h]h ]h"]h$]h&]uh1jhjLhMhjubj)}(h;``unsigned long last`` New end of range in the Maple Tree. h](j")}(h``unsigned long last``h]jj)}(hjph]hunsigned long last}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjnubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjjubj2)}(hhh]h)}(h#New end of range in the Maple Tree.h]h#New end of range in the Maple Tree.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubh)}(h|set the internal maple state values to a sub-range. Please use mas_set_range() if you do not know where you are in the tree.h]h|set the internal maple state values to a sub-range. Please use mas_set_range() if you do not know where you are in the tree.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_set_range (C function)c.mas_set_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(hRvoid mas_set_range (struct ma_state *mas, unsigned long start, unsigned long last)h]j)}(hQvoid mas_set_range(struct ma_state *mas, unsigned long start, unsigned long last)h](jq )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj)}(h mas_set_rangeh]j)}(h mas_set_rangeh]h mas_set_range}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj )}(h?(struct ma_state *mas, unsigned long start, unsigned long last)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj )}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubh)}(hhh]j)}(hma_stateh]hma_state}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjMmodnameN classnameNj j )}j ]j )}j jsbc.mas_set_rangeasbuh1hhj)ubj )}(h h]h }(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj, )}(hjh]h*}(hjyhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj)ubj)}(hmash]hmas}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj%ubj )}(hunsigned long starth](jq )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjq )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hstarth]hstart}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj%ubj )}(hunsigned long lasth](jq )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjq )}(hlongh]hlong}(hj hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hlasth]hlast}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj%ubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhMubah}(h]jah ](j j eh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(h8Set up Maple Tree operation state for a different index.h]h8Set up Maple Tree operation state for a different index.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjOhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jjj) jjj* j+ j, uh1jhhhjhNhNubja )}(hXx**Parameters** ``struct ma_state *mas`` Maple Tree operation state. ``unsigned long start`` New start of range in the Maple Tree. ``unsigned long last`` New end of range in the Maple Tree. **Description** Move the operation state to refer to a different range. This will have the effect of starting a walk from the top; see mas_next() to move to an adjacent index.h](h)}(h**Parameters**h]j)}(hjth]h Parameters}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjnubj)}(hhh](j)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j")}(h``struct ma_state *mas``h]jj)}(hjh]hstruct ma_state *mas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj2)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h>``unsigned long start`` New start of range in the Maple Tree. h](j")}(h``unsigned long start``h]jj)}(hjh]hunsigned long start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj2)}(hhh]h)}(h%New start of range in the Maple Tree.h]h%New start of range in the Maple Tree.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h;``unsigned long last`` New end of range in the Maple Tree. h](j")}(h``unsigned long last``h]jj)}(hjh]hunsigned long last}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj2)}(hhh]h)}(h#New end of range in the Maple Tree.h]h#New end of range in the Maple Tree.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjnubh)}(h**Description**h]j)}(hj@h]h Description}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjnubh)}(hMove the operation state to refer to a different range. This will have the effect of starting a walk from the top; see mas_next() to move to an adjacent index.h]hMove the operation state to refer to a different range. This will have the effect of starting a walk from the top; see mas_next() to move to an adjacent index.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjnubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_set (C function) c.mas_sethNtauh1jhjhhhNhNubj)}(hhh](j)}(h8void mas_set (struct ma_state *mas, unsigned long index)h]j)}(h7void mas_set(struct ma_state *mas, unsigned long index)h](jq )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM ubj)}(hmas_seth]j)}(hmas_seth]hmas_set}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhM ubj )}(h+(struct ma_state *mas, unsigned long index)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j)}(hma_stateh]hma_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjmodnameN classnameNj j )}j ]j )}j jsb c.mas_setasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj, )}(hjh]h*}(hjhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjubj)}(hmash]hmas}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long indexh](jq )}(hunsignedh]hunsigned}(hj4hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj0ubj )}(h h]h }(hjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubjq )}(hlongh]hlong}(hjPhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj0ubj )}(h h]h }(hj^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj)}(hindexh]hindex}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj}hhhjhM ubah}(h]jxah ](j j eh"]h$]h&]j j )j huh1jhjhM hjzhhubj )}(hhh]h)}(h8Set up Maple Tree operation state for a different index.h]h8Set up Maple Tree operation state for a different index.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j hjzhhhjhM ubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jj) jj* j+ j, uh1jhhhjhNhNubja )}(hX3**Parameters** ``struct ma_state *mas`` Maple Tree operation state. ``unsigned long index`` New index into the Maple Tree. **Description** Move the operation state to refer to a different index. This will have the effect of starting a walk from the top; see mas_next() to move to an adjacent index.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj)}(hhh](j)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j")}(h``struct ma_state *mas``h]jj)}(hjh]hstruct ma_state *mas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj2)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h7``unsigned long index`` New index into the Maple Tree. h](j")}(h``unsigned long index``h]jj)}(hjh]hunsigned long index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj ubj2)}(hhh]h)}(hNew index into the Maple Tree.h]hNew index into the Maple Tree.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj&ubah}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ]h"]h$]h&]uh1jhj%hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjKh]h Description}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubh)}(hMove the operation state to refer to a different index. This will have the effect of starting a walk from the top; see mas_next() to move to an adjacent index.h]hMove the operation state to refer to a different index. This will have the effect of starting a walk from the top; see mas_next() to move to an adjacent index.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_init_flags (C function)c.mt_init_flagshNtauh1jhjhhhNhNubj)}(hhh](j)}(h>void mt_init_flags (struct maple_tree *mt, unsigned int flags)h]j)}(h=void mt_init_flags(struct maple_tree *mt, unsigned int flags)h](jq )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM ubj)}(h mt_init_flagsh]j)}(h mt_init_flagsh]h mt_init_flags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhM ubj )}(h+(struct maple_tree *mt, unsigned int flags)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjmodnameN classnameNj j )}j ]j )}j jsbc.mt_init_flagsasbuh1hhjubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj, )}(hjh]h*}(hjhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjubj)}(hmth]hmt}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned int flagsh](jq )}(hunsignedh]hunsigned}(hj?hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj;ubj )}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubjq )}(hinth]hint}(hj[hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj;ubj )}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubj)}(hflagsh]hflags}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhM ubah}(h]jah ](j j eh"]h$]h&]j j )j huh1jhjhM hjhhubj )}(hhh]h)}(h*Initialise an empty maple tree with flags.h]h*Initialise an empty maple tree with flags.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhM ubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jj) jj* j+ j, uh1jhhhjhNhNubja )}(h**Parameters** ``struct maple_tree *mt`` Maple Tree ``unsigned int flags`` maple tree flags. **Description** If you need to initialise a Maple Tree with special flags (eg, an allocation tree), use this function. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj)}(hhh](j)}(h%``struct maple_tree *mt`` Maple Tree h](j")}(h``struct maple_tree *mt``h]jj)}(hjh]hstruct maple_tree *mt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj2)}(hhh]h)}(h Maple Treeh]h Maple Tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h)``unsigned int flags`` maple tree flags. h](j")}(h``unsigned int flags``h]jj)}(hjh]hunsigned int flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj2)}(hhh]h)}(hmaple tree flags.h]hmaple tree flags.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hMhj1ubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhj0hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjVh]h Description}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubh)}(hfIf you need to initialise a Maple Tree with special flags (eg, an allocation tree), use this function.h]hfIf you need to initialise a Maple Tree with special flags (eg, an allocation tree), use this function.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubh)}(h **Context**h]j)}(hj}h]hContext}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_init (C function) c.mt_inithNtauh1jhjhhhNhNubj)}(hhh](j)}(h$void mt_init (struct maple_tree *mt)h]j)}(h#void mt_init(struct maple_tree *mt)h](jq )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM0ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM0ubj)}(hmt_inith]j)}(hmt_inith]hmt_init}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhM0ubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjmodnameN classnameNj j )}j ]j )}j jsb c.mt_initasbuh1hhjubj )}(h h]h }(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj, )}(hjh]h*}(hjKhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjubj)}(hmth]hmt}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhM0ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhM0ubah}(h]jah ](j j eh"]h$]h&]j j )j huh1jhjhM0hjhhubj )}(hhh]h)}(hInitialise an empty maple tree.h]hInitialise an empty maple tree.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM)hjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhM0ubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jj) jj* j+ j, uh1jhhhjhNhNubja )}(hx**Parameters** ``struct maple_tree *mt`` Maple Tree **Description** An empty Maple Tree. **Context** Any context.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM-hjubj)}(hhh]j)}(h%``struct maple_tree *mt`` Maple Tree h](j")}(h``struct maple_tree *mt``h]jj)}(hjh]hstruct maple_tree *mt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM*hjubj2)}(hhh]h)}(h Maple Treeh]h Maple Tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM*hjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhM*hjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM,hjubh)}(hAn empty Maple Tree.h]hAn empty Maple Tree.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM,hjubh)}(h **Context**h]j)}(hj%h]hContext}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM.hjubh)}(h Any context.h]h Any context.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM.hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_clear_in_rcu (C function)c.mt_clear_in_rcuhNtauh1jhjhhhNhNubj)}(hhh](j)}(h,void mt_clear_in_rcu (struct maple_tree *mt)h]j)}(h+void mt_clear_in_rcu(struct maple_tree *mt)h](jq )}(hvoidh]hvoid}(hjjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjfhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMAubj )}(h h]h }(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfhhhjxhMAubj)}(hmt_clear_in_rcuh]j)}(hmt_clear_in_rcuh]hmt_clear_in_rcu}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjfhhhjxhMAubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjmodnameN classnameNj j )}j ]j )}j jsbc.mt_clear_in_rcuasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj, )}(hjh]h*}(hjhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjubj)}(hmth]hmt}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hjfhhhjxhMAubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjbhhhjxhMAubah}(h]j]ah ](j j eh"]h$]h&]j j )j huh1jhjxhMAhj_hhubj )}(hhh]h)}(h Switch the tree to non-RCU mode.h]h Switch the tree to non-RCU mode.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM>hj'hhubah}(h]h ]h"]h$]h&]uh1j hj_hhhjxhMAubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jBj) jBj* j+ j, uh1jhhhjhNhNubja )}(h:**Parameters** ``struct maple_tree *mt`` The Maple Treeh](h)}(h**Parameters**h]j)}(hjLh]h Parameters}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMBhjFubj)}(hhh]j)}(h(``struct maple_tree *mt`` The Maple Treeh](j")}(h``struct maple_tree *mt``h]jj)}(hjkh]hstruct maple_tree *mt}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjiubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMDhjeubj2)}(hhh]h)}(hThe Maple Treeh]hThe Maple Tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM?hjubah}(h]h ]h"]h$]h&]uh1j1hjeubeh}(h]h ]h"]h$]h&]uh1jhjhMDhjbubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_set_in_rcu (C function)c.mt_set_in_rcuhNtauh1jhjhhhNhNubj)}(hhh](j)}(h*void mt_set_in_rcu (struct maple_tree *mt)h]j)}(h)void mt_set_in_rcu(struct maple_tree *mt)h](jq )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMTubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMTubj)}(h mt_set_in_rcuh]j)}(h mt_set_in_rcuh]h mt_set_in_rcu}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMTubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj"modnameN classnameNj j )}j ]j )}j jsbc.mt_set_in_rcuasbuh1hhjubj )}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj, )}(hjh]h*}(hjNhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjubj)}(hmth]hmt}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMTubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhMTubah}(h]jah ](j j eh"]h$]h&]j j )j huh1jhjhMThjhhubj )}(hhh]h)}(h!Switch the tree to RCU safe mode.h]h!Switch the tree to RCU safe mode.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMQhjhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMTubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jj) jj* j+ j, uh1jhhhjhNhNubja )}(h:**Parameters** ``struct maple_tree *mt`` The Maple Treeh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMUhjubj)}(hhh]j)}(h(``struct maple_tree *mt`` The Maple Treeh](j")}(h``struct maple_tree *mt``h]jj)}(hjh]hstruct maple_tree *mt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMWhjubj2)}(hhh]h)}(hThe Maple Treeh]hThe Maple Tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMRhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMWhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_for_each (C macro) c.mt_for_eachhNtauh1jhjhhhNhNubj)}(hhh](j)}(h mt_for_eachh]j)}(h mt_for_eachh]j)}(h mt_for_eachh]j)}(hj h]h mt_for_each}(hj$ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMxubah}(h]h ]h"]h$]h&]hhj uh1jj j hj hhhj7 hMxubah}(h]j ah ](j j eh"]h$]h&]j j )j huh1jhj7 hMxhj hhubj )}(hhh]h}(h]h ]h"]h$]h&]uh1j hj hhhj7 hMxubeh}(h]h ](j" macroeh"]h$]h&]j' j" j( jP j) jP j* j+ j, uh1jhhhjhNhNubh)}(h1``mt_for_each (__tree, __entry, __index, __max)``h]jj)}(hjV h]h-mt_for_each (__tree, __entry, __index, __max)}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjT ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMzhjhhubjF )}(h5Iterate over each entry starting at index until max. h]h)}(h4Iterate over each entry starting at index until max.h]h4Iterate over each entry starting at index until max.}(hjp hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMohjl ubah}(h]h ]h"]h$]h&]uh1jE hj~ hMohjhhubja )}(hXX**Parameters** ``__tree`` The Maple Tree ``__entry`` The current entry ``__index`` The index to start the search from. Subsequently used as iterator. ``__max`` The maximum limit for **index** **Description** This iterator skips all entries, which resolve to a NULL pointer, e.g. entries which has been reserved with XA_ZERO_ENTRY.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMshj ubj)}(hhh](j)}(h``__tree`` The Maple Tree h](j")}(h ``__tree``h]jj)}(hj h]h__tree}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMphj ubj2)}(hhh]h)}(hThe Maple Treeh]hThe Maple Tree}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMphj ubah}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMphj ubj)}(h``__entry`` The current entry h](j")}(h ``__entry``h]jj)}(hj h]h__entry}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMqhj ubj2)}(hhh]h)}(hThe current entryh]hThe current entry}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMqhj ubah}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMqhj ubj)}(hO``__index`` The index to start the search from. Subsequently used as iterator. h](j")}(h ``__index``h]jj)}(hj!h]h__index}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj!ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMrhj!ubj2)}(hhh]h)}(hBThe index to start the search from. Subsequently used as iterator.h]hBThe index to start the search from. Subsequently used as iterator.}(hj5!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1!hMrhj2!ubah}(h]h ]h"]h$]h&]uh1j1hj!ubeh}(h]h ]h"]h$]h&]uh1jhj1!hMrhj ubj)}(h*``__max`` The maximum limit for **index** h](j")}(h ``__max``h]jj)}(hjU!h]h__max}(hjW!hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjS!ubah}(h]h ]h"]h$]h&]uh1j!h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMshjO!ubj2)}(hhh]h)}(hThe maximum limit for **index**h](hThe maximum limit for }(hjn!hhhNhNubj)}(h **index**h]hindex}(hjv!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn!ubeh}(h]h ]h"]h$]h&]uh1hhjj!hMshjk!ubah}(h]h ]h"]h$]h&]uh1j1hjO!ubeh}(h]h ]h"]h$]h&]uh1jhjj!hMshj ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj!h]h Description}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMuhj ubh)}(hzThis iterator skips all entries, which resolve to a NULL pointer, e.g. entries which has been reserved with XA_ZERO_ENTRY.h]hzThis iterator skips all entries, which resolve to a NULL pointer, e.g. entries which has been reserved with XA_ZERO_ENTRY.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMuhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_prealloc_calc (C function)c.mas_prealloc_calchNtauh1jhjhhhNhNubj)}(hhh](j)}(h9int mas_prealloc_calc (struct ma_state *mas, void *entry)h]j)}(h8int mas_prealloc_calc(struct ma_state *mas, void *entry)h](jq )}(hinth]hint}(hj!hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj!hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM4ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!hhhj!hM4ubj)}(hmas_prealloc_calch]j)}(hmas_prealloc_calch]hmas_prealloc_calc}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj!hhhj!hM4ubj )}(h#(struct ma_state *mas, void *entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj "hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj )}(h h]h }(hj-"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubh)}(hhh]j)}(hma_stateh]hma_state}(hj>"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;"ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj@"modnameN classnameNj j )}j ]j )}j j"sbc.mas_prealloc_calcasbuh1hhj"ubj )}(h h]h }(hj^"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj, )}(hjh]h*}(hjl"hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj"ubj)}(hmash]hmas}(hjy"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubj )}(h void *entryh](jq )}(hvoidh]hvoid}(hj"hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj"ubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj, )}(hjh]h*}(hj"hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj"ubj)}(hentryh]hentry}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubeh}(h]h ]h"]h$]h&]hhuh1j hj!hhhj!hM4ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj!hhhj!hM4ubah}(h]j!ah ](j j eh"]h$]h&]j j )j huh1jhj!hM4hj!hhubj )}(hhh]h)}(h'h]h void *entry}(hj@'hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj<'ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj8'ubj2)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjW'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjS'hMhjT'ubah}(h]h ]h"]h$]h&]uh1j1hj8'ubeh}(h]h ]h"]h$]h&]uh1jhjS'hMhj&ubeh}(h]h ]h"]h$]h&]uh1jhj&ubh)}(h **Return**h]j)}(hjy'h]hReturn}(hj{'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw'ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj&ubh)}(h``NULL`` or the contents that already exists at the requested index otherwise. The maple state needs to be checked for error conditions.h](jj)}(h``NULL``h]hNULL}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj'ubh or the contents that already exists at the requested index otherwise. The maple state needs to be checked for error conditions.}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_alloc_cyclic (C function)c.mas_alloc_cyclichNtauh1jhjhhhNhNubj)}(hhh](j)}(hint mas_alloc_cyclic (struct ma_state *mas, unsigned long *startp, void *entry, unsigned long range_lo, unsigned long range_hi, unsigned long *next, gfp_t gfp)h]j)}(hint mas_alloc_cyclic(struct ma_state *mas, unsigned long *startp, void *entry, unsigned long range_lo, unsigned long range_hi, unsigned long *next, gfp_t gfp)h](jq )}(hinth]hint}(hj'hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj'hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'hhhj'hMubj)}(hmas_alloc_cyclich]j)}(hmas_alloc_cyclich]hmas_alloc_cyclic}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj'hhhj'hMubj )}(h(struct ma_state *mas, unsigned long *startp, void *entry, unsigned long range_lo, unsigned long range_hi, unsigned long *next, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj (hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubh)}(hhh]j)}(hma_stateh]hma_state}(hj'(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$(ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj)(modnameN classnameNj j )}j ]j )}j j'sbc.mas_alloc_cyclicasbuh1hhj(ubj )}(h h]h }(hjG(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubj, )}(hjh]h*}(hjU(hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj(ubj)}(hmas"h]hmas}(hjb(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(hunsigned long *startph](jq )}(hunsignedh]hunsigned}(hj{(hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjw(ubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjw(ubjq )}(hlongh]hlong}(hj(hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjw(ubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjw(ubj, )}(hjh]h*}(hj(hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjw(ubj)}(hstartph]hstartp}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(h void *entryh](jq )}(hvoidh]hvoid}(hj(hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj(ubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubj, )}(hjh]h*}(hj(hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj(ubj)}(hentryh]hentry}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(hunsigned long range_loh](jq )}(hunsignedh]hunsigned}(hj)hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj)ubj )}(h h]h }(hj))hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubjq )}(hlongh]hlong}(hj7)hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj)ubj )}(h h]h }(hjE)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj)}(hrange_loh]hrange_lo}(hjS)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(hunsigned long range_hih](jq )}(hunsignedh]hunsigned}(hjl)hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjh)ubj )}(h h]h }(hjz)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjh)ubjq )}(hlongh]hlong}(hj)hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjh)ubj )}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjh)ubj)}(hrange_hih]hrange_hi}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjh)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(hunsigned long *nexth](jq )}(hunsignedh]hunsigned}(hj)hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj)ubj )}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubjq )}(hlongh]hlong}(hj)hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj)ubj )}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj, )}(hjh]h*}(hj)hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj)ubj)}(hnexth]hnext}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj *modnameN classnameNj j )}j ]jC(c.mas_alloc_cyclicasbuh1hhj*ubj )}(h h]h }(hj<*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ubj)}(hgfph]hgfp}(hjJ*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubeh}(h]h ]h"]h$]h&]hhuh1j hj'hhhj'hMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj'hhhj'hMubah}(h]j'ah ](j j eh"]h$]h&]j j )j huh1jhj'hMhj'hhubj )}(hhh]h)}(h1Internal call to find somewhere to store an entryh]h1Internal call to find somewhere to store an entry}(hjt*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjq*hhubah}(h]h ]h"]h$]h&]uh1j hj'hhhj'hMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j*j) j*j* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct ma_state *mas`` The maple state. ``unsigned long *startp`` Pointer to ID. ``void *entry`` The entry to store. ``unsigned long range_lo`` Lower bound of range to search. ``unsigned long range_hi`` Upper bound of range to search. ``unsigned long *next`` Pointer to next ID to allocate. ``gfp_t gfp`` The GFP_FLAGS to use for allocations. **Return** 0 if the allocation succeeded without wrapping, 1 if the allocation succeeded after wrapping, or -EBUSY if there are no free entries.h](h)}(h**Parameters**h]j)}(hj*h]h Parameters}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj*ubj)}(hhh](j)}(h*``struct ma_state *mas`` The maple state. h](j")}(h``struct ma_state *mas``h]jj)}(hj*h]hstruct ma_state *mas}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj*ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj*ubj2)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhj*ubah}(h]h ]h"]h$]h&]uh1j1hj*ubeh}(h]h ]h"]h$]h&]uh1jhj*hMhj*ubj)}(h)``unsigned long *startp`` Pointer to ID. h](j")}(h``unsigned long *startp``h]jj)}(hj*h]hunsigned long *startp}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj*ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj*ubj2)}(hhh]h)}(hPointer to ID.h]hPointer to ID.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1j1hj*ubeh}(h]h ]h"]h$]h&]uh1jhj+hMhj*ubj)}(h$``void *entry`` The entry to store. h](j")}(h``void *entry``h]jj)}(hj'+h]h void *entry}(hj)+hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj%+ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj!+ubj2)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hj@+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<+hMhj=+ubah}(h]h ]h"]h$]h&]uh1j1hj!+ubeh}(h]h ]h"]h$]h&]uh1jhj<+hMhj*ubj)}(h;``unsigned long range_lo`` Lower bound of range to search. h](j")}(h``unsigned long range_lo``h]jj)}(hj`+h]hunsigned long range_lo}(hjb+hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj^+ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjZ+ubj2)}(hhh]h)}(hLower bound of range to search.h]hLower bound of range to search.}(hjy+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhju+hMhjv+ubah}(h]h ]h"]h$]h&]uh1j1hjZ+ubeh}(h]h ]h"]h$]h&]uh1jhju+hMhj*ubj)}(h;``unsigned long range_hi`` Upper bound of range to search. h](j")}(h``unsigned long range_hi``h]jj)}(hj+h]hunsigned long range_hi}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj+ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj+ubj2)}(hhh]h)}(hUpper bound of range to search.h]hUpper bound of range to search.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1j1hj+ubeh}(h]h ]h"]h$]h&]uh1jhj+hMhj*ubj)}(h8``unsigned long *next`` Pointer to next ID to allocate. h](j")}(h``unsigned long *next``h]jj)}(hj+h]hunsigned long *next}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj+ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj+ubj2)}(hhh]h)}(hPointer to next ID to allocate.h]hPointer to next ID to allocate.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1j1hj+ubeh}(h]h ]h"]h$]h&]uh1jhj+hMhj*ubj)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j")}(h ``gfp_t gfp``h]jj)}(hj ,h]h gfp_t gfp}(hj ,hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj ,ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj,ubj2)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hj$,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj ,hMhj!,ubah}(h]h ]h"]h$]h&]uh1j1hj,ubeh}(h]h ]h"]h$]h&]uh1jhj ,hMhj*ubeh}(h]h ]h"]h$]h&]uh1jhj*ubh)}(h **Return**h]j)}(hjF,h]hReturn}(hjH,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD,ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj*ubh)}(h0 if the allocation succeeded without wrapping, 1 if the allocation succeeded after wrapping, or -EBUSY if there are no free entries.h]h0 if the allocation succeeded without wrapping, 1 if the allocation succeeded after wrapping, or -EBUSY if there are no free entries.}(hj\,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_walk (C function) c.mas_walkhNtauh1jhjhhhNhNubj)}(hhh](j)}(h&void * mas_walk (struct ma_state *mas)h]j)}(h$void *mas_walk(struct ma_state *mas)h](jq )}(hvoidh]hvoid}(hj,hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj,hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM"ubj )}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,hhhj,hM"ubj, )}(hjh]h*}(hj,hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj,hhhj,hM"ubj)}(hmas_walkh]j)}(hmas_walkh]hmas_walk}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj,hhhj,hM"ubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubj )}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubh)}(hhh]j)}(hma_stateh]hma_state}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj,modnameN classnameNj j )}j ]j )}j j,sb c.mas_walkasbuh1hhj,ubj )}(h h]h }(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubj, )}(hjh]h*}(hj!-hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj,ubj)}(hmash]hmas}(hj.-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj,ubah}(h]h ]h"]h$]h&]hhuh1j hj,hhhj,hM"ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj,hhhj,hM"ubah}(h]j~,ah ](j j eh"]h$]h&]j j )j huh1jhj,hM"hj,hhubj )}(hhh]h)}(h&Search for **mas->index** in the tree.h](h Search for }(hjX-hhhNhNubj)}(h**mas->index**h]h mas->index}(hj`-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX-ubh in the tree.}(hjX-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjU-hhubah}(h]h ]h"]h$]h&]uh1j hj,hhhj,hM"ubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j-j) j-j* j+ j, uh1jhhhjhNhNubja )}(h**Parameters** ``struct ma_state *mas`` The maple state. **Description** mas->index and mas->last will be set to the range if there is a value. If mas->status is ma_none, reset to ma_start **Return** the entry at the location or ``NULL``.h](h)}(h**Parameters**h]j)}(hj-h]h Parameters}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj-ubj)}(hhh]j)}(h*``struct ma_state *mas`` The maple state. h](j")}(h``struct ma_state *mas``h]jj)}(hj-h]hstruct ma_state *mas}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj-ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj-ubj2)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMhj-ubah}(h]h ]h"]h$]h&]uh1j1hj-ubeh}(h]h ]h"]h$]h&]uh1jhj-hMhj-ubah}(h]h ]h"]h$]h&]uh1jhj-ubh)}(h**Description**h]j)}(hj-h]h Description}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj-ubh)}(htmas->index and mas->last will be set to the range if there is a value. If mas->status is ma_none, reset to ma_starth]htmas->index and mas->last will be set to the range if there is a value. If mas->status is ma_none, reset to ma_start}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj-ubh)}(h **Return**h]j)}(hj .h]hReturn}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj .ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hj-ubh)}(h&the entry at the location or ``NULL``.h](hthe entry at the location or }(hj#.hhhNhNubjj)}(h``NULL``h]hNULL}(hj+.hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj#.ubh.}(hj#.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmte_dead_walk (C function)c.mte_dead_walkhNtauh1jhjhhhNhNubj)}(hhh](j)}(hNvoid __rcu ** mte_dead_walk (struct maple_enode **enode, unsigned char offset)h]j)}(hLvoid __rcu **mte_dead_walk(struct maple_enode **enode, unsigned char offset)h](jq )}(hvoidh]hvoid}(hjd.hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj`.hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMEubj )}(h h]h }(hjs.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`.hhhjr.hMEubh__rcu}(hj`.hhhNhNubj )}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`.hhhjr.hMEubj, )}(hjh]h*}(hj.hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj`.hhhjr.hMEubj, )}(hjh]h*}(hj.hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj`.hhhjr.hMEubj)}(h mte_dead_walkh]j)}(h mte_dead_walkh]h mte_dead_walk}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj`.hhhjr.hMEubj )}(h2(struct maple_enode **enode, unsigned char offset)h](j )}(hstruct maple_enode **enodeh](j )}(hj h]hstruct}(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj )}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubh)}(hhh]j)}(h maple_enodeh]h maple_enode}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj.modnameN classnameNj j )}j ]j )}j j.sbc.mte_dead_walkasbuh1hhj.ubj )}(h h]h }(hj /hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj, )}(hjh]h*}(hj/hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj.ubj, )}(hjh]h*}(hj&/hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj.ubj)}(henodeh]henode}(hj3/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj.ubj )}(hunsigned char offseth](jq )}(hunsignedh]hunsigned}(hjL/hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjH/ubj )}(h h]h }(hjZ/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjH/ubjq )}(hcharh]hchar}(hjh/hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjH/ubj )}(h h]h }(hjv/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjH/ubj)}(hoffseth]hoffset}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjH/ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj.ubeh}(h]h ]h"]h$]h&]hhuh1j hj`.hhhjr.hMEubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj\.hhhjr.hMEubah}(h]jW.ah ](j j eh"]h$]h&]j j )j huh1jhjr.hMEhjY.hhubj )}(hhh]h)}(h/Walk down a dead tree to just before the leavesh]h/Walk down a dead tree to just before the leaves}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM?hj/hhubah}(h]h ]h"]h$]h&]uh1j hjY.hhhjr.hMEubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j/j) j/j* j+ j, uh1jhhhjhNhNubja )}(h**Parameters** ``struct maple_enode **enode`` The maple encoded node ``unsigned char offset`` The starting offset **Note** This can only be used from the RCU callback context.h](h)}(h**Parameters**h]j)}(hj/h]h Parameters}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMChj/ubj)}(hhh](j)}(h6``struct maple_enode **enode`` The maple encoded node h](j")}(h``struct maple_enode **enode``h]jj)}(hj/h]hstruct maple_enode **enode}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj/ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM@hj/ubj2)}(hhh]h)}(hThe maple encoded nodeh]hThe maple encoded node}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hM@hj0ubah}(h]h ]h"]h$]h&]uh1j1hj/ubeh}(h]h ]h"]h$]h&]uh1jhj0hM@hj/ubj)}(h-``unsigned char offset`` The starting offset h](j")}(h``unsigned char offset``h]jj)}(hj(0h]hunsigned char offset}(hj*0hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj&0ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMAhj"0ubj2)}(hhh]h)}(hThe starting offseth]hThe starting offset}(hjA0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=0hMAhj>0ubah}(h]h ]h"]h$]h&]uh1j1hj"0ubeh}(h]h ]h"]h$]h&]uh1jhj=0hMAhj/ubeh}(h]h ]h"]h$]h&]uh1jhj/ubh)}(h**Note**h]j)}(hjc0h]hNote}(hje0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja0ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMChj/ubh)}(h4This can only be used from the RCU callback context.h]h4This can only be used from the RCU callback context.}(hjy0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMChj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_free_walk (C function)c.mt_free_walkhNtauh1jhjhhhNhNubj)}(hhh](j)}(h)void mt_free_walk (struct rcu_head *head)h]j)}(h(void mt_free_walk(struct rcu_head *head)h](jq )}(hvoidh]hvoid}(hj0hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj0hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM]ubj )}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0hhhj0hM]ubj)}(h mt_free_walkh]j)}(h mt_free_walkh]h mt_free_walk}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj0hhhj0hM]ubj )}(h(struct rcu_head *head)h]j )}(hstruct rcu_head *headh](j )}(hj h]hstruct}(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj )}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubh)}(hhh]j)}(hrcu_headh]hrcu_head}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj1modnameN classnameNj j )}j ]j )}j j0sbc.mt_free_walkasbuh1hhj0ubj )}(h h]h }(hj#1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj, )}(hjh]h*}(hj11hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj0ubj)}(hheadh]hhead}(hj>1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj0ubah}(h]h ]h"]h$]h&]hhuh1j hj0hhhj0hM]ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj0hhhj0hM]ubah}(h]j0ah ](j j eh"]h$]h&]j j )j huh1jhj0hM]hj0hhubj )}(hhh]h)}(h.Walk & free a tree in the RCU callback contexth]h.Walk & free a tree in the RCU callback context}(hjh1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMXhje1hhubah}(h]h ]h"]h$]h&]uh1j hj0hhhj0hM]ubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j1j) j1j* j+ j, uh1jhhhjhNhNubja )}(h**Parameters** ``struct rcu_head *head`` The RCU head that's within the node. **Note** This can only be used from the RCU callback context.h](h)}(h**Parameters**h]j)}(hj1h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM\hj1ubj)}(hhh]j)}(h?``struct rcu_head *head`` The RCU head that's within the node. h](j")}(h``struct rcu_head *head``h]jj)}(hj1h]hstruct rcu_head *head}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj1ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMYhj1ubj2)}(hhh]h)}(h$The RCU head that's within the node.h]h&The RCU head that’s within the node.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMYhj1ubah}(h]h ]h"]h$]h&]uh1j1hj1ubeh}(h]h ]h"]h$]h&]uh1jhj1hMYhj1ubah}(h]h ]h"]h$]h&]uh1jhj1ubh)}(h**Note**h]j)}(hj1h]hNote}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM[hj1ubh)}(h4This can only be used from the RCU callback context.h]h4This can only be used from the RCU callback context.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM[hj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_store (C function) c.mas_storehNtauh1jhjhhhNhNubj)}(hhh](j)}(h4void * mas_store (struct ma_state *mas, void *entry)h]j)}(h2void *mas_store(struct ma_state *mas, void *entry)h](jq )}(hvoidh]hvoid}(hj)2hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj%2hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hj82hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%2hhhj72hMubj, )}(hjh]h*}(hjF2hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj%2hhhj72hMubj)}(h mas_storeh]j)}(h mas_storeh]h mas_store}(hjW2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS2ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj%2hhhj72hMubj )}(h#(struct ma_state *mas, void *entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjs2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjo2ubj )}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjo2ubh)}(hhh]j)}(hma_stateh]hma_state}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj2modnameN classnameNj j )}j ]j )}j jY2sb c.mas_storeasbuh1hhjo2ubj )}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjo2ubj, )}(hjh]h*}(hj2hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjo2ubj)}(hmash]hmas}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjk2ubj )}(h void *entryh](jq )}(hvoidh]hvoid}(hj2hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj2ubj )}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubj, )}(hjh]h*}(hj3hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj2ubj)}(hentryh]hentry}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjk2ubeh}(h]h ]h"]h$]h&]hhuh1j hj%2hhhj72hMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj!2hhhj72hMubah}(h]j2ah ](j j eh"]h$]h&]j j )j huh1jhj72hMhj2hhubj )}(hhh]h)}(hStore an **entry**.h](h Store an }(hj83hhhNhNubj)}(h **entry**h]hentry}(hj@3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj83ubh.}(hj83hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj53hhubah}(h]h ]h"]h$]h&]uh1j hj2hhhj72hMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jb3j) jb3j* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct ma_state *mas`` The maple state. ``void *entry`` The entry to store. **Description** The **mas->index** and **mas->last** is used to set the range for the **entry**. **Return** the first entry between mas->index and mas->last or ``NULL``.h](h)}(h**Parameters**h]j)}(hjl3h]h Parameters}(hjn3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj3ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjf3ubj)}(hhh](j)}(h*``struct ma_state *mas`` The maple state. h](j")}(h``struct ma_state *mas``h]jj)}(hj3h]hstruct ma_state *mas}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj3ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj3ubj2)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj3ubah}(h]h ]h"]h$]h&]uh1j1hj3ubeh}(h]h ]h"]h$]h&]uh1jhj3hMhj3ubj)}(h$``void *entry`` The entry to store. h](j")}(h``void *entry``h]jj)}(hj3h]h void *entry}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj3ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj3ubj2)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj3ubah}(h]h ]h"]h$]h&]uh1j1hj3ubeh}(h]h ]h"]h$]h&]uh1jhj3hMhj3ubeh}(h]h ]h"]h$]h&]uh1jhjf3ubh)}(h**Description**h]j)}(hj3h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjf3ubh)}(hPThe **mas->index** and **mas->last** is used to set the range for the **entry**.h](hThe }(hj4hhhNhNubj)}(h**mas->index**h]h mas->index}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh and }(hj4hhhNhNubj)}(h **mas->last**h]h mas->last}(hj/4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh" is used to set the range for the }(hj4hhhNhNubj)}(h **entry**h]hentry}(hjA4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjf3ubh)}(h **Return**h]j)}(hj\4h]hReturn}(hj^4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZ4ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjf3ubh)}(h=the first entry between mas->index and mas->last or ``NULL``.h](h4the first entry between mas->index and mas->last or }(hjr4hhhNhNubjj)}(h``NULL``h]hNULL}(hjz4hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjr4ubh.}(hjr4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjf3ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_store_gfp (C function)c.mas_store_gfphNtauh1jhjhhhNhNubj)}(hhh](j)}(h@int mas_store_gfp (struct ma_state *mas, void *entry, gfp_t gfp)h]j)}(h?int mas_store_gfp(struct ma_state *mas, void *entry, gfp_t gfp)h](jq )}(hinth]hint}(hj4hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj4hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM0ubj )}(h h]h }(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4hhhj4hM0ubj)}(h mas_store_gfph]j)}(h mas_store_gfph]h mas_store_gfp}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj4hhhj4hM0ubj )}(h.(struct ma_state *mas, void *entry, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubj )}(h h]h }(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubh)}(hhh]j)}(hma_stateh]hma_state}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 5ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj5modnameN classnameNj j )}j ]j )}j j4sbc.mas_store_gfpasbuh1hhj4ubj )}(h h]h }(hj.5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubj, )}(hjh]h*}(hj<5hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj4ubj)}(hmash]hmas}(hjI5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj4ubj )}(h void *entryh](jq )}(hvoidh]hvoid}(hjb5hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj^5ubj )}(h h]h }(hjp5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj^5ubj, )}(hjh]h*}(hj~5hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj^5ubj)}(hentryh]hentry}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj4ubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj5modnameN classnameNj j )}j ]j*5c.mas_store_gfpasbuh1hhj5ubj )}(h h]h }(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5ubj)}(hgfph]hgfp}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj4ubeh}(h]h ]h"]h$]h&]hhuh1j hj4hhhj4hM0ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj4hhhj4hM0ubah}(h]j4ah ](j j eh"]h$]h&]j j )j huh1jhj4hM0hj4hhubj )}(hhh]h)}(hStore a value into the tree.h]hStore a value into the tree.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM(hj5hhubah}(h]h ]h"]h$]h&]uh1j hj4hhhj4hM0ubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j6j) j6j* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct ma_state *mas`` The maple state ``void *entry`` The entry to store ``gfp_t gfp`` The GFP_FLAGS to use for allocations if necessary. **Return** 0 on success, -EINVAL on invalid request, -ENOMEM if memory could not be allocated.h](h)}(h**Parameters**h]j)}(hj6h]h Parameters}(hj!6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM,hj6ubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hj>6h]hstruct ma_state *mas}(hj@6hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj<6ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM)hj86ubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjW6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjS6hM)hjT6ubah}(h]h ]h"]h$]h&]uh1j1hj86ubeh}(h]h ]h"]h$]h&]uh1jhjS6hM)hj56ubj)}(h#``void *entry`` The entry to store h](j")}(h``void *entry``h]jj)}(hjw6h]h void *entry}(hjy6hhhNhNubah}(h]h ]h"]h$]h&]uh1jihju6ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM*hjq6ubj2)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hM*hj6ubah}(h]h ]h"]h$]h&]uh1j1hjq6ubeh}(h]h ]h"]h$]h&]uh1jhj6hM*hj56ubj)}(hA``gfp_t gfp`` The GFP_FLAGS to use for allocations if necessary. h](j")}(h ``gfp_t gfp``h]jj)}(hj6h]h gfp_t gfp}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj6ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM+hj6ubj2)}(hhh]h)}(h2The GFP_FLAGS to use for allocations if necessary.h]h2The GFP_FLAGS to use for allocations if necessary.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hM+hj6ubah}(h]h ]h"]h$]h&]uh1j1hj6ubeh}(h]h ]h"]h$]h&]uh1jhj6hM+hj56ubeh}(h]h ]h"]h$]h&]uh1jhj6ubh)}(h **Return**h]j)}(hj6h]hReturn}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM-hj6ubh)}(hS0 on success, -EINVAL on invalid request, -ENOMEM if memory could not be allocated.h]hS0 on success, -EINVAL on invalid request, -ENOMEM if memory could not be allocated.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM-hj6ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_store_prealloc (C function)c.mas_store_preallochNtauh1jhjhhhNhNubj)}(hhh](j)}(h;void mas_store_prealloc (struct ma_state *mas, void *entry)h]j)}(h:void mas_store_prealloc(struct ma_state *mas, void *entry)h](jq )}(hvoidh]hvoid}(hj07hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj,7hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMQubj )}(h h]h }(hj?7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,7hhhj>7hMQubj)}(hmas_store_prealloch]j)}(hmas_store_prealloch]hmas_store_prealloc}(hjQ7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM7ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj,7hhhj>7hMQubj )}(h#(struct ma_state *mas, void *entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjm7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hji7ubj )}(h h]h }(hjz7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hji7ubh)}(hhh]j)}(hma_stateh]hma_state}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj7modnameN classnameNj j )}j ]j )}j jS7sbc.mas_store_preallocasbuh1hhji7ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hji7ubj, )}(hjh]h*}(hj7hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hji7ubj)}(hmash]hmas}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhji7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hje7ubj )}(h void *entryh](jq )}(hvoidh]hvoid}(hj7hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj7ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubj, )}(hjh]h*}(hj7hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj7ubj)}(hentryh]hentry}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hje7ubeh}(h]h ]h"]h$]h&]hhuh1j hj,7hhhj>7hMQubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj(7hhhj>7hMQubah}(h]j#7ah ](j j eh"]h$]h&]j j )j huh1jhj>7hMQhj%7hhubj )}(hhh]h)}(hIStore a value into the tree using memory preallocated in the maple state.h]hIStore a value into the tree using memory preallocated in the maple state.}(hj28hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMLhj/8hhubah}(h]h ]h"]h$]h&]uh1j hj%7hhhj>7hMQubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jJ8j) jJ8j* j+ j, uh1jhhhjhNhNubja )}(ha**Parameters** ``struct ma_state *mas`` The maple state ``void *entry`` The entry to store.h](h)}(h**Parameters**h]j)}(hjT8h]h Parameters}(hjV8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR8ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMPhjN8ubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hjs8h]hstruct ma_state *mas}(hju8hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjq8ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMNhjm8ubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMNhj8ubah}(h]h ]h"]h$]h&]uh1j1hjm8ubeh}(h]h ]h"]h$]h&]uh1jhj8hMNhjj8ubj)}(h#``void *entry`` The entry to store.h](j")}(h``void *entry``h]jj)}(hj8h]h void *entry}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj8ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMPhj8ubj2)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMOhj8ubah}(h]h ]h"]h$]h&]uh1j1hj8ubeh}(h]h ]h"]h$]h&]uh1jhj8hMPhjj8ubeh}(h]h ]h"]h$]h&]uh1jhjN8ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_preallocate (C function)c.mas_preallocatehNtauh1jhjhhhNhNubj)}(hhh](j)}(hBint mas_preallocate (struct ma_state *mas, void *entry, gfp_t gfp)h]j)}(hAint mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp)h](jq )}(hinth]hint}(hj9hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj9hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMqubj )}(h h]h }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9hhhj9hMqubj)}(hmas_preallocateh]j)}(hmas_preallocateh]hmas_preallocate}(hj'9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#9ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj9hhhj9hMqubj )}(h.(struct ma_state *mas, void *entry, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjC9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?9ubj )}(h h]h }(hjP9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?9ubh)}(hhh]j)}(hma_stateh]hma_state}(hja9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^9ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjc9modnameN classnameNj j )}j ]j )}j j)9sbc.mas_preallocateasbuh1hhj?9ubj )}(h h]h }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?9ubj, )}(hjh]h*}(hj9hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj?9ubj)}(hmash]hmas}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?9ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;9ubj )}(h void *entryh](jq )}(hvoidh]hvoid}(hj9hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj9ubj )}(h h]h }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9ubj, )}(hjh]h*}(hj9hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj9ubj)}(hentryh]hentry}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;9ubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj9modnameN classnameNj j )}j ]j}9c.mas_preallocateasbuh1hhj9ubj )}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9ubj)}(hgfph]hgfp}(hj&:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;9ubeh}(h]h ]h"]h$]h&]hhuh1j hj9hhhj9hMqubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj8hhhj9hMqubah}(h]j8ah ](j j eh"]h$]h&]j j )j huh1jhj9hMqhj8hhubj )}(hhh]h)}(h.Preallocate enough nodes for a store operationh]h.Preallocate enough nodes for a store operation}(hjP:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMjhjM:hhubah}(h]h ]h"]h$]h&]uh1j hj8hhhj9hMqubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jh:j) jh:j* j+ j, uh1jhhhjhNhNubja )}(h**Parameters** ``struct ma_state *mas`` The maple state ``void *entry`` The entry that will be stored ``gfp_t gfp`` The GFP_FLAGS to use for allocations. **Return** 0 on success, -ENOMEM if memory could not be allocated.h](h)}(h**Parameters**h]j)}(hjr:h]h Parameters}(hjt:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp:ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMnhjl:ubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hj:h]hstruct ma_state *mas}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj:ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMkhj:ubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMkhj:ubah}(h]h ]h"]h$]h&]uh1j1hj:ubeh}(h]h ]h"]h$]h&]uh1jhj:hMkhj:ubj)}(h.``void *entry`` The entry that will be stored h](j")}(h``void *entry``h]jj)}(hj:h]h void *entry}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj:ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMlhj:ubj2)}(hhh]h)}(hThe entry that will be storedh]hThe entry that will be stored}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMlhj:ubah}(h]h ]h"]h$]h&]uh1j1hj:ubeh}(h]h ]h"]h$]h&]uh1jhj:hMlhj:ubj)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j")}(h ``gfp_t gfp``h]jj)}(hj;h]h gfp_t gfp}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj;ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMmhj:ubj2)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMmhj;ubah}(h]h ]h"]h$]h&]uh1j1hj:ubeh}(h]h ]h"]h$]h&]uh1jhj;hMmhj:ubeh}(h]h ]h"]h$]h&]uh1jhjl:ubh)}(h **Return**h]j)}(hj>;h]hReturn}(hj@;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<;ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMohjl:ubh)}(h70 on success, -ENOMEM if memory could not be allocated.h]h70 on success, -ENOMEM if memory could not be allocated.}(hjT;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMohjl:ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_next (C function) c.mas_nexthNtauh1jhjhhhNhNubj)}(hhh](j)}(h9void * mas_next (struct ma_state *mas, unsigned long max)h]j)}(h7void *mas_next(struct ma_state *mas, unsigned long max)h](jq )}(hvoidh]hvoid}(hj;hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj;hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMBubj )}(h h]h }(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;hhhj;hMBubj, )}(hjh]h*}(hj;hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj;hhhj;hMBubj)}(hmas_nexth]j)}(hmas_nexth]hmas_next}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj;hhhj;hMBubj )}(h)(struct ma_state *mas, unsigned long max)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubj )}(h h]h }(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubh)}(hhh]j)}(hma_stateh]hma_state}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj;modnameN classnameNj j )}j ]j )}j j;sb c.mas_nextasbuh1hhj;ubj )}(h h]h }(hj <hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubj, )}(hjh]h*}(hj<hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj;ubj)}(hmash]hmas}(hj&<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;ubj )}(hunsigned long maxh](jq )}(hunsignedh]hunsigned}(hj?<hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj;<ubj )}(h h]h }(hjM<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;<ubjq )}(hlongh]hlong}(hj[<hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj;<ubj )}(h h]h }(hji<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;<ubj)}(hmaxh]hmax}(hjw<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;<ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;ubeh}(h]h ]h"]h$]h&]hhuh1j hj;hhhj;hMBubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj{;hhhj;hMBubah}(h]jv;ah ](j j eh"]h$]h&]j j )j huh1jhj;hMBhjx;hhubj )}(hhh]h)}(hGet the next entry.h]hGet the next entry.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM8hj<hhubah}(h]h ]h"]h$]h&]uh1j hjx;hhhj;hMBubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j<j) j<j* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long max`` The maximum index to check. **Description** Returns the next entry after **mas->index**. Must hold rcu_read_lock or the write lock. Can return the zero entry. **Return** The next entry or ``NULL``h](h)}(h**Parameters**h]j)}(hj<h]h Parameters}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM<hj<ubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hj<h]hstruct ma_state *mas}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj<ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM9hj<ubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hM9hj<ubah}(h]h ]h"]h$]h&]uh1j1hj<ubeh}(h]h ]h"]h$]h&]uh1jhj<hM9hj<ubj)}(h2``unsigned long max`` The maximum index to check. h](j")}(h``unsigned long max``h]jj)}(hj=h]hunsigned long max}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj=ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM:hj=ubj2)}(hhh]h)}(hThe maximum index to check.h]hThe maximum index to check.}(hj4=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0=hM:hj1=ubah}(h]h ]h"]h$]h&]uh1j1hj=ubeh}(h]h ]h"]h$]h&]uh1jhj0=hM:hj<ubeh}(h]h ]h"]h$]h&]uh1jhj<ubh)}(h**Description**h]j)}(hjV=h]h Description}(hjX=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT=ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM<hj<ubh)}(hrReturns the next entry after **mas->index**. Must hold rcu_read_lock or the write lock. Can return the zero entry.h](hReturns the next entry after }(hjl=hhhNhNubj)}(h**mas->index**h]h mas->index}(hjt=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl=ubhG. Must hold rcu_read_lock or the write lock. Can return the zero entry.}(hjl=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM<hj<ubh)}(h **Return**h]j)}(hj=h]hReturn}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM@hj<ubh)}(hThe next entry or ``NULL``h](hThe next entry or }(hj=hhhNhNubjj)}(h``NULL``h]hNULL}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj=ubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM@hj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_next_range (C function)c.mas_next_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(h?void * mas_next_range (struct ma_state *mas, unsigned long max)h]j)}(h=void *mas_next_range(struct ma_state *mas, unsigned long max)h](jq )}(hvoidh]hvoid}(hj=hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj=hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMYubj )}(h h]h }(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj=hhhj=hMYubj, )}(hjh]h*}(hj=hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj=hhhj=hMYubj)}(hmas_next_rangeh]j)}(hmas_next_rangeh]hmas_next_range}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj >ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj=hhhj=hMYubj )}(h)(struct ma_state *mas, unsigned long max)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj,>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(>ubj )}(h h]h }(hj9>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(>ubh)}(hhh]j)}(hma_stateh]hma_state}(hjJ>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjG>ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjL>modnameN classnameNj j )}j ]j )}j j>sbc.mas_next_rangeasbuh1hhj(>ubj )}(h h]h }(hjj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(>ubj, )}(hjh]h*}(hjx>hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj(>ubj)}(hmash]hmas}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj$>ubj )}(hunsigned long maxh](jq )}(hunsignedh]hunsigned}(hj>hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj>ubj )}(h h]h }(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubjq )}(hlongh]hlong}(hj>hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj>ubj )}(h h]h }(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubj)}(hmaxh]hmax}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj$>ubeh}(h]h ]h"]h$]h&]hhuh1j hj=hhhj=hMYubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj=hhhj=hMYubah}(h]j=ah ](j j eh"]h$]h&]j j )j huh1jhj=hMYhj=hhubj )}(hhh]h)}(h)Advance the maple state to the next rangeh]h)Advance the maple state to the next range}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMOhj>hhubah}(h]h ]h"]h$]h&]uh1j hj=hhhj=hMYubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j?j) j?j* j+ j, uh1jhhhjhNhNubja )}(hX#**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long max`` The maximum index to check. **Description** Sets **mas->index** and **mas->last** to the range. Must hold rcu_read_lock or the write lock. Can return the zero entry. **Return** The next entry or ``NULL``h](h)}(h**Parameters**h]j)}(hj"?h]h Parameters}(hj$?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ?ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMShj?ubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hjA?h]hstruct ma_state *mas}(hjC?hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj??ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMPhj;?ubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjZ?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV?hMPhjW?ubah}(h]h ]h"]h$]h&]uh1j1hj;?ubeh}(h]h ]h"]h$]h&]uh1jhjV?hMPhj8?ubj)}(h2``unsigned long max`` The maximum index to check. h](j")}(h``unsigned long max``h]jj)}(hjz?h]hunsigned long max}(hj|?hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjx?ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMQhjt?ubj2)}(hhh]h)}(hThe maximum index to check.h]hThe maximum index to check.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMQhj?ubah}(h]h ]h"]h$]h&]uh1j1hjt?ubeh}(h]h ]h"]h$]h&]uh1jhj?hMQhj8?ubeh}(h]h ]h"]h$]h&]uh1jhj?ubh)}(h**Description**h]j)}(hj?h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMShj?ubh)}(hySets **mas->index** and **mas->last** to the range. Must hold rcu_read_lock or the write lock. Can return the zero entry.h](hSets }(hj?hhhNhNubj)}(h**mas->index**h]h mas->index}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubh and }(hj?hhhNhNubj)}(h **mas->last**h]h mas->last}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubhT to the range. Must hold rcu_read_lock or the write lock. Can return the zero entry.}(hj?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMShj?ubh)}(h **Return**h]j)}(hj@h]hReturn}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMWhj?ubh)}(hThe next entry or ``NULL``h](hThe next entry or }(hj@hhhNhNubjj)}(h``NULL``h]hNULL}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj@ubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMWhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_next (C function) c.mt_nexthNtauh1jhjhhhNhNubj)}(hhh](j)}(hNvoid * mt_next (struct maple_tree *mt, unsigned long index, unsigned long max)h]j)}(hLvoid *mt_next(struct maple_tree *mt, unsigned long index, unsigned long max)h](jq )}(hvoidh]hvoid}(hjS@hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjO@hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMqubj )}(h h]h }(hjb@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjO@hhhja@hMqubj, )}(hjh]h*}(hjp@hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjO@hhhja@hMqubj)}(hmt_nexth]j)}(hmt_nexth]hmt_next}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}@ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjO@hhhja@hMqubj )}(h?(struct maple_tree *mt, unsigned long index, unsigned long max)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@ubj )}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@ubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj@modnameN classnameNj j )}j ]j )}j j@sb c.mt_nextasbuh1hhj@ubj )}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@ubj, )}(hjh]h*}(hj@hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj@ubj)}(hmth]hmt}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@ubj )}(hunsigned long indexh](jq )}(hunsignedh]hunsigned}(hjAhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj Aubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Aubjq )}(hlongh]hlong}(hj+AhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj Aubj )}(h h]h }(hj9AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Aubj)}(hindexh]hindex}(hjGAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj Aubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@ubj )}(hunsigned long maxh](jq )}(hunsignedh]hunsigned}(hj`AhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj\Aubj )}(h h]h }(hjnAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\Aubjq )}(hlongh]hlong}(hj|AhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj\Aubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\Aubj)}(hmaxh]hmax}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\Aubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@ubeh}(h]h ]h"]h$]h&]hhuh1j hjO@hhhja@hMqubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjK@hhhja@hMqubah}(h]jF@ah ](j j eh"]h$]h&]j j )j huh1jhja@hMqhjH@hhubj )}(hhh]h)}(h$get the next value in the maple treeh]h$get the next value in the maple tree}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMfhjAhhubah}(h]h ]h"]h$]h&]uh1j hjH@hhhja@hMqubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jAj) jAj* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long index`` The start index ``unsigned long max`` The maximum index to check **Description** Takes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rst **Return** The entry higher than **index** or ``NULL`` if nothing is found.h](h)}(h**Parameters**h]j)}(hjAh]h Parameters}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMjhjAubj)}(hhh](j)}(h)``struct maple_tree *mt`` The maple tree h](j")}(h``struct maple_tree *mt``h]jj)}(hjBh]hstruct maple_tree *mt}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjBubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMghjAubj2)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMghjBubah}(h]h ]h"]h$]h&]uh1j1hjAubeh}(h]h ]h"]h$]h&]uh1jhjBhMghjAubj)}(h(``unsigned long index`` The start index h](j")}(h``unsigned long index``h]jj)}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj:Bubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhhj6Bubj2)}(hhh]h)}(hThe start indexh]hThe start index}(hjUBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQBhMhhjRBubah}(h]h ]h"]h$]h&]uh1j1hj6Bubeh}(h]h ]h"]h$]h&]uh1jhjQBhMhhjAubj)}(h1``unsigned long max`` The maximum index to check h](j")}(h``unsigned long max``h]jj)}(hjuBh]hunsigned long max}(hjwBhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjsBubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMihjoBubj2)}(hhh]h)}(hThe maximum index to checkh]hThe maximum index to check}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMihjBubah}(h]h ]h"]h$]h&]uh1j1hjoBubeh}(h]h ]h"]h$]h&]uh1jhjBhMihjAubeh}(h]h ]h"]h$]h&]uh1jhjAubh)}(h**Description**h]j)}(hjBh]h Description}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMkhjAubh)}(hTakes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rsth]hTakes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rst}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMkhjAubh)}(h **Return**h]j)}(hjBh]hReturn}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMohjAubh)}(h@The entry higher than **index** or ``NULL`` if nothing is found.h](hThe entry higher than }(hjBhhhNhNubj)}(h **index**h]hindex}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh or }(hjBhhhNhNubjj)}(h``NULL``h]hNULL}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jihjBubh if nothing is found.}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMohjAubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_prev (C function) c.mas_prevhNtauh1jhjhhhNhNubj)}(hhh](j)}(h9void * mas_prev (struct ma_state *mas, unsigned long min)h]j)}(h7void *mas_prev(struct ma_state *mas, unsigned long min)h](jq )}(hvoidh]hvoid}(hj@ChhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjindex** and **mas->last** to the range. Must hold rcu_read_lock or the write lock. Will reset mas to ma_start if the node is ma_none. Will stop on not searchable nodes. **Return** the previous value or ``NULL``.h](h)}(h**Parameters**h]j)}(hjFh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjFubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hjFh]hstruct ma_state *mas}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjFubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjFubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhMhjGubah}(h]h ]h"]h$]h&]uh1j1hjFubeh}(h]h ]h"]h$]h&]uh1jhjGhMhjFubj)}(h2``unsigned long min`` The minimum value to check. h](j")}(h``unsigned long min``h]jj)}(hj)Gh]hunsigned long min}(hj+GhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj'Gubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj#Gubj2)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hjBGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>GhMhj?Gubah}(h]h ]h"]h$]h&]uh1j1hj#Gubeh}(h]h ]h"]h$]h&]uh1jhj>GhMhjFubeh}(h]h ]h"]h$]h&]uh1jhjFubh)}(h**Description**h]j)}(hjdGh]h Description}(hjfGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbGubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjFubh)}(hSets **mas->index** and **mas->last** to the range. Must hold rcu_read_lock or the write lock. Will reset mas to ma_start if the node is ma_none. Will stop on not searchable nodes.h](hSets }(hjzGhhhNhNubj)}(h**mas->index**h]h mas->index}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzGubh and }(hjzGhhhNhNubj)}(h **mas->last**h]h mas->last}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzGubh to the range. Must hold rcu_read_lock or the write lock. Will reset mas to ma_start if the node is ma_none. Will stop on not searchable nodes.}(hjzGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjFubh)}(h **Return**h]j)}(hjGh]hReturn}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjFubh)}(hthe previous value or ``NULL``.h](hthe previous value or }(hjGhhhNhNubjj)}(h``NULL``h]hNULL}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjGubh.}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_prev (C function) c.mt_prevhNtauh1jhjhhhNhNubj)}(hhh](j)}(hNvoid * mt_prev (struct maple_tree *mt, unsigned long index, unsigned long min)h]j)}(hLvoid *mt_prev(struct maple_tree *mt, unsigned long index, unsigned long min)h](jq )}(hvoidh]hvoid}(hjHhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjHhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHhhhjHhMubj, )}(hjh]h*}(hj#HhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjHhhhjHhMubj)}(hmt_prevh]j)}(hmt_prevh]hmt_prev}(hj4HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Hubah}(h]h ](jjeh"]h$]h&]hhuh1jhjHhhhjHhMubj )}(h?(struct maple_tree *mt, unsigned long index, unsigned long min)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjPHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLHubj )}(h h]h }(hj]HhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLHubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjnHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkHubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjpHmodnameN classnameNj j )}j ]j )}j j6Hsb c.mt_prevasbuh1hhjLHubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLHubj, )}(hjh]h*}(hjHhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjLHubj)}(hmth]hmt}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLHubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjHHubj )}(hunsigned long indexh](jq )}(hunsignedh]hunsigned}(hjHhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjHubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHubjq )}(hlongh]hlong}(hjHhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjHubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHubj)}(hindexh]hindex}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjHHubj )}(hunsigned long minh](jq )}(hunsignedh]hunsigned}(hjIhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjIubj )}(h h]h }(hj!IhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjIubjq )}(hlongh]hlong}(hj/IhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjIubj )}(h h]h }(hj=IhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjIubj)}(hminh]hmin}(hjKIhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjHHubeh}(h]h ]h"]h$]h&]hhuh1j hjHhhhjHhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjGhhhjHhMubah}(h]jGah ](j j eh"]h$]h&]j j )j huh1jhjHhMhjGhhubj )}(hhh]h)}(h(get the previous value in the maple treeh]h(get the previous value in the maple tree}(hjuIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjrIhhubah}(h]h ]h"]h$]h&]uh1j hjGhhhjHhMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jIj) jIj* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long index`` The start index ``unsigned long min`` The minimum index to check **Description** Takes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rst **Return** The entry before **index** or ``NULL`` if nothing is found.h](h)}(h**Parameters**h]j)}(hjIh]h Parameters}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjIubj)}(hhh](j)}(h)``struct maple_tree *mt`` The maple tree h](j")}(h``struct maple_tree *mt``h]jj)}(hjIh]hstruct maple_tree *mt}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjIubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjIubj2)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjIubah}(h]h ]h"]h$]h&]uh1j1hjIubeh}(h]h ]h"]h$]h&]uh1jhjIhMhjIubj)}(h(``unsigned long index`` The start index h](j")}(h``unsigned long index``h]jj)}(hjIh]hunsigned long index}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjIubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjIubj2)}(hhh]h)}(hThe start indexh]hThe start index}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhMhjJubah}(h]h ]h"]h$]h&]uh1j1hjIubeh}(h]h ]h"]h$]h&]uh1jhjJhMhjIubj)}(h1``unsigned long min`` The minimum index to check h](j")}(h``unsigned long min``h]jj)}(hj(Jh]hunsigned long min}(hj*JhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj&Jubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj"Jubj2)}(hhh]h)}(hThe minimum index to checkh]hThe minimum index to check}(hjAJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=JhMhj>Jubah}(h]h ]h"]h$]h&]uh1j1hj"Jubeh}(h]h ]h"]h$]h&]uh1jhj=JhMhjIubeh}(h]h ]h"]h$]h&]uh1jhjIubh)}(h**Description**h]j)}(hjcJh]h Description}(hjeJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaJubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjIubh)}(hTakes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rsth]hTakes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rst}(hjyJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjIubh)}(h **Return**h]j)}(hjJh]hReturn}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjIubh)}(h;The entry before **index** or ``NULL`` if nothing is found.h](hThe entry before }(hjJhhhNhNubj)}(h **index**h]hindex}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubh or }(hjJhhhNhNubjj)}(h``NULL``h]hNULL}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjJubh if nothing is found.}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjIubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_pause (C function) c.mas_pausehNtauh1jhjhhhNhNubj)}(hhh](j)}(h%void mas_pause (struct ma_state *mas)h]j)}(h$void mas_pause(struct ma_state *mas)h](jq )}(hvoidh]hvoid}(hjJhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjJhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM ubj )}(h h]h }(hjKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJhhhjKhM ubj)}(h mas_pauseh]j)}(h mas_pauseh]h mas_pause}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubah}(h]h ](jjeh"]h$]h&]hhuh1jhjJhhhjKhM ubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj0KhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,Kubj )}(h h]h }(hj=KhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,Kubh)}(hhh]j)}(hma_stateh]hma_state}(hjNKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKKubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjPKmodnameN classnameNj j )}j ]j )}j jKsb c.mas_pauseasbuh1hhj,Kubj )}(h h]h }(hjnKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,Kubj, )}(hjh]h*}(hj|KhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj,Kubj)}(hmash]hmas}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,Kubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(Kubah}(h]h ]h"]h$]h&]hhuh1j hjJhhhjKhM ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjJhhhjKhM ubah}(h]jJah ](j j eh"]h$]h&]j j )j huh1jhjKhM hjJhhubj )}(hhh]h)}(h/Pause a mas_find/mas_for_each to drop the lock.h]h/Pause a mas_find/mas_for_each to drop the lock.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKhhubah}(h]h ]h"]h$]h&]uh1j hjJhhhjKhM ubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jKj) jKj* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct ma_state *mas`` The maple state to pause **Description** Some users need to pause a walk and drop the lock they're holding in order to yield to a higher priority thread or carry out an operation on an entry. Those users should call this function before they drop the lock. It resets the **mas** to be suitable for the next iteration of the loop after the user has reacquired the lock. If most entries found during a walk require you to call mas_pause(), the mt_for_each() iterator may be more appropriate.h](h)}(h**Parameters**h]j)}(hjKh]h Parameters}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubj)}(hhh]j)}(h2``struct ma_state *mas`` The maple state to pause h](j")}(h``struct ma_state *mas``h]jj)}(hjKh]hstruct ma_state *mas}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjKubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubj2)}(hhh]h)}(hThe maple state to pauseh]hThe maple state to pause}(hj LhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj LhMhj Lubah}(h]h ]h"]h$]h&]uh1j1hjKubeh}(h]h ]h"]h$]h&]uh1jhj LhMhjKubah}(h]h ]h"]h$]h&]uh1jhjKubh)}(h**Description**h]j)}(hj/Lh]h Description}(hj1LhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-Lubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubh)}(hXSome users need to pause a walk and drop the lock they're holding in order to yield to a higher priority thread or carry out an operation on an entry. Those users should call this function before they drop the lock. It resets the **mas** to be suitable for the next iteration of the loop after the user has reacquired the lock. If most entries found during a walk require you to call mas_pause(), the mt_for_each() iterator may be more appropriate.h](hSome users need to pause a walk and drop the lock they’re holding in order to yield to a higher priority thread or carry out an operation on an entry. Those users should call this function before they drop the lock. It resets the }(hjELhhhNhNubj)}(h**mas**h]hmas}(hjMLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjELubh to be suitable for the next iteration of the loop after the user has reacquired the lock. If most entries found during a walk require you to call mas_pause(), the mt_for_each() iterator may be more appropriate.}(hjELhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_find_setup (C function)c.mas_find_setuphNtauh1jhjhhhNhNubj)}(hhh](j)}(hKbool mas_find_setup (struct ma_state *mas, unsigned long max, void **entry)h]j)}(hJbool mas_find_setup(struct ma_state *mas, unsigned long max, void **entry)h](jq )}(hjt h]hbool}(hjLhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjLhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLhhhjLhMubj)}(hmas_find_setuph]j)}(hmas_find_setuph]hmas_find_setup}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubah}(h]h ](jjeh"]h$]h&]hhuh1jhjLhhhjLhMubj )}(h7(struct ma_state *mas, unsigned long max, void **entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubj )}(h h]h }(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubh)}(hhh]j)}(hma_stateh]hma_state}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjLmodnameN classnameNj j )}j ]j )}j jLsbc.mas_find_setupasbuh1hhjLubj )}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubj, )}(hjh]h*}(hjMhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjLubj)}(hmash]hmas}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjLubj )}(hunsigned long maxh](jq )}(hunsignedh]hunsigned}(hj4MhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj0Mubj )}(h h]h }(hjBMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0Mubjq )}(hlongh]hlong}(hjPMhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj0Mubj )}(h h]h }(hj^MhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0Mubj)}(hmaxh]hmax}(hjlMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0Mubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjLubj )}(h void **entryh](jq )}(hvoidh]hvoid}(hjMhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjMubj )}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjMubj, )}(hjh]h*}(hjMhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjMubj, )}(hjh]h*}(hjMhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjMubj)}(hentryh]hentry}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjLubeh}(h]h ]h"]h$]h&]hhuh1j hjLhhhjLhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj~LhhhjLhMubah}(h]jyLah ](j j eh"]h$]h&]j j )j huh1jhjLhMhj{Lhhubj )}(hhh]h)}(h(Internal function to set up mas_find*().h]h(Internal function to set up mas_find*().}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjMhhubah}(h]h ]h"]h$]h&]uh1j hj{LhhhjLhMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jMj) jMj* j+ j, uh1jhhhjhNhNubja )}(h**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long max`` The maximum index ``void **entry`` Pointer to the entry **Return** True if entry is the answer, false otherwise.h](h)}(h**Parameters**h]j)}(hjNh]h Parameters}(hj NhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjNubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hj&Nh]hstruct ma_state *mas}(hj(NhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj$Nubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj Nubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj?NhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;NhMhjindex up to ``max``. Otherwise, find the entry after mas->index.h](h?On the first call, find the entry at or after mas->index up to }(hj6PhhhNhNubjj)}(h``max``h]hmax}(hj>PhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj6Pubh-. Otherwise, find the entry after mas->index.}(hj6PhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMkhj3Phhubah}(h]h ]h"]h$]h&]uh1j hj Ohhhj&OhMvubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j`Pj) j`Pj* j+ j, uh1jhhhjhNhNubja )}(hX4**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long max`` The maximum value to check. **Description** Must hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set **mas->status** to ma_overflow. **Return** The entry or ``NULL``.h](h)}(h**Parameters**h]j)}(hjjPh]h Parameters}(hjlPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhPubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMohjdPubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hjPh]hstruct ma_state *mas}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjPubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMmhjPubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhMmhjPubah}(h]h ]h"]h$]h&]uh1j1hjPubeh}(h]h ]h"]h$]h&]uh1jhjPhMmhjPubj)}(h2``unsigned long max`` The maximum value to check. h](j")}(h``unsigned long max``h]jj)}(hjPh]hunsigned long max}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjPubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMnhjPubj2)}(hhh]h)}(hThe maximum value to check.h]hThe maximum value to check.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhMnhjPubah}(h]h ]h"]h$]h&]uh1j1hjPubeh}(h]h ]h"]h$]h&]uh1jhjPhMnhjPubeh}(h]h ]h"]h$]h&]uh1jhjdPubh)}(h**Description**h]j)}(hjPh]h Description}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMphjdPubh)}(hMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set **mas->status** to ma_overflow.h](hoMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set }(hjQhhhNhNubj)}(h**mas->status**h]h mas->status}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubh to ma_overflow.}(hjQhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMphjdPubh)}(h **Return**h]j)}(hj6Qh]hReturn}(hj8QhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4Qubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMthjdPubh)}(hThe entry or ``NULL``.h](h The entry or }(hjLQhhhNhNubjj)}(h``NULL``h]hNULL}(hjTQhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjLQubh.}(hjLQhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMthjdPubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_find_range (C function)c.mas_find_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(h?void * mas_find_range (struct ma_state *mas, unsigned long max)h]j)}(h=void *mas_find_range(struct ma_state *mas, unsigned long max)h](jq )}(hvoidh]hvoid}(hjQhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjQhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQhhhjQhMubj, )}(hjh]h*}(hjQhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjQhhhjQhMubj)}(hmas_find_rangeh]j)}(hmas_find_rangeh]hmas_find_range}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubah}(h]h ](jjeh"]h$]h&]hhuh1jhjQhhhjQhMubj )}(h)(struct ma_state *mas, unsigned long max)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQubj )}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQubh)}(hhh]j)}(hma_stateh]hma_state}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjQmodnameN classnameNj j )}j ]j )}j jQsbc.mas_find_rangeasbuh1hhjQubj )}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQubj, )}(hjh]h*}(hj#RhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjQubj)}(hmash]hmas}(hj0RhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjQubj )}(hunsigned long maxh](jq )}(hunsignedh]hunsigned}(hjIRhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjERubj )}(h h]h }(hjWRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjERubjq )}(hlongh]hlong}(hjeRhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjERubj )}(h h]h }(hjsRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjERubj)}(hmaxh]hmax}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjERubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjQubeh}(h]h ]h"]h$]h&]hhuh1j hjQhhhjQhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjQhhhjQhMubah}(h]jQah ](j j eh"]h$]h&]j j )j huh1jhjQhMhjQhhubj )}(hhh]h)}(hwOn the first call, find the entry at or after mas->index up to ``max``. Otherwise, advance to the next slot mas->index.h](h?On the first call, find the entry at or after mas->index up to }(hjRhhhNhNubjj)}(h``max``h]hmax}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjRubh1. Otherwise, advance to the next slot mas->index.}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjRhhubah}(h]h ]h"]h$]h&]uh1j hjQhhhjQhMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jRj) jRj* j+ j, uh1jhhhjhNhNubja )}(hX4**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long max`` The maximum value to check. **Description** Must hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set **mas->status** to ma_overflow. **Return** The entry or ``NULL``.h](h)}(h**Parameters**h]j)}(hjRh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjRubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hjRh]hstruct ma_state *mas}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jihjRubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjRubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMhjSubah}(h]h ]h"]h$]h&]uh1j1hjRubeh}(h]h ]h"]h$]h&]uh1jhjShMhjRubj)}(h2``unsigned long max`` The maximum value to check. h](j")}(h``unsigned long max``h]jj)}(hj7Sh]hunsigned long max}(hj9ShhhNhNubah}(h]h ]h"]h$]h&]uh1jihj5Subah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj1Subj2)}(hhh]h)}(hThe maximum value to check.h]hThe maximum value to check.}(hjPShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLShMhjMSubah}(h]h ]h"]h$]h&]uh1j1hj1Subeh}(h]h ]h"]h$]h&]uh1jhjLShMhjRubeh}(h]h ]h"]h$]h&]uh1jhjRubh)}(h**Description**h]j)}(hjrSh]h Description}(hjtShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpSubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjRubh)}(hMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set **mas->status** to ma_overflow.h](hoMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set }(hjShhhNhNubj)}(h**mas->status**h]h mas->status}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh to ma_overflow.}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjRubh)}(h **Return**h]j)}(hjSh]hReturn}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjRubh)}(hThe entry or ``NULL``.h](h The entry or }(hjShhhNhNubjj)}(h``NULL``h]hNULL}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jihjSubh.}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjRubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_find_rev_setup (C function)c.mas_find_rev_setuphNtauh1jhjhhhNhNubj)}(hhh](j)}(hObool mas_find_rev_setup (struct ma_state *mas, unsigned long min, void **entry)h]j)}(hNbool mas_find_rev_setup(struct ma_state *mas, unsigned long min, void **entry)h](jq )}(hjt h]hbool}(hjThhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjShhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjShhhjThMubj)}(hmas_find_rev_setuph]j)}(hmas_find_rev_setuph]hmas_find_rev_setup}(hj"ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubah}(h]h ](jjeh"]h$]h&]hhuh1jhjShhhjThMubj )}(h7(struct ma_state *mas, unsigned long min, void **entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj>ThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:Tubj )}(h h]h }(hjKThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:Tubh)}(hhh]j)}(hma_stateh]hma_state}(hj\ThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYTubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj^TmodnameN classnameNj j )}j ]j )}j j$Tsbc.mas_find_rev_setupasbuh1hhj:Tubj )}(h h]h }(hj|ThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:Tubj, )}(hjh]h*}(hjThhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj:Tubj)}(hmash]hmas}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:Tubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj6Tubj )}(hunsigned long minh](jq )}(hunsignedh]hunsigned}(hjThhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjTubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubjq )}(hlongh]hlong}(hjThhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjTubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj)}(hminh]hmin}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj6Tubj )}(h void **entryh](jq )}(hvoidh]hvoid}(hjUhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjTubj )}(h h]h }(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj, )}(hjh]h*}(hjUhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjTubj, )}(hjh]h*}(hj*UhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjTubj)}(hentryh]hentry}(hj7UhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj6Tubeh}(h]h ]h"]h$]h&]hhuh1j hjShhhjThMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjShhhjThMubah}(h]jSah ](j j eh"]h$]h&]j j )j huh1jhjThMhjShhubj )}(hhh]h)}(h,Internal function to set up mas_find_*_rev()h]h,Internal function to set up mas_find_*_rev()}(hjaUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj^Uhhubah}(h]h ]h"]h$]h&]uh1j hjShhhjThMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jyUj) jyUj* j+ j, uh1jhhhjhNhNubja )}(h**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long min`` The minimum index ``void **entry`` Pointer to the entry **Return** True if entry is the answer, false otherwise.h](h)}(h**Parameters**h]j)}(hjUh]h Parameters}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj}Uubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hjUh]hstruct ma_state *mas}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjUubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjUubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMhjUubah}(h]h ]h"]h$]h&]uh1j1hjUubeh}(h]h ]h"]h$]h&]uh1jhjUhMhjUubj)}(h(``unsigned long min`` The minimum index h](j")}(h``unsigned long min``h]jj)}(hjUh]hunsigned long min}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjUubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjUubj2)}(hhh]h)}(hThe minimum indexh]hThe minimum index}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMhjUubah}(h]h ]h"]h$]h&]uh1j1hjUubeh}(h]h ]h"]h$]h&]uh1jhjUhMhjUubj)}(h&``void **entry`` Pointer to the entry h](j")}(h``void **entry``h]jj)}(hjVh]h void **entry}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjVubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjVubj2)}(hhh]h)}(hPointer to the entryh]hPointer to the entry}(hj-VhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)VhMhj*Vubah}(h]h ]h"]h$]h&]uh1j1hjVubeh}(h]h ]h"]h$]h&]uh1jhj)VhMhjUubeh}(h]h ]h"]h$]h&]uh1jhj}Uubh)}(h **Return**h]j)}(hjOVh]hReturn}(hjQVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMVubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj}Uubh)}(h-True if entry is the answer, false otherwise.h]h-True if entry is the answer, false otherwise.}(hjeVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj}Uubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_find_rev (C function)c.mas_find_revhNtauh1jhjhhhNhNubj)}(hhh](j)}(h=void * mas_find_rev (struct ma_state *mas, unsigned long min)h]j)}(h;void *mas_find_rev(struct ma_state *mas, unsigned long min)h](jq )}(hvoidh]hvoid}(hjVhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjVhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjVhhhjVhMubj, )}(hjh]h*}(hjVhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjVhhhjVhMubj)}(h mas_find_revh]j)}(h mas_find_revh]h mas_find_rev}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubah}(h]h ](jjeh"]h$]h&]hhuh1jhjVhhhjVhMubj )}(h)(struct ma_state *mas, unsigned long min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjVubj )}(h h]h }(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjVubh)}(hhh]j)}(hma_stateh]hma_state}(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjVmodnameN classnameNj j )}j ]j )}j jVsbc.mas_find_revasbuh1hhjVubj )}(h h]h }(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjVubj, )}(?hjh]h*}(hj*WhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjVubj)}(hmash]hmas}(hj7WhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjVubj )}(hunsigned long minh](jq )}(hunsignedh]hunsigned}(hjPWhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjLWubj )}(h h]h }(hj^WhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLWubjq )}(hlongh]hlong}(hjlWhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjLWubj )}(h h]h }(hjzWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLWubj)}(hminh]hmin}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLWubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjVubeh}(h]h ]h"]h$]h&]hhuh1j hjVhhhjVhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjVhhhjVhMubah}(h]jVah ](j j eh"]h$]h&]j j )j huh1jhjVhMhjVhhubj )}(hhh]h)}(hOn the first call, find the first non-null entry at or below mas->index down to ``min``. Otherwise find the first non-null entry below mas->index down to ``min``.h](hPOn the first call, find the first non-null entry at or below mas->index down to }(hjWhhhNhNubjj)}(h``min``h]hmin}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjWubhC. Otherwise find the first non-null entry below mas->index down to }(hjWhhhNhNubjj)}(h``min``h]hmin}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjWubh.}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjWhhubah}(h]h ]h"]h$]h&]uh1j hjVhhhjVhMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jWj) jWj* j+ j, uh1jhhhjhNhNubja )}(hX5**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long min`` The minimum value to check. **Description** Must hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set **mas->status** to ma_underflow. **Return** The entry or ``NULL``.h](h)}(h**Parameters**h]j)}(hjWh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjWubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hjXh]hstruct ma_state *mas}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjXubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjXubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj0XhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,XhMhj-Xubah}(h]h ]h"]h$]h&]uh1j1hjXubeh}(h]h ]h"]h$]h&]uh1jhj,XhMhjXubj)}(h2``unsigned long min`` The minimum value to check. h](j")}(h``unsigned long min``h]jj)}(hjPXh]hunsigned long min}(hjRXhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjNXubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjJXubj2)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hjiXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjeXhMhjfXubah}(h]h ]h"]h$]h&]uh1j1hjJXubeh}(h]h ]h"]h$]h&]uh1jhjeXhMhjXubeh}(h]h ]h"]h$]h&]uh1jhjWubh)}(h**Description**h]j)}(hjXh]h Description}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjWubh)}(hMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set **mas->status** to ma_underflow.h](hoMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set }(hjXhhhNhNubj)}(h**mas->status**h]h mas->status}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh to ma_underflow.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjWubh)}(h **Return**h]j)}(hjXh]hReturn}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjWubh)}(hThe entry or ``NULL``.h](h The entry or }(hjXhhhNhNubjj)}(h``NULL``h]hNULL}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjXubh.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_find_range_rev (C function)c.mas_find_range_revhNtauh1jhjhhhNhNubj)}(hhh](j)}(hCvoid * mas_find_range_rev (struct ma_state *mas, unsigned long min)h]j)}(hAvoid *mas_find_range_rev(struct ma_state *mas, unsigned long min)h](jq )}(hvoidh]hvoid}(hjYhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjYhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hj*YhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYhhhj)YhMubj, )}(hjh]h*}(hj8YhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjYhhhj)YhMubj)}(hmas_find_range_revh]j)}(hmas_find_range_revh]hmas_find_range_rev}(hjIYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEYubah}(h]h ](jjeh"]h$]h&]hhuh1jhjYhhhj)YhMubj )}(h)(struct ma_state *mas, unsigned long min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjeYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaYubj )}(h h]h }(hjrYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaYubh)}(hhh]j)}(hma_stateh]hma_state}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjYmodnameN classnameNj j )}j ]j )}j jKYsbc.mas_find_range_revasbuh1hhjaYubj )}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaYubj, )}(hjh]h*}(hjYhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjaYubj)}(hmash]hmas}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaYubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj]Yubj )}(hunsigned long minh](jq )}(hunsignedh]hunsigned}(hjYhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjYubj )}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubjq )}(hlongh]hlong}(hjYhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjYubj )}(h h]h }(hjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubj)}(hminh]hmin}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj]Yubeh}(h]h ]h"]h$]h&]hhuh1j hjYhhhj)YhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjYhhhj)YhMubah}(h]jYah ](j j eh"]h$]h&]j j )j huh1jhj)YhMhjYhhubj )}(hhh]h)}(hOn the first call, find the first non-null entry at or below mas->index down to ``min``. Otherwise advance to the previous slot after mas->index down to ``min``.h](hPOn the first call, find the first non-null entry at or below mas->index down to }(hj9ZhhhNhNubjj)}(h``min``h]hmin}(hjAZhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj9ZubhB. Otherwise advance to the previous slot after mas->index down to }(hj9ZhhhNhNubjj)}(h``min``h]hmin}(hjSZhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj9Zubh.}(hj9ZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj6Zhhubah}(h]h ]h"]h$]h&]uh1j hjYhhhj)YhMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( juZj) juZj* j+ j, uh1jhhhjhNhNubja )}(hX5**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long min`` The minimum value to check. **Description** Must hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set **mas->status** to ma_underflow. **Return** The entry or ``NULL``.h](h)}(h**Parameters**h]j)}(hjZh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}Zubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjyZubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hjZh]hstruct ma_state *mas}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjZubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjZubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhjZubah}(h]h ]h"]h$]h&]uh1j1hjZubeh}(h]h ]h"]h$]h&]uh1jhjZhMhjZubj)}(h2``unsigned long min`` The minimum value to check. h](j")}(h``unsigned long min``h]jj)}(hjZh]hunsigned long min}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjZubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjZubj2)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhjZubah}(h]h ]h"]h$]h&]uh1j1hjZubeh}(h]h ]h"]h$]h&]uh1jhjZhMhjZubeh}(h]h ]h"]h$]h&]uh1jhjyZubh)}(h**Description**h]j)}(hj[h]h Description}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjyZubh)}(hMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set **mas->status** to ma_underflow.h](hoMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set }(hj([hhhNhNubj)}(h**mas->status**h]h mas->status}(hj0[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj([ubh to ma_underflow.}(hj([hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjyZubh)}(h **Return**h]j)}(hjK[h]hReturn}(hjM[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI[ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjyZubh)}(hThe entry or ``NULL``.h](h The entry or }(hja[hhhNhNubjj)}(h``NULL``h]hNULL}(hji[hhhNhNubah}(h]h ]h"]h$]h&]uh1jihja[ubh.}(hja[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjyZubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_erase (C function) c.mas_erasehNtauh1jhjhhhNhNubj)}(hhh](j)}(h'void * mas_erase (struct ma_state *mas)h]j)}(h%void *mas_erase(struct ma_state *mas)h](jq )}(hvoidh]hvoid}(hj[hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj[hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM2ubj )}(h h]h }(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj[hhhj[hM2ubj, )}(hjh]h*}(hj[hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj[hhhj[hM2ubj)}(h mas_eraseh]j)}(h mas_eraseh]h mas_erase}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj[hhhj[hM2ubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj[ubj )}(h h]h }(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj[ubh)}(hhh]j)}(hma_stateh]hma_state}(hj \hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj \modnameN classnameNj j )}j ]j )}j j[sb c.mas_eraseasbuh1hhj[ubj )}(h h]h }(hj*\hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj[ubj, )}(hjh]h*}(hj8\hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj[ubj)}(hmash]hmas}(hjE\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj[ubah}(h]h ]h"]h$]h&]hhuh1j hj[hhhj[hM2ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj[hhhj[hM2ubah}(h]j[ah ](j j eh"]h$]h&]j j )j huh1jhj[hM2hj[hhubj )}(hhh]h)}(hAFind the range in which index resides and erase the entire range.h]hAFind the range in which index resides and erase the entire range.}(hjo\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM(hjl\hhubah}(h]h ]h"]h$]h&]uh1j hj[hhhj[hM2ubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j\j) j\j* j+ j, uh1jhhhjhNhNubja )}(hX/**Parameters** ``struct ma_state *mas`` The maple state **Description** Must hold the write lock. Searches for **mas->index**, sets **mas->index** and **mas->last** to the range and erases that range. **Return** the entry that was erased or ``NULL``, **mas->index** and **mas->last** are updated.h](h)}(h**Parameters**h]j)}(hj\h]h Parameters}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM,hj\ubj)}(hhh]j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hj\h]hstruct ma_state *mas}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj\ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM*hj\ubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hM*hj\ubah}(h]h ]h"]h$]h&]uh1j1hj\ubeh}(h]h ]h"]h$]h&]uh1jhj\hM*hj\ubah}(h]h ]h"]h$]h&]uh1jhj\ubh)}(h**Description**h]j)}(hj\h]h Description}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM,hj\ubh)}(hMust hold the write lock. Searches for **mas->index**, sets **mas->index** and **mas->last** to the range and erases that range.h](h'Must hold the write lock. Searches for }(hj]hhhNhNubj)}(h**mas->index**h]h mas->index}(hj ]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubh, sets }(hj]hhhNhNubj)}(h**mas->index**h]h mas->index}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubh and }(hj]hhhNhNubj)}(h **mas->last**h]h mas->last}(hj-]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubh$ to the range and erases that range.}(hj]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM,hj\ubh)}(h **Return**h]j)}(hjH]h]hReturn}(hjJ]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjF]ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM0hj\ubh)}(hTthe entry that was erased or ``NULL``, **mas->index** and **mas->last** are updated.h](hthe entry that was erased or }(hj^]hhhNhNubjj)}(h``NULL``h]hNULL}(hjf]hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj^]ubh, }(hj^]hhhNhNubj)}(h**mas->index**h]h mas->index}(hjx]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^]ubh and }(hj^]hhhNhNubj)}(h **mas->last**h]h mas->last}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^]ubh are updated.}(hj^]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM0hj\ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_nomem (C function) c.mas_nomemhNtauh1jhjhhhNhNubj)}(hhh](j)}(h0bool mas_nomem (struct ma_state *mas, gfp_t gfp)h]j)}(h/bool mas_nomem(struct ma_state *mas, gfp_t gfp)h](jq )}(hjt h]hbool}(hj]hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj]hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMZubj )}(h h]h }(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]hhhj]hMZubj)}(h mas_nomemh]j)}(h mas_nomemh]h mas_nomem}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj]hhhj]hMZubj )}(h!(struct ma_state *mas, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]ubj )}(h h]h }(hj ^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]ubh)}(hhh]j)}(hma_stateh]hma_state}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj^modnameN classnameNj j )}j ]j )}j j]sb c.mas_nomemasbuh1hhj]ubj )}(h h]h }(hj=^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]ubj, )}(hjh]h*}(hjK^hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj]ubj)}(hmash]hmas}(hjX^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj]ubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hjt^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjq^ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjv^modnameN classnameNj j )}j ]j9^ c.mas_nomemasbuh1hhjm^ubj )}(h h]h }(hj^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm^ubj)}(hgfph]hgfp}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjm^ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj]ubeh}(h]h ]h"]h$]h&]hhuh1j hj]hhhj]hMZubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj]hhhj]hMZubah}(h]j]ah ](j j eh"]h$]h&]j j )j huh1jhj]hMZhj]hhubj )}(hhh]h)}(hsCheck if there was an error allocating and do the allocation if necessary If there are allocations, then free them.h]hsCheck if there was an error allocating and do the allocation if necessary If there are allocations, then free them.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMThj^hhubah}(h]h ]h"]h$]h&]uh1j hj]hhhj]hMZubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j^j) j^j* j+ j, uh1jhhhjhNhNubja )}(h**Parameters** ``struct ma_state *mas`` The maple state ``gfp_t gfp`` The GFP_FLAGS to use for allocations **Return** true on allocation, false otherwise.h](h)}(h**Parameters**h]j)}(hj^h]h Parameters}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMXhj^ubj)}(hhh](j)}(h)``struct ma_state *mas`` The maple state h](j")}(h``struct ma_state *mas``h]jj)}(hj _h]hstruct ma_state *mas}(hj _hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj _ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMVhj_ubj2)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj$_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj _hMVhj!_ubah}(h]h ]h"]h$]h&]uh1j1hj_ubeh}(h]h ]h"]h$]h&]uh1jhj _hMVhj_ubj)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j")}(h ``gfp_t gfp``h]jj)}(hjD_h]h gfp_t gfp}(hjF_hhhNhNubah}(h]h ]h"]h$]h&]uh1jihjB_ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMWhj>_ubj2)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hj]_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjY_hMWhjZ_ubah}(h]h ]h"]h$]h&]uh1j1hj>_ubeh}(h]h ]h"]h$]h&]uh1jhjY_hMWhj_ubeh}(h]h ]h"]h$]h&]uh1jhj^ubh)}(h **Return**h]j)}(hj_h]hReturn}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}_ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMYhj^ubh)}(h$true on allocation, false otherwise.h]h$true on allocation, false otherwise.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMXhj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_load (C function) c.mtree_loadhNtauh1jhjhhhNhNubj)}(hhh](j)}(h>void * mtree_load (struct maple_tree *mt, unsigned long index)h]j)}(hnubah}(h]h ]h"]h$]h&]uh1j1hj"nubeh}(h]h ]h"]h$]h&]uh1jhj=nhMhjmubj)}(h#``void *entry`` The entry to store h](j")}(h``void *entry``h]jj)}(hjanh]h void *entry}(hjcnhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj_nubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj[nubj2)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjznhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvnhMhjwnubah}(h]h ]h"]h$]h&]uh1j1hj[nubeh}(h]h ]h"]h$]h&]uh1jhjvnhMhjmubj)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j")}(h ``gfp_t gfp``h]jj)}(hjnh]h gfp_t gfp}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjnubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjnubj2)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMhjnubah}(h]h ]h"]h$]h&]uh1j1hjnubeh}(h]h ]h"]h$]h&]uh1jhjnhMhjmubeh}(h]h ]h"]h$]h&]uh1jhjmubh)}(h **Return**h]j)}(hjnh]hReturn}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjmubh)}(hv0 on success, -EEXISTS if the range is occupied, -EINVAL on invalid request, -ENOMEM if memory could not be allocated.h]hv0 on success, -EEXISTS if the range is occupied, -EINVAL on invalid request, -ENOMEM if memory could not be allocated.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjmubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_alloc_cyclic (C function)c.mtree_alloc_cyclichNtauh1jhjhhhNhNubj)}(hhh](j)}(hint mtree_alloc_cyclic (struct maple_tree *mt, unsigned long *startp, void *entry, unsigned long range_lo, unsigned long range_hi, unsigned long *next, gfp_t gfp)h]j)}(hint mtree_alloc_cyclic(struct maple_tree *mt, unsigned long *startp, void *entry, unsigned long range_lo, unsigned long range_hi, unsigned long *next, gfp_t gfp)h](jq )}(hinth]hint}(hjohhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjohhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMBubj )}(h h]h }(hj)ohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjohhhj(ohMBubj)}(hmtree_alloc_cyclich]j)}(hmtree_alloc_cyclich]hmtree_alloc_cyclic}(hj;ohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7oubah}(h]h ](jjeh"]h$]h&]hhuh1jhjohhhj(ohMBubj )}(h(struct maple_tree *mt, unsigned long *startp, void *entry, unsigned long range_lo, unsigned long range_hi, unsigned long *next, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjWohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjSoubj )}(h h]h }(hjdohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjSoubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjuohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjroubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjwomodnameN classnameNj j )}j ]j )}j j=osbc.mtree_alloc_cyclicasbuh1hhjSoubj )}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjSoubj, )}(hjh]h*}(hjohhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjSoubj)}(hmth]hmt}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSoubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjOoubj )}(hunsigned long *startph](jq )}(hunsignedh]hunsigned}(hjohhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjoubj )}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubjq )}(hlongh]hlong}(hjohhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjoubj )}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj, )}(hjh]h*}(hjphhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjoubj)}(hstartph]hstartp}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjOoubj )}(h void *entryh](jq )}(hvoidh]hvoid}(hj'phhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj#pubj )}(h h]h }(hj5phhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#pubj, )}(hjh]h*}(hjCphhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj#pubj)}(hentryh]hentry}(hjPphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#pubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjOoubj )}(hunsigned long range_loh](jq )}(hunsignedh]hunsigned}(hjiphhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjepubj )}(h h]h }(hjwphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjepubjq )}(hlongh]hlong}(hjphhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjepubj )}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjepubj)}(hrange_loh]hrange_lo}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjepubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjOoubj )}(hunsigned long range_hih](jq )}(hunsignedh]hunsigned}(hjphhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjpubj )}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubjq )}(hlongh]hlong}(hjphhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjpubj )}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubj)}(hrange_hih]hrange_hi}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjOoubj )}(hunsigned long *nexth](jq )}(hunsignedh]hunsigned}(hj qhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjqubj )}(h h]h }(hjqhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqubjq )}(hlongh]hlong}(hj'qhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjqubj )}(h h]h }(hj5qhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqubj, )}(hjh]h*}(hjCqhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjqubj)}(hnexth]hnext}(hjPqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjOoubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hjlqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiqubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjnqmodnameN classnameNj j )}j ]joc.mtree_alloc_cyclicasbuh1hhjequbj )}(h h]h }(hjqhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjequbj)}(hgfph]hgfp}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjequbeh}(h]h ]h"]h$]h&]noemphhhuh1j hjOoubeh}(h]h ]h"]h$]h&]hhuh1j hjohhhj(ohMBubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjohhhj(ohMBubah}(h]j oah ](j j eh"]h$]h&]j j )j huh1jhj(ohMBhjohhubj )}(hhh]h)}(h/Find somewhere to store this entry in the tree.h]h/Find somewhere to store this entry in the tree.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM,hjqhhubah}(h]h ]h"]h$]h&]uh1j hjohhhj(ohMBubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jqj) jqj* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct maple_tree *mt`` The maple tree. ``unsigned long *startp`` Pointer to ID. ``void *entry`` The entry to store. ``unsigned long range_lo`` Lower bound of range to search. ``unsigned long range_hi`` Upper bound of range to search. ``unsigned long *next`` Pointer to next ID to allocate. ``gfp_t gfp`` The GFP_FLAGS to use for allocations. **Description** Finds an empty entry in **mt** after **next**, stores the new index into the **id** pointer, stores the entry at that index, then updates **next**. **mt** must be initialized with the MT_FLAGS_ALLOC_RANGE flag. **Context** Any context. Takes and releases the mt.lock. May sleep if the **gfp** flags permit. **Return** 0 if the allocation succeeded without wrapping, 1 if the allocation succeeded after wrapping, -ENOMEM if memory could not be allocated, -EINVAL if **mt** cannot be used, or -EBUSY if there are no free entries.h](h)}(h**Parameters**h]j)}(hjqh]h Parameters}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM0hjqubj)}(hhh](j)}(h*``struct maple_tree *mt`` The maple tree. h](j")}(h``struct maple_tree *mt``h]jj)}(hjrh]hstruct maple_tree *mt}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjrubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM-hjqubj2)}(hhh]h)}(hThe maple tree.h]hThe maple tree.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhM-hjrubah}(h]h ]h"]h$]h&]uh1j1hjqubeh}(h]h ]h"]h$]h&]uh1jhjrhM-hjqubj)}(h)``unsigned long *startp`` Pointer to ID. h](j")}(h``unsigned long *startp``h]jj)}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj:rubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM.hj6rubj2)}(hhh]h)}(hPointer to ID.h]hPointer to ID.}(hjUrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQrhM.hjRrubah}(h]h ]h"]h$]h&]uh1j1hj6rubeh}(h]h ]h"]h$]h&]uh1jhjQrhM.hjqubj)}(h$``void *entry`` The entry to store. h](j")}(h``void *entry``h]jj)}(hjurh]h void *entry}(hjwrhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjsrubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM1hjorubj2)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhM1hjrubah}(h]h ]h"]h$]h&]uh1j1hjorubeh}(h]h ]h"]h$]h&]uh1jhjrhM1hjqubj)}(h;``unsigned long range_lo`` Lower bound of range to search. h](j")}(h``unsigned long range_lo``h]jj)}(hjrh]hunsigned long range_lo}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjrubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM/hjrubj2)}(hhh]h)}(hLower bound of range to search.h]hLower bound of range to search.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhM/hjrubah}(h]h ]h"]h$]h&]uh1j1hjrubeh}(h]h ]h"]h$]h&]uh1jhjrhM/hjqubj)}(h;``unsigned long range_hi`` Upper bound of range to search. h](j")}(h``unsigned long range_hi``h]jj)}(hjrh]hunsigned long range_hi}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjrubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM0hjrubj2)}(hhh]h)}(hUpper bound of range to search.h]hUpper bound of range to search.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhM0hjrubah}(h]h ]h"]h$]h&]uh1j1hjrubeh}(h]h ]h"]h$]h&]uh1jhjrhM0hjqubj)}(h8``unsigned long *next`` Pointer to next ID to allocate. h](j")}(h``unsigned long *next``h]jj)}(hj sh]hunsigned long *next}(hj"shhhNhNubah}(h]h ]h"]h$]h&]uh1jihjsubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM2hjsubj2)}(hhh]h)}(hPointer to next ID to allocate.h]hPointer to next ID to allocate.}(hj9shhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5shM2hj6subah}(h]h ]h"]h$]h&]uh1j1hjsubeh}(h]h ]h"]h$]h&]uh1jhj5shM2hjqubj)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j")}(h ``gfp_t gfp``h]jj)}(hjYsh]h gfp_t gfp}(hj[shhhNhNubah}(h]h ]h"]h$]h&]uh1jihjWsubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM3hjSsubj2)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjrshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnshM3hjosubah}(h]h ]h"]h$]h&]uh1j1hjSsubeh}(h]h ]h"]h$]h&]uh1jhjnshM3hjqubeh}(h]h ]h"]h$]h&]uh1jhjqubh)}(h**Description**h]j)}(hjsh]h Description}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM5hjqubh)}(hFinds an empty entry in **mt** after **next**, stores the new index into the **id** pointer, stores the entry at that index, then updates **next**.h](hFinds an empty entry in }(hjshhhNhNubj)}(h**mt**h]hmt}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubh after }(hjshhhNhNubj)}(h**next**h]hnext}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubh , stores the new index into the }(hjshhhNhNubj)}(h**id**h]hid}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubh7 pointer, stores the entry at that index, then updates }(hjshhhNhNubj)}(h**next**h]hnext}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubh.}(hjshhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM5hjqubh)}(h>**mt** must be initialized with the MT_FLAGS_ALLOC_RANGE flag.h](j)}(h**mt**h]hmt}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubh8 must be initialized with the MT_FLAGS_ALLOC_RANGE flag.}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM8hjqubh)}(h **Context**h]j)}(hj th]hContext}(hj"thhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM:hjqubh)}(hUAny context. Takes and releases the mt.lock. May sleep if the **gfp** flags permit.h](h@Any context. Takes and releases the mt.lock. May sleep if the }(hj6thhhNhNubj)}(h**gfp**h]hgfp}(hj>thhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6tubh flags permit.}(hj6thhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM:hjqubh)}(h **Return**h]j)}(hjYth]hReturn}(hj[thhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWtubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM=hjqubh)}(h0 if the allocation succeeded without wrapping, 1 if the allocation succeeded after wrapping, -ENOMEM if memory could not be allocated, -EINVAL if **mt** cannot be used, or -EBUSY if there are no free entries.h](h0 if the allocation succeeded without wrapping, 1 if the allocation succeeded after wrapping, -ENOMEM if memory could not be allocated, -EINVAL if }(hjothhhNhNubj)}(h**mt**h]hmt}(hjwthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjotubh8 cannot be used, or -EBUSY if there are no free entries.}(hjothhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM=hjqubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_erase (C function) c.mtree_erasehNtauh1jhjhhhNhNubj)}(hhh](j)}(h?void * mtree_erase (struct maple_tree *mt, unsigned long index)h]j)}(h=void *mtree_erase(struct maple_tree *mt, unsigned long index)h](jq )}(hvoidh]hvoid}(hjthhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjthhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjthhhjthMubj, )}(hjh]h*}(hjthhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjthhhjthMubj)}(h mtree_eraseh]j)}(h mtree_eraseh]h mtree_erase}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubah}(h]h ](jjeh"]h$]h&]hhuh1jhjthhhjthMubj )}(h,(struct maple_tree *mt, unsigned long index)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubj )}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjumodnameN classnameNj j )}j ]j )}j jtsb c.mtree_eraseasbuh1hhjtubj )}(h h]h }(hj8uhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubj, )}(hjh]h*}(hjFuhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjtubj)}(hmth]hmt}(hjSuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjtubj )}(hunsigned long indexh](jq )}(hunsignedh]hunsigned}(hjluhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhuubj )}(h h]h }(hjzuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhuubjq )}(hlongh]hlong}(hjuhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhuubj )}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhuubj)}(hindexh]hindex}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhuubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjtubeh}(h]h ]h"]h$]h&]hhuh1j hjthhhjthMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjthhhjthMubah}(h]jtah ](j j eh"]h$]h&]j j )j huh1jhjthMhjthhubj )}(hhh]h)}(h)Find an index and erase the entire range.h]h)Find an index and erase the entire range.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM~hjuhhubah}(h]h ]h"]h$]h&]uh1j hjthhhjthMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( juj) juj* j+ j, uh1jhhhjhNhNubja )}(hXH**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long index`` The index to erase **Description** Erasing is the same as a walk to an entry then a store of a NULL to that ENTIRE range. In fact, it is implemented as such using the advanced API. **Return** The entry stored at the **index** or ``NULL``h](h)}(h**Parameters**h]j)}(hjuh]h Parameters}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjuubj)}(hhh](j)}(h)``struct maple_tree *mt`` The maple tree h](j")}(h``struct maple_tree *mt``h]jj)}(hjvh]hstruct maple_tree *mt}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj vubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj vubj2)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hj(vhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$vhMhj%vubah}(h]h ]h"]h$]h&]uh1j1hj vubeh}(h]h ]h"]h$]h&]uh1jhj$vhMhjvubj)}(h+``unsigned long index`` The index to erase h](j")}(h``unsigned long index``h]jj)}(hjHvh]hunsigned long index}(hjJvhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjFvubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjBvubj2)}(hhh]h)}(hThe index to eraseh]hThe index to erase}(hjavhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]vhMhj^vubah}(h]h ]h"]h$]h&]uh1j1hjBvubeh}(h]h ]h"]h$]h&]uh1jhj]vhMhjvubeh}(h]h ]h"]h$]h&]uh1jhjuubh)}(h**Description**h]j)}(hjvh]h Description}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjuubh)}(hErasing is the same as a walk to an entry then a store of a NULL to that ENTIRE range. In fact, it is implemented as such using the advanced API.h]hErasing is the same as a walk to an entry then a store of a NULL to that ENTIRE range. In fact, it is implemented as such using the advanced API.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjuubh)}(h **Return**h]j)}(hjvh]hReturn}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjuubh)}(h-The entry stored at the **index** or ``NULL``h](hThe entry stored at the }(hjvhhhNhNubj)}(h **index**h]hindex}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubh or }(hjvhhhNhNubjj)}(h``NULL``h]hNULL}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjvubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjuubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j__mt_dup (C function) c.__mt_duphNtauh1jhjhhhNhNubj)}(hhh](j)}(hGint __mt_dup (struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)h]j)}(hFint __mt_dup(struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)h](jq )}(hinth]hint}(hjwhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj whhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMlubj )}(h h]h }(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj whhhjwhMlubj)}(h__mt_duph]j)}(h__mt_duph]h__mt_dup}(hj0whhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,wubah}(h]h ](jjeh"]h$]h&]hhuh1jhj whhhjwhMlubj )}(h:(struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjLwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHwubj )}(h h]h }(hjYwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHwubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjgwubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjlwmodnameN classnameNj j )}j ]j )}j j2wsb c.__mt_dupasbuh1hhjHwubj )}(h h]h }(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHwubj, )}(hjh]h*}(hjwhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjHwubj)}(hmth]hmt}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHwubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjDwubj )}(hstruct maple_tree *newh](j )}(hj h]hstruct}(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjwubj )}(h h]h }(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjwubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjwmodnameN classnameNj j )}j ]jw c.__mt_dupasbuh1hhjwubj )}(h h]h }(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjwubj, )}(hjh]h*}(hjxhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjwubj)}(hnewh]hnew}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjDwubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hj1xhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.xubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj3xmodnameN classnameNj j )}j ]jw c.__mt_dupasbuh1hhj*xubj )}(h h]h }(hjOxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*xubj)}(hgfph]hgfp}(hj]xhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*xubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjDwubeh}(h]h ]h"]h$]h&]hhuh1j hj whhhjwhMlubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjwhhhjwhMlubah}(h]jwah ](j j eh"]h$]h&]j j )j huh1jhjwhMlhjwhhubj )}(hhh]h)}(hDuplicate an entire maple treeh]hDuplicate an entire maple tree}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMXhjxhhubah}(h]h ]h"]h$]h&]uh1j hjwhhhjwhMlubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jxj) jxj* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct maple_tree *mt`` The source maple tree ``struct maple_tree *new`` The new maple tree ``gfp_t gfp`` The GFP_FLAGS to use for allocations **Description** This function duplicates a maple tree in Depth-First Search (DFS) pre-order traversal. It uses memcpy() to copy nodes in the source tree and allocate new child nodes in non-leaf nodes. The new node is exactly the same as the source node except for all the addresses stored in it. It will be faster than traversing all elements in the source tree and inserting them one by one into the new tree. The user needs to ensure that the attributes of the source tree and the new tree are the same, and the new tree needs to be an empty tree, otherwise -EINVAL will be returned. Note that the user needs to manually lock the source tree and the new tree. **Return** 0 on success, -ENOMEM if memory could not be allocated, -EINVAL If the attributes of the two trees are different or the new tree is not an empty tree.h](h)}(h**Parameters**h]j)}(hjxh]h Parameters}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM\hjxubj)}(hhh](j)}(h0``struct maple_tree *mt`` The source maple tree h](j")}(h``struct maple_tree *mt``h]jj)}(hjxh]hstruct maple_tree *mt}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjxubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMYhjxubj2)}(hhh]h)}(hThe source maple treeh]hThe source maple tree}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhMYhjxubah}(h]h ]h"]h$]h&]uh1j1hjxubeh}(h]h ]h"]h$]h&]uh1jhjxhMYhjxubj)}(h.``struct maple_tree *new`` The new maple tree h](j")}(h``struct maple_tree *new``h]jj)}(hjyh]hstruct maple_tree *new}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjxubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMZhjxubj2)}(hhh]h)}(hThe new maple treeh]hThe new maple tree}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhMZhjyubah}(h]h ]h"]h$]h&]uh1j1hjxubeh}(h]h ]h"]h$]h&]uh1jhjyhMZhjxubj)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j")}(h ``gfp_t gfp``h]jj)}(hj:yh]h gfp_t gfp}(hjzmodnameN classnameNj j )}j ]j )}j jzsb c.mtree_dupasbuh1hhjzubj )}(h h]h }(hj\zhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzubj, )}(hjh]h*}(hjjzhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjzubj)}(hmth]hmt}(hjwzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjzubj )}(hstruct maple_tree *newh](j )}(hj h]hstruct}(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzubj )}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjzmodnameN classnameNj j )}j ]jXz c.mtree_dupasbuh1hhjzubj )}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzubj, )}(hjh]h*}(hjzhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjzubj)}(hnewh]hnew}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjzubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj{modnameN classnameNj j )}j ]jXz c.mtree_dupasbuh1hhjzubj )}(h h]h }(hj!{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzubj)}(hgfph]hgfp}(hj/{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjzubeh}(h]h ]h"]h$]h&]hhuh1j hjyhhhjyhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjyhhhjyhMubah}(h]jyah ](j j eh"]h$]h&]j j )j huh1jhjyhMhjyhhubj )}(hhh]h)}(hDuplicate an entire maple treeh]hDuplicate an entire maple tree}(hjY{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM~hjV{hhubah}(h]h ]h"]h$]h&]uh1j hjyhhhjyhMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jq{j) jq{j* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct maple_tree *mt`` The source maple tree ``struct maple_tree *new`` The new maple tree ``gfp_t gfp`` The GFP_FLAGS to use for allocations **Description** This function duplicates a maple tree in Depth-First Search (DFS) pre-order traversal. It uses memcpy() to copy nodes in the source tree and allocate new child nodes in non-leaf nodes. The new node is exactly the same as the source node except for all the addresses stored in it. It will be faster than traversing all elements in the source tree and inserting them one by one into the new tree. The user needs to ensure that the attributes of the source tree and the new tree are the same, and the new tree needs to be an empty tree, otherwise -EINVAL will be returned. **Return** 0 on success, -ENOMEM if memory could not be allocated, -EINVAL If the attributes of the two trees are different or the new tree is not an empty tree.h](h)}(h**Parameters**h]j)}(hj{{h]h Parameters}(hj}{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy{ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhju{ubj)}(hhh](j)}(h0``struct maple_tree *mt`` The source maple tree h](j")}(h``struct maple_tree *mt``h]jj)}(hj{h]hstruct maple_tree *mt}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj{ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj{ubj2)}(hhh]h)}(hThe source maple treeh]hThe source maple tree}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMhj{ubah}(h]h ]h"]h$]h&]uh1j1hj{ubeh}(h]h ]h"]h$]h&]uh1jhj{hMhj{ubj)}(h.``struct maple_tree *new`` The new maple tree h](j")}(h``struct maple_tree *new``h]jj)}(hj{h]hstruct maple_tree *new}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj{ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj{ubj2)}(hhh]h)}(hThe new maple treeh]hThe new maple tree}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMhj{ubah}(h]h ]h"]h$]h&]uh1j1hj{ubeh}(h]h ]h"]h$]h&]uh1jhj{hMhj{ubj)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j")}(h ``gfp_t gfp``h]jj)}(hj |h]h gfp_t gfp}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj |ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj|ubj2)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hj%|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!|hMhj"|ubah}(h]h ]h"]h$]h&]uh1j1hj|ubeh}(h]h ]h"]h$]h&]uh1jhj!|hMhj{ubeh}(h]h ]h"]h$]h&]uh1jhju{ubh)}(h**Description**h]j)}(hjG|h]h Description}(hjI|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjE|ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhju{ubh)}(hX9This function duplicates a maple tree in Depth-First Search (DFS) pre-order traversal. It uses memcpy() to copy nodes in the source tree and allocate new child nodes in non-leaf nodes. The new node is exactly the same as the source node except for all the addresses stored in it. It will be faster than traversing all elements in the source tree and inserting them one by one into the new tree. The user needs to ensure that the attributes of the source tree and the new tree are the same, and the new tree needs to be an empty tree, otherwise -EINVAL will be returned.h]hX9This function duplicates a maple tree in Depth-First Search (DFS) pre-order traversal. It uses memcpy() to copy nodes in the source tree and allocate new child nodes in non-leaf nodes. The new node is exactly the same as the source node except for all the addresses stored in it. It will be faster than traversing all elements in the source tree and inserting them one by one into the new tree. The user needs to ensure that the attributes of the source tree and the new tree are the same, and the new tree needs to be an empty tree, otherwise -EINVAL will be returned.}(hj]|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhju{ubh)}(h **Return**h]j)}(hjn|h]hReturn}(hjp|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl|ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhju{ubh)}(h0 on success, -ENOMEM if memory could not be allocated, -EINVAL If the attributes of the two trees are different or the new tree is not an empty tree.h]h0 on success, -ENOMEM if memory could not be allocated, -EINVAL If the attributes of the two trees are different or the new tree is not an empty tree.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhju{ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j__mt_destroy (C function)c.__mt_destroyhNtauh1jhjhhhNhNubj)}(hhh](j)}(h)void __mt_destroy (struct maple_tree *mt)h]j)}(h(void __mt_destroy(struct maple_tree *mt)h](jq )}(hvoidh]hvoid}(hj|hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj|hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|hhhj|hMubj)}(h __mt_destroyh]j)}(h __mt_destroyh]h __mt_destroy}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj|hhhj|hMubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|ubj )}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|ubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj }ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj}modnameN classnameNj j )}j ]j )}j j|sbc.__mt_destroyasbuh1hhj|ubj )}(h h]h }(hj.}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|ubj, )}(hjh]h*}(hj<}hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hj|ubj)}(hmth]hmt}(hjI}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj|ubah}(h]h ]h"]h$]h&]hhuh1j hj|hhhj|hMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj|hhhj|hMubah}(h]j|ah ](j j eh"]h$]h&]j j )j huh1jhj|hMhj|hhubj )}(hhh]h)}(h/Walk and free all nodes of a locked maple tree.h]h/Walk and free all nodes of a locked maple tree.}(hjs}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjp}hhubah}(h]h ]h"]h$]h&]uh1j hj|hhhj|hMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j}j) j}j* j+ j, uh1jhhhjhNhNubja )}(h^**Parameters** ``struct maple_tree *mt`` The maple tree **Note** Does not handle locking.h](h)}(h**Parameters**h]j)}(hj}h]h Parameters}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj}ubj)}(hhh]j)}(h)``struct maple_tree *mt`` The maple tree h](j")}(h``struct maple_tree *mt``h]jj)}(hj}h]hstruct maple_tree *mt}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj}ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj}ubj2)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hMhj}ubah}(h]h ]h"]h$]h&]uh1j1hj}ubeh}(h]h ]h"]h$]h&]uh1jhj}hMhj}ubah}(h]h ]h"]h$]h&]uh1jhj}ubh)}(h**Note**h]j)}(hj}h]hNote}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj}ubh)}(hDoes not handle locking.h]hDoes not handle locking.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_destroy (C function)c.mtree_destroyhNtauh1jhjhhhNhNubj)}(hhh](j)}(h*void mtree_destroy (struct maple_tree *mt)h]j)}(h)void mtree_destroy(struct maple_tree *mt)h](jq )}(hvoidh]hvoid}(hj4~hhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hj0~hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjC~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0~hhhjB~hMubj)}(h mtree_destroyh]j)}(h mtree_destroyh]h mtree_destroy}(hjU~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ~ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj0~hhhjB~hMubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjq~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm~ubj )}(h h]h }(hj~~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm~ubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj~modnameN classnameNj j )}j ]j )}j jW~sbc.mtree_destroyasbuh1hhjm~ubj )}(h h]h }(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm~ubj, )}(hjh]h*}(hj~hhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjm~ubj)}(hmth]hmt}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjm~ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hji~ubah}(h]h ]h"]h$]h&]hhuh1j hj0~hhhjB~hMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj,~hhhjB~hMubah}(h]j'~ah ](j j eh"]h$]h&]j j )j huh1jhjB~hMhj)~hhubj )}(hhh]h)}(hDestroy a maple treeh]hDestroy a maple tree}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj~hhubah}(h]h ]h"]h$]h&]uh1j hj)~hhhjB~hMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j j) j j* j+ j, uh1jhhhjhNhNubja )}(h**Parameters** ``struct maple_tree *mt`` The maple tree **Description** Frees all resources used by the tree. Handles locking.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjubj)}(hhh]j)}(h)``struct maple_tree *mt`` The maple tree h](j")}(h``struct maple_tree *mt``h]jj)}(hj5h]hstruct maple_tree *mt}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jihj3ubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj/ubj2)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhMhjKubah}(h]h ]h"]h$]h&]uh1j1hj/ubeh}(h]h ]h"]h$]h&]uh1jhjJhMhj,ubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjph]h Description}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjubh)}(h7Frees all resources used by the tree. Handles locking.h]h7Frees all resources used by the tree. Handles locking.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_find (C function) c.mt_findhNtauh1jhjhhhNhNubj)}(hhh](j)}(hOvoid * mt_find (struct maple_tree *mt, unsigned long *index, unsigned long max)h]j)}(hMvoid *mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max)h](jq )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj, )}(hjh]h*}(hjhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjhhhjhMubj)}(hmt_findh]j)}(hmt_findh]hmt_find}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMubj )}(h@(struct maple_tree *mt, unsigned long *index, unsigned long max)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetjmodnameN classnameNj j )}j ]j )}j jsb c.mt_findasbuh1hhjubj )}(h h]h }(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj, )}(hjh]h*}(hjKhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjubj)}(hmth]hmt}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long *indexh](jq )}(hunsignedh]hunsigned}(hjqhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjmubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmubjq )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjmubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmubj, )}(hjh]h*}(hjhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjmubj)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long maxh](jq )}(hunsignedh]hunsigned}(hjπhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjˀubj )}(h h]h }(hj݀hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjˀubjq )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjˀubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjˀubj)}(hmaxh]hmax}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjˀubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhMubah}(h]jah ](j j eh"]h$]h&]j j )j huh1jhjhMhjhhubj )}(hhh]h)}(h1Search from the start up until an entry is found.h]h1Search from the start up until an entry is found.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj.hhubah}(h]h ]h"]h$]h&]uh1j hjhhhjhMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( jIj) jIj* j+ j, uh1jhhhjhNhNubja )}(hX|**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long *index`` Pointer which contains the start location of the search ``unsigned long max`` The maximum value of the search range **Description** Takes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rst In case that an entry is found **index** is updated to point to the next possible entry independent whether the found entry is occupying a single index or a range if indices. **Return** The entry at or after the **index** or ``NULL``h](h)}(h**Parameters**h]j)}(hjSh]h Parameters}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjMubj)}(hhh](j)}(h)``struct maple_tree *mt`` The maple tree h](j")}(h``struct maple_tree *mt``h]jj)}(hjrh]hstruct maple_tree *mt}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jihjpubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjlubj2)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjlubeh}(h]h ]h"]h$]h&]uh1jhjhMhjiubj)}(hQ``unsigned long *index`` Pointer which contains the start location of the search h](j")}(h``unsigned long *index``h]jj)}(hjh]hunsigned long *index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjubj2)}(hhh]h)}(h7Pointer which contains the start location of the searchh]h7Pointer which contains the start location of the search}(hjāhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjiubj)}(h<``unsigned long max`` The maximum value of the search range h](j")}(h``unsigned long max``h]jj)}(hjh]hunsigned long max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjށubj2)}(hhh]h)}(h%The maximum value of the search rangeh]h%The maximum value of the search range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjށubeh}(h]h ]h"]h$]h&]uh1jhjhMhjiubeh}(h]h ]h"]h$]h&]uh1jhjMubh)}(h**Description**h]j)}(hjh]h Description}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjMubh)}(hTakes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rsth]hTakes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rst}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjMubh)}(hIn case that an entry is found **index** is updated to point to the next possible entry independent whether the found entry is occupying a single index or a range if indices.h](hIn case that an entry is found }(hjDhhhNhNubj)}(h **index**h]hindex}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubh is updated to point to the next possible entry independent whether the found entry is occupying a single index or a range if indices.}(hjDhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjMubh)}(h **Return**h]j)}(hjgh]hReturn}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjMubh)}(h/The entry at or after the **index** or ``NULL``h](hThe entry at or after the }(hj}hhhNhNubj)}(h **index**h]hindex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubh or }(hj}hhhNhNubjj)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihj}ubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjMubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_find_after (C function)c.mt_find_afterhNtauh1jhjhhhNhNubj)}(hhh](j)}(hUvoid * mt_find_after (struct maple_tree *mt, unsigned long *index, unsigned long max)h]j)}(hSvoid *mt_find_after(struct maple_tree *mt, unsigned long *index, unsigned long max)h](jq )}(hvoidh]hvoid}(hĵhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjȂhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjۂhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjȂhhhjڂhMubj, )}(hjh]h*}(hjhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjȂhhhjڂhMubj)}(h mt_find_afterh]j)}(h mt_find_afterh]h mt_find_after}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjȂhhhjڂhMubj )}(h@(struct maple_tree *mt, unsigned long *index, unsigned long max)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&] refdomainj" reftypej reftargetj6modnameN classnameNj j )}j ]j )}j jsbc.mt_find_afterasbuh1hhjubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj, )}(hjh]h*}(hjbhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjubj)}(hmth]hmt}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long *indexh](jq )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjq )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj, )}(hjh]h*}(hjhhhNhNubah}(h]h ]j7 ah"]h$]h&]uh1j+ hjubj)}(hindexh]hindex}(hj̓hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long maxh](jq )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjq )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j} ah"]h$]h&]uh1jp hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hmaxh]hmax}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjȂhhhjڂhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjĂhhhjڂhMubah}(h]jah ](j j eh"]h$]h&]j j )j huh1jhjڂhMhjhhubj )}(hhh]h)}(h1Search from the start up until an entry is found.h]h1Search from the start up until an entry is found.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjEhhubah}(h]h ]h"]h$]h&]uh1j hjhhhjڂhMubeh}(h]h ](j" functioneh"]h$]h&]j' j" j( j`j) j`j* j+ j, uh1jhhhjhNhNubja )}(hX**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long *index`` Pointer which contains the start location of the search ``unsigned long max`` The maximum value to check **Description** Same as mt_find() except that it checks **index** for 0 before searching. If **index** == 0, the search is aborted. This covers a wrap around of **index** to 0 in an iterator loop. **Return** The entry at or after the **index** or ``NULL``h](h)}(h**Parameters**h]j)}(hjjh]h Parameters}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjdubj)}(hhh](j)}( h)``struct maple_tree *mt`` The maple tree h](j")}(h``struct maple_tree *mt``h]jj)}(hjh]hstruct maple_tree *mt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjubj2)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hQ``unsigned long *index`` Pointer which contains the start location of the search h](j")}(h``unsigned long *index``h]jj)}(hj„h]hunsigned long *index}(hjĄhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjubj2)}(hhh]h)}(h7Pointer which contains the start location of the searchh]h7Pointer which contains the start location of the search}(hjۄhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjׄhM hj؄ubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjׄhM hjubj)}(h1``unsigned long max`` The maximum value to check h](j")}(h``unsigned long max``h]jj)}(hjh]hunsigned long max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubah}(h]h ]h"]h$]h&]uh1j!hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjubj2)}(hhh]h)}(hThe maximum value to checkh]hThe maximum value to check}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubeh}(h]h ]h"]h$]h&]uh1jhjdubh)}(h**Description**h]j)}(hj6h]h Description}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjdubh)}(hSame as mt_find() except that it checks **index** for 0 before searching. If **index** == 0, the search is aborted. This covers a wrap around of **index** to 0 in an iterator loop.h](h(Same as mt_find() except that it checks }(hjLhhhNhNubj)}(h **index**h]hindex}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubh for 0 before searching. If }(hjLhhhNhNubj)}(h **index**h]hindex}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubh; == 0, the search is aborted. This covers a wrap around of }(hjLhhhNhNubj)}(h **index**h]hindex}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubh to 0 in an iterator loop.}(hjLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjdubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjdubh)}(h/The entry at or after the **index** or ``NULL``h](hThe entry at or after the }(hjhhhNhNubj)}(h **index**h]hindex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }(hjhhhNhNubjj)}(h``NULL``h]hNULL}(hjÅhhhNhNubah}(h]h ]h"]h$]h&]uh1jihjubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjdubeh}(h]h ] kernelindentah"]h$]h&]uh1j` hjhhhNhNubeh}(h]functions-and-structuresah ]h"]functions and structuresah$]h&]uh1hhhhhhhhKubeh}(h] maple-treeah ]h"] maple treeah$]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}(j]jaj]jaj0]j&ajZ]jPaj]jaunameids}(jjj j jjjjjjjjjjjjjaj0j`j]jjZjjjjjju nametypes}(jj jjjjjjjaj`jjjjuh}(jhj j jjjjjjzjjjjjjj0j1j]j1jZjfjjfjjjjjjj j jc jh jN jS jj jjjNjSjjjxj}jjjjj]jbjjj j j!j!j#j#j%j%j'j'j~,j,jW.j\.j0j0j2j!2j4j4j#7j(7j8j8jv;j{;j=j=jF@jK@j3Cj8CjEjEjGjGjJjJjyLj~Lj OjOjQjQjSjSjVjVjYjYj[j[j]j]j_j_jajajnejsejuhjzhjlj lj ojojtjtjwjwjyjyj|j|j'~j,~jjjjĂu 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](hsystem_message)}(hhh]h)}(hhh]h;Hyperlink target "maple-tree-normal-api" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhj}ubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineK-uh1j{ubj|)}(hhh]h)}(hhh]h=Hyperlink target "maple-tree-advanced-api" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1j{ubj|)}(hhh]h)}(hhh]h?Hyperlink target "maple-tree-advanced-alloc" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1j{ubj|)}(hhh]h)}(hhh]h?Hyperlink target "maple-tree-advanced-locks" is not referenced.}hjφsbah}(h]h ]h"]h$]h&]uh1hhj̆ubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1j{ubj|)}(hhh]h)}(hhh]h6Hyperlink target "maple-tree-flags" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineKsourcehuh1j{ube transformerN include_log] decorationNhhub.