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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/pt_BR/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}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK 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.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjhhubh)}(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)}(hjHh]hmaple-tree-advanced-api}(hjLhhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1jJhjFubah}(h]h ]h"]h$]h&]refdoccore-api/maple_tree refdomainjWreftyperef 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&]uh1hhhhKhjhhubh)}(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 }(hjuhhhNhNubhliteral)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjuubh and }(hjuhhhNhNubj~)}(h ``ULONG_MAX``h]h ULONG_MAX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjuubhX{. 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 }(hjuhhhNhNubh)}(h:ref:`maple-tree-advanced-api`h]jK)}(hjh]hmaple-tree-advanced-api}(hjhhhNhNubah}(h]h ](jVstdstd-refeh"]h$]h&]uh1jJhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjimaple-tree-advanced-apiuh1hhhhKhjuubh$, but are blocked by the normal API.}(hjuhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(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$hjhhubh)}(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]jK)}(hjh]hmaple-tree-advanced-api}(hjhhhNhNubah}(h]h ](jVstdstd-refeh"]h$]h&]uh1jJhjubah}(h]h ]h"]h$]h&]refdocjc refdomainjreftyperef refexplicitrefwarnjimaple-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'hjhhubhtarget)}(h.. _maple-tree-normal-api:h]h}(h]h ]h"]h$]h&]refidmaple-tree-normal-apiuh1j hK-hjhhhhubeh}(h]overviewah ]h"]overviewah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h Normal APIh]h Normal API}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hhhhhK0ubh)}(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 }(hj4hhhNhNubj~)}(h``NULL``h]hNULL}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4ubh pointer for the range }(hj4hhhNhNubj~)}(h``0``h]h0}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4ubh - }(hj4hhhNhNubj~)}(h ``ULONG_MAX``h]h ULONG_MAX}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4ubhX). 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 }(hj4hhhNhNubj~)}(h``0``h]h0}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4ubh upwards or }(hj4hhhNhNubj~)}(h ``ULONG_MAX``h]h ULONG_MAX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4ubh9 down. An allocation tree can be used by passing in the }(hj4hhhNhNubj~)}(h``MT_FLAGS_ALLOC_RANGE``h]hMT_FLAGS_ALLOC_RANGE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4ubh! flag when initialising the tree.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK2hj#hhubh)}(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.}(hjhhhNhNubah}(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 }(hjhhhNhNubj~)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh and }(hjhhhNhNubj~)}(h ``ULONG_MAX``h]h ULONG_MAX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubhn 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().}(hjhhhNhNubah}(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.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h.. _maple-tree-advanced-alloc:h]h}(h]h ]h"]h$]h&]jmaple-tree-advanced-allocuh1j hKhjhhhhubh)}(hhh](h)}(hAdvanced Allocating Nodesh]hAdvanced Allocating Nodes}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhhhhhKubh)}(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.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjEhhubj)}(h.. _maple-tree-advanced-locks:h]h}(h]h ]h"]h$]h&]jmaple-tree-advanced-locksuh1j hKhjEhhhhubeh}(h](advanced-allocating-nodesjDeh ]h"](advanced allocating nodesmaple-tree-advanced-alloceh$]h&]uh1hhjhhhhhKj}juj:sj}jDj:subh)}(hhh](h)}(hAdvanced Lockingh]hAdvanced Locking}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhhhhhKubh)}(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 }(hjhhhNhNubj~)}(h``MT_FLAGS_LOCK_EXTERN flag``h]hMT_FLAGS_LOCK_EXTERN flag}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubhf, this is usually done with the MTREE_INIT_EXT() #define, which takes an external lock as an argument.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjzhhubeh}(h](advanced-lockingjneh ]h"](advanced lockingmaple-tree-advanced-lockseh$]h&]uh1hhjhhhhhKj}jjdsj}jnjdsubeh}(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-flagsuh1j hKhjhhhNubh)}(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}jjsubjK)}(hhh](jP)}(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&]uh1jOhjubjP)}(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&]uh1jOhjubjP)}(hIMT_FLAGS_HEIGHT_OFFSET - The position of the tree height in the flagsh]h)}(hj/h]hIMT_FLAGS_HEIGHT_OFFSET - The position of the tree height in the flags}(hj1hhhNhNubah}(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&]uh1jOhjubjP)}(hEMT_FLAGS_HEIGHT_MASK - The mask for the maple tree height valueh]h)}(hjGh]hEMT_FLAGS_HEIGHT_MASK - The mask for the maple tree height value}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjEubah}(h]h ]h"]h$]h&]uh1jOhjubjP)}(h4MT_FLAGS_LOCK_MASK - How the mt_lock is usedh]h)}(hj_h]h4MT_FLAGS_LOCK_MASK - How the mt_lock is used}(hjahhhNhNubah}(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&]uh1jOhjubjP)}(h.MT_FLAGS_LOCK_IRQ - Acquired irq-safeh]h)}(hjwh]h.MT_FLAGS_LOCK_IRQ - Acquired irq-safe}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjuubah}(h]h ]h"]h$]h&]uh1jOhjubjP)}(h-MT_FLAGS_LOCK_BH - Acquired bh-safeh]h)}(hjh]h-MT_FLAGS_LOCK_BH - Acquired bh-safe}(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&]uh1jOhjubjP)}(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&]uh1jOhjubeh}(h]h ]h"]h$]h&]jjuh1jJhjhKhjhhubh)}(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.hhMubah}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jsphinx_line_type declaratorhjhhhj hMubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhj hMhjhhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1j( hjhhhj hMubeh}(h]h ](cmacroeh"]h$]h&]domainj6 objtypej7 desctypej7 noindex noindexentrynocontentsentryuh1jhhhjhNhNubh)}(h``MTREE_INIT (name, __flags)``h]j~)}(hjC h]hMTREE_INIT (name, __flags)}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjA ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubh block_quote)}(hInitialize a maple tree h]h)}(hInitialize a maple treeh]hInitialize a maple tree}(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&]uh1jY hjm hMhjhhubh container)}(hR**Parameters** ``name`` The maple tree name ``__flags`` The maple tree flagsh](h)}(h**Parameters**h]j)}(hj| h]h Parameters}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjz ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjv ubj+)}(hhh](j0)}(h``name`` The maple tree name h](j6)}(h``name``h]j~)}(hj h]hname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj ubjF)}(hhh]h)}(hThe maple tree nameh]hThe maple tree name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jEhj ubeh}(h]h ]h"]h$]h&]uh1j/hj hMhj ubj0)}(h ``__flags`` The maple tree flagsh](j6)}(h ``__flags``h]j~)}(hj h]h__flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj ubjF)}(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.hhMhj ubah}(h]h ]h"]h$]h&]uh1jEhj ubeh}(h]h ]h"]h$]h&]uh1j/hj hMhj ubeh}(h]h ]h"]h$]h&]uh1j*hjv ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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}(hj2 hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj. ubah}(h]h ](j j eh"]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& hhhjE hMubah}(h]j! ah ](j j! eh"]h$]h&]j% j& )j' huh1jhjE hMhj# hhubj) )}(hhh]h}(h]h ]h"]h$]h&]uh1j( hj# hhhjE hMubeh}(h]h ](j6 macroeh"]h$]h&]j; j6 j< j^ j= j^ j> j? j@ uh1jhhhjhNhNubh)}(h*``MTREE_INIT_EXT (name, __flags, __lock)``h]j~)}(hjd h]h&MTREE_INIT_EXT (name, __flags, __lock)}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjb ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM!hjhhubjZ )}(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.}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjz ubah}(h]h ]h"]h$]h&]uh1jY hj hMhjhhubju )}(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.hhM#hj ubj+)}(hhh](j0)}(h``name`` The tree name h](j6)}(h``name``h]j~)}(hj h]hname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM hj ubjF)}(hhh]h)}(h The tree nameh]h The tree name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM hj ubah}(h]h ]h"]h$]h&]uh1jEhj ubeh}(h]h ]h"]h$]h&]uh1j/hj hM hj ubj0)}(h!``__flags`` The maple tree flags h](j6)}(h ``__flags``h]j~)}(hj h]h__flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM!hj ubjF)}(hhh]h)}(hThe maple tree flagsh]hThe maple tree flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM!hj ubah}(h]h ]h"]h$]h&]uh1jEhj ubeh}(h]h ]h"]h$]h&]uh1j/hj hM!hj ubj0)}(h``__lock`` The external lockh](j6)}(h ``__lock``h]j~)}(hj* h]h__lock}(hj, hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj( ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM#hj$ ubjF)}(hhh]h)}(hThe external lockh]hThe external lock}(hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM"hj@ ubah}(h]h ]h"]h$]h&]uh1jEhj$ ubeh}(h]h ]h"]h$]h&]uh1j/hj? hM#hj ubeh}(h]h ]h"]h$]h&]uh1j*hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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}(hj hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j hj hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMubhdesc_sig_space)}(h h]h }(hj hhhNhNubah}(h]h ]wah"]h$]h&]uh1j hj hhhj hMubj)}(h mtree_emptyh]j)}(h mtree_emptyh]h mtree_empty}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj hhhj hMubhdesc_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 ]j ah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj6 reftype identifier reftargetj modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j$ ASTIdentifier)}j j sb c.mtree_emptyasbuh1hhj ubj )}(h h]h }(hj1 hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubhdesc_sig_punctuation)}(hjh]h*}(hjA hhhNhNubah}(h]h ]pah"]h$]h&]uh1j? hj ubj)}(hmth]hmt}(hjO hhhNhNubah}(h]h ]j ah"]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]jw ah ](j j! eh"]h$]h&]j% j& )j' huh1jhj hMhjy hhubj) )}(hhh]h)}(h,Determine if a tree has any present entries.h]h,Determine if a tree has any present entries.}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjv hhubah}(h]h ]h"]h$]h&]uh1j( hjy hhhj hMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j j= j j> j? j@ uh1jhhhjhNhNubju )}(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.hhMhj ubj+)}(hhh]j0)}(h,``const struct maple_tree *mt`` Maple Tree. h](j6)}(h``const struct maple_tree *mt``h]j~)}(hj h]hconst struct maple_tree *mt}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj ubjF)}(hhh]h)}(h Maple Tree.h]h Maple Tree.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jEhj ubeh}(h]h ]h"]h$]h&]uh1j/hj hMhj ubah}(h]h ]h"]h$]h&]uh1j*hj 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.hhMhj 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.hhMhj 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.hhMhj ubh)}(h1``true`` if the tree contains only NULL pointers.h](j~)}(h``true``h]htrue}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj2 ubh) if the tree contains only NULL pointers.}(hj2 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjo hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjk hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMbubj )}(h h]h }(hj~ hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjk hhhj} hMbubj)}(h mas_reseth]j)}(h mas_reseth]h mas_reset}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubah}(h]h ](j j eh"]h$]h&]hhuh1jhjk hhhj} hMbubj )}(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 ]j ah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj6 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 ]jK ah"]h$]h&]uh1j? hj ubj)}(hmash]hmas}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubah}(h]h ]h"]h$]h&]hhuh1j hjk hhhj} hMbubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjg hhhj} hMbubah}(h]jb ah ](j j! eh"]h$]h&]j% j& )j' huh1jhj} hMbhjd hhubj) )}(hhh]h)}(h#Reset a Maple Tree operation state.h]h#Reset a Maple Tree operation state.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMbhj,hhubah}(h]h ]h"]h$]h&]uh1j( hjd hhhj} hMbubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jGj= jGj> j? j@ uh1jhhhjhNhNubju )}(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)}(hjQh]h Parameters}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMfhjKubj+)}(hhh]j0)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j6)}(h``struct ma_state *mas``h]j~)}(hjph]hstruct ma_state *mas}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjnubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMchjjubjF)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMchjubah}(h]h ]h"]h$]h&]uh1jEhjjubeh}(h]h ]h"]h$]h&]uh1j/hjhMchjgubah}(h]h ]h"]h$]h&]uh1j*hjKubh)}(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.hhMehjKubh)}(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.hhMdhjKubh)}(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.hhMhhjKubh)}(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.hhMihjKubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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)}(hj#h]h mas_for_each}(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj)ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj%hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMrubah}(h]h ]h"]h$]h&]hhj uh1jj j hj!hhhj@hMrubah}(h]jah ](j j! eh"]h$]h&]j% j& )j' huh1jhj@hMrhjhhubj) )}(hhh]h}(h]h ]h"]h$]h&]uh1j( hjhhhj@hMrubeh}(h]h ](j6 macroeh"]h$]h&]j; j6 j< jYj= jYj> j? j@ uh1jhhhjhNhNubh)}(h(``mas_for_each (__mas, __entry, __max)``h]j~)}(hj_h]h$mas_for_each (__mas, __entry, __max)}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj]ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMthjhhubjZ )}(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.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMrhjuubah}(h]h ]h"]h$]h&]uh1jY hjhMrhjhhubju )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMvhjubj+)}(hhh](j0)}(h3``__mas`` Maple Tree operation state (maple_state) h](j6)}(h ``__mas``h]j~)}(hjh]h__mas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMshjubjF)}(hhh]h)}(h(Maple Tree operation state (maple_state)h]h(Maple Tree operation state (maple_state)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMshjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhMshjubj0)}(h*``__entry`` Entry retrieved from the tree h](j6)}(h ``__entry``h]j~)}(hjh]h__entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMthjubjF)}(hhh]h)}(hEntry retrieved from the treeh]hEntry retrieved from the tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMthjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhMthjubj0)}(h2``__max`` maximum index to retrieve from the tree h](j6)}(h ``__max``h]j~)}(hj%h]h__max}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj#ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMuhjubjF)}(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:hMuhj;ubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hj:hMuhjubeh}(h]h ]h"]h$]h&]uh1j*hjubh)}(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.hhMwhjubh)}(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.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMvhjubh)}(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.hhMyhjubh)}(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.hhMzhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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 ]j ah"]h$]h&]uh1jhjubah}(h]h ](j j eh"]h$]h&]hhuh1jhjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMubah}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhMubah}(h]jah ](j j! eh"]h$]h&]j% j& )j' huh1jhjhMhjhhubj) )}(hhh]h}(h]h ]h"]h$]h&]uh1j( hjhhhjhMubeh}(h]h ](j6 macroeh"]h$]h&]j; j6 j< jj= jj> j? j@ uh1jhhhjhNhNubh)}(h,``mas_for_each_rev (__mas, __entry, __min)``h]j~)}(hjh]h(mas_for_each_rev (__mas, __entry, __min)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubjZ )}(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.hhMhjubah}(h]h ]h"]h$]h&]uh1jY hj*hMhjhhubju )}(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)}(hj7h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj1ubj+)}(hhh](j0)}(h3``__mas`` Maple Tree operation state (maple_state) h](j6)}(h ``__mas``h]j~)}(hjVh]h__mas}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjTubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjPubjF)}(hhh]h)}(h(Maple Tree operation state (maple_state)h]h(Maple Tree operation state (maple_state)}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMhjlubah}(h]h ]h"]h$]h&]uh1jEhjPubeh}(h]h ]h"]h$]h&]uh1j/hjkhMhjMubj0)}(h*``__entry`` Entry retrieved from the tree h](j6)}(h ``__entry``h]j~)}(hjh]h__entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubjF)}(hhh]h)}(hEntry retrieved from the treeh]hEntry retrieved from the tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhMhjMubj0)}(h2``__min`` minimum index to retrieve from the tree h](j6)}(h ``__min``h]j~)}(hjh]h__min}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubjF)}(hhh]h)}(h'minimum index to retrieve from the treeh]h'minimum index to retrieve from the tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhMhjMubeh}(h]h ]h"]h$]h&]uh1j*hj1ubh)}(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.hhMhj1ubh)}(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.hhMhj1ubh)}(h**Note**h]j)}(hj*h]hNote}(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.hhMhj1ubh)}(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.hhMhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM ubj )}(h h]h }(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkhhhj}hM ubj)}(h__mas_set_rangeh]j)}(h__mas_set_rangeh]h__mas_set_range}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j j eh"]h$]h&]hhuh1jhjkhhhj}hM ubj )}(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 ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjmodnameN classnameNj# j& )}j) ]j, )}j jsbc.__mas_set_rangeasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj@ )}(hjh]h*}(hjhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjubj)}(hmash]hmas}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long starth](j )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlongh]hlong}(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hstarth]hstart}(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long lasth](j )}(hunsignedh]hunsigned}(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj )}(h h]h }(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj)}(hlasth]hlast}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjkhhhj}hM ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjghhhj}hM ubah}(h]jbah ](j j! eh"]h$]h&]j% j& )j' huh1jhj}hM hjdhhubj) )}(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.hhM hjhhubah}(h]h ]h"]h$]h&]uh1j( hjdhhhj}hM ubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jj= jj> j? j@ uh1jhhhjhNhNubju )}(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](j0)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j6)}(h``struct ma_state *mas``h]j~)}(hjh]hstruct ma_state *mas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM hj ubjF)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hM hj(ubah}(h]h ]h"]h$]h&]uh1jEhj ubeh}(h]h ]h"]h$]h&]uh1j/hj'hM hj ubj0)}(h>``unsigned long start`` New start of range in the Maple Tree. h](j6)}(h``unsigned long start``h]j~)}(hjKh]hunsigned long start}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjIubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM hjEubjF)}(hhh]h)}(h%New start of range in the Maple Tree.h]h%New start of range in the Maple Tree.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hM hjaubah}(h]h ]h"]h$]h&]uh1jEhjEubeh}(h]h ]h"]h$]h&]uh1j/hj`hM hj ubj0)}(h;``unsigned long last`` New end of range in the Maple Tree. h](j6)}(h``unsigned long last``h]j~)}(hjh]hunsigned long last}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj~ubjF)}(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&]uh1jEhj~ubeh}(h]h ]h"]h$]h&]uh1j/hjhMhj ubeh}(h]h ]h"]h$]h&]uh1j*hjubh)}(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&]uh1jt 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](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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}(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj!ubah}(h]h ](j j eh"]h$]h&]hhuh1jhjhhhjhMubj )}(h?(struct ma_state *mas, unsigned long start, unsigned long last)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj=ubj )}(h h]h }(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj=ubh)}(hhh]j)}(hma_stateh]hma_state}(hj_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjamodnameN classnameNj# j& )}j) ]j, )}j j'sbc.mas_set_rangeasbuh1hhj=ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj=ubj@ )}(hjh]h*}(hjhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj=ubj)}(hmash]hmas}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj9ubj )}(hunsigned long starth](j )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hstarth]hstart}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj9ubj )}(hunsigned long lasth](j )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlongh]hlong}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hlasth]hlast}(hj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj9ubeh}(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.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjchhubah}(h]h ]h"]h$]h&]uh1j( hjhhhjhMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j~j= j~j> j? j@ uh1jhhhjhNhNubju )}(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)}(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](j0)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j6)}(h``struct ma_state *mas``h]j~)}(hjh]hstruct ma_state *mas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubjF)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhMhjubj0)}(h>``unsigned long start`` New start of range in the Maple Tree. h](j6)}(h``unsigned long start``h]j~)}(hjh]hunsigned long start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM hjubjF)}(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&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhM hjubj0)}(h;``unsigned long last`` New end of range in the Maple Tree. h](j6)}(h``unsigned long last``h]j~)}(hjh]hunsigned long last}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM!hjubjF)}(hhh]h)}(h#New end of range in the Maple Tree.h]h#New end of range in the Maple Tree.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hM!hj/ubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hj.hM!hjubeh}(h]h ]h"]h$]h&]uh1j*hjubh)}(h**Description**h]j)}(hjTh]h Description}(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.hhM#hjubh)}(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.}(hjjhhhNhNubah}(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&]uh1jt 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](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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 ]j ah"]h$]h&]uh1jhjubah}(h]h ](j j eh"]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 ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6 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*}(hj"hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjubj)}(hmash]hmas}(hj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDubj )}(h h]h }(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDubj )}(hlongh]hlong}(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDubj )}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDubj)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjDubeh}(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)}(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.hhM/hjhhubah}(h]h ]h"]h$]h&]uh1j( hjhhhjhM/ubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jj= jj> j? j@ uh1jhhhjhNhNubju )}(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.hhM3hjubj+)}(hhh](j0)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j6)}(h``struct ma_state *mas``h]j~)}(hjh]hstruct ma_state *mas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM0hjubjF)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM0hjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhM0hjubj0)}(h7``unsigned long index`` New index into the Maple Tree. h](j6)}(h``unsigned long index``h]j~)}(hj$h]hunsigned long index}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj"ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM1hjubjF)}(hhh]h)}(hNew index into the Maple Tree.h]hNew index into the Maple Tree.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hM1hj:ubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hj9hM1hjubeh}(h]h ]h"]h$]h&]uh1j*hjubh)}(h**Description**h]j)}(hj_h]h Description}(hjahhhNhNubah}(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.hhM3hjubh)}(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.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM2hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMCubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMCubj)}(h mt_init_flagsh]j)}(h mt_init_flagsh]h mt_init_flags}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j j eh"]h$]h&]hhuh1jhjhhhjhMCubj )}(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 ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjmodnameN classnameNj# j& )}j) ]j, )}j jsbc.mt_init_flagsasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj@ )}(hjh]h*}(hj-hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjubj)}(hmth]hmt}(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned int flagsh](j )}(hunsignedh]hunsigned}(hjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubj )}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubj )}(hinth]hint}(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubj )}(h h]h }(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubj)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjOubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMCubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhMCubah}(h]jah ](j j! eh"]h$]h&]j% j& )j' huh1jhjhMChjhhubj) )}(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.hhMChjhhubah}(h]h ]h"]h$]h&]uh1j( hjhhhjhMCubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jj= jj> j? j@ uh1jhhhjhNhNubju )}(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.hhMGhjubj+)}(hhh](j0)}(h%``struct maple_tree *mt`` Maple Tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjh]hstruct maple_tree *mt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMDhjubjF)}(hhh]h)}(h Maple Treeh]h Maple Tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMDhj ubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hj hMDhjubj0)}(h)``unsigned int flags`` maple tree flags. h](j6)}(h``unsigned int flags``h]j~)}(hj/h]hunsigned int flags}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj-ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMEhj)ubjF)}(hhh]h)}(hmaple tree flags.h]hmaple tree flags.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMEhjEubah}(h]h ]h"]h$]h&]uh1jEhj)ubeh}(h]h ]h"]h$]h&]uh1j/hjDhMEhjubeh}(h]h ]h"]h$]h&]uh1j*hjubh)}(h**Description**h]j)}(hjjh]h Description}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMGhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMFhjubh)}(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.hhMIhjubh)}(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.hhMJhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMUubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMUubj)}(hmt_inith]j)}(hmt_inith]hmt_init}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j j eh"]h$]h&]hhuh1jhjhhhjhMUubj )}(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}(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj3modnameN classnameNj# j& )}j) ]j, )}j jsb c.mt_initasbuh1hhjubj )}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj@ )}(hjh]h*}(hj_hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjubj)}(hmth]hmt}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMUubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhMUubah}(h]jah ](j j! eh"]h$]h&]j% j& )j' huh1jhjhMUhjhhubj) )}(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.hhMUhjhhubah}(h]h ]h"]h$]h&]uh1j( hjhhhjhMUubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jj= jj> j? j@ uh1jhhhjhNhNubju )}(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.hhMYhjubj+)}(hhh]j0)}(h%``struct maple_tree *mt`` Maple Tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjh]hstruct maple_tree *mt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMVhjubjF)}(hhh]h)}(h Maple Treeh]h Maple Tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMVhjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhMVhjubah}(h]h ]h"]h$]h&]uh1j*hjubh)}(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.hhMXhjubh)}(hAn empty Maple Tree.h]hAn empty Maple Tree.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMWhjubh)}(h **Context**h]j)}(hj9h]hContext}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMYhjubh)}(h Any context.h]h Any context.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMZhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzhhhjhMjubj)}(hmt_clear_in_rcuh]j)}(hmt_clear_in_rcuh]hmt_clear_in_rcu}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j j eh"]h$]h&]hhuh1jhjzhhhjhMjubj )}(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 ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj6 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 ]jK ah"]h$]h&]uh1j? hjubj)}(hmth]hmt}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hjzhhhjhMjubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjvhhhjhMjubah}(h]jqah ](j j! eh"]h$]h&]j% j& )j' huh1jhjhMjhjshhubj) )}(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.hhMjhj;hhubah}(h]h ]h"]h$]h&]uh1j( hjshhhjhMjubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jVj= jVj> j? j@ uh1jhhhjhNhNubju )}(h:**Parameters** ``struct maple_tree *mt`` The Maple Treeh](h)}(h**Parameters**h]j)}(hj`h]h Parameters}(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.hhMnhjZubj+)}(hhh]j0)}(h(``struct maple_tree *mt`` The Maple Treeh](j6)}(h``struct maple_tree *mt``h]j~)}(hjh]hstruct maple_tree *mt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj}ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMphjyubjF)}(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.hhMkhjubah}(h]h ]h"]h$]h&]uh1jEhjyubeh}(h]h ]h"]h$]h&]uh1j/hjhMphjvubah}(h]h ]h"]h$]h&]uh1j*hjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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_set_in_rcuh]j)}(h mt_set_in_rcuh]h mt_set_in_rcu}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j j eh"]h$]h&]hhuh1jhjhhhjhM}ubj )}(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}(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj6modnameN classnameNj# j& )}j) ]j, )}j jsbc.mt_set_in_rcuasbuh1hhjubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj@ )}(hjh]h*}(hjbhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjubj)}(hmth]hmt}(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(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!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.hhM}hjhhubah}(h]h ]h"]h$]h&]uh1j( hjhhhjhM}ubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jj= jj> j? j@ uh1jhhhjhNhNubju )}(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.hhMhjubj+)}(hhh]j0)}(h(``struct maple_tree *mt`` The Maple Treeh](j6)}(h``struct maple_tree *mt``h]j~)}(hjh]hstruct maple_tree *mt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubjF)}(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&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhMhjubah}(h]h ]h"]h$]h&]uh1j*hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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}(hj8 hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj4 ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj0 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, hhhjK hMubah}(h]j' ah ](j j! eh"]h$]h&]j% j& )j' huh1jhjK hMhj) hhubj) )}(hhh]h}(h]h ]h"]h$]h&]uh1j( hj) hhhjK hMubeh}(h]h ](j6 macroeh"]h$]h&]j; j6 j< jd j= jd j> j? j@ uh1jhhhjhNhNubh)}(h1``mt_for_each (__tree, __entry, __index, __max)``h]j~)}(hjj h]h-mt_for_each (__tree, __entry, __index, __max)}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjh ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubjZ )}(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.}(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&]uh1jY hj hMhjhhubju )}(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.hhMhj ubj+)}(hhh](j0)}(h``__tree`` The Maple Tree h](j6)}(h ``__tree``h]j~)}(hj h]h__tree}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj ubjF)}(hhh]h)}(hThe Maple Treeh]hThe Maple Tree}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jEhj ubeh}(h]h ]h"]h$]h&]uh1j/hj hMhj ubj0)}(h``__entry`` The current entry h](j6)}(h ``__entry``h]j~)}(hj h]h__entry}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj ubjF)}(hhh]h)}(hThe current entryh]hThe current entry}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj !hMhj !ubah}(h]h ]h"]h$]h&]uh1jEhj ubeh}(h]h ]h"]h$]h&]uh1j/hj !hMhj ubj0)}(hO``__index`` The index to start the search from. Subsequently used as iterator. h](j6)}(h ``__index``h]j~)}(hj0!h]h__index}(hj2!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj.!ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj*!ubjF)}(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.}(hjI!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjE!hMhjF!ubah}(h]h ]h"]h$]h&]uh1jEhj*!ubeh}(h]h ]h"]h$]h&]uh1j/hjE!hMhj ubj0)}(h*``__max`` The maximum limit for **index** h](j6)}(h ``__max``h]j~)}(hji!h]h__max}(hjk!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjg!ubah}(h]h ]h"]h$]h&]uh1j5h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjc!ubjF)}(hhh]h)}(hThe maximum limit for **index**h](hThe maximum limit for }(hj!hhhNhNubj)}(h **index**h]hindex}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1hhj~!hMhj!ubah}(h]h ]h"]h$]h&]uh1jEhjc!ubeh}(h]h ]h"]h$]h&]uh1j/hj~!hMhj ubeh}(h]h ]h"]h$]h&]uh1j*hj 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.hhMhj 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.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_prealloc_calc (C function)c.mas_prealloc_calchNtauh1jhjhhhNhNubj)}(hhh](j)}(h@void mas_prealloc_calc (struct ma_wr_state *wr_mas, void *entry)h]j)}(h?void mas_prealloc_calc(struct ma_wr_state *wr_mas, void *entry)h](j )}(hvoidh]hvoid}(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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)}(hmas_prealloc_calch]j)}(hmas_prealloc_calch]hmas_prealloc_calc}(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj"ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj!hhhj"hM ubj )}(h)(struct ma_wr_state *wr_mas, void *entry)h](j )}(hstruct ma_wr_state *wr_mash](j )}(hj h]hstruct}(hj4"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0"ubj )}(h h]h }(hjA"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0"ubh)}(hhh]j)}(h ma_wr_stateh]h ma_wr_state}(hjR"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjO"ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjT"modnameN classnameNj# j& )}j) ]j, )}j j"sbc.mas_prealloc_calcasbuh1hhj0"ubj )}(h h]h }(hjr"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0"ubj@ )}(hjh]h*}(hj"hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj0"ubj)}(hwr_mash]hwr_mas}(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj0"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj,"ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj@ )}(hjh]h*}(hj"hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj"ubj)}(hentryh]hentry}(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj,"ubeh}(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 j? j@ uh1jhhhjhNhNubju )}(h**Parameters** ``struct ma_wr_state *wr_mas`` The maple write state ``void *entry`` The entry to store into the tree **Return** Number of nodes required for preallocation.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](j0)}(h5``struct ma_wr_state *wr_mas`` The maple write state h](j6)}(h``struct ma_wr_state *wr_mas``h]j~)}(hj:#h]hstruct ma_wr_state *wr_mas}(hj<#hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8#ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj4#ubjF)}(hhh]h)}(hThe maple write stateh]hThe maple write state}(hjS#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjO#hMhjP#ubah}(h]h ]h"]h$]h&]uh1jEhj4#ubeh}(h]h ]h"]h$]h&]uh1j/hjO#hMhj1#ubj0)}(h1``void *entry`` The entry to store into the tree h](j6)}(h``void *entry``h]j~)}(hjs#h]h void *entry}(hju#hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjq#ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjm#ubjF)}(hhh]h)}(h The entry to store into the treeh]h The entry to store into the tree}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMhj#ubah}(h]h ]h"]h$]h&]uh1jEhjm#ubeh}(h]h ]h"]h$]h&]uh1j/hj#hMhj1#ubeh}(h]h ]h"]h$]h&]uh1j*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.chMhj#ubh)}(h+Number of nodes required for preallocation.h]h+Number of nodes required for preallocation.}(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&]uh1jt hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_wr_preallocate (C function)c.mas_wr_preallocatehNtauh1jhjhhhNhNubj)}(hhh](j)}(hAvoid mas_wr_preallocate (struct ma_wr_state *wr_mas, void *entry)h]j)}(h@void mas_wr_preallocate(struct ma_wr_state *wr_mas, void *entry)h](j )}(hvoidh]hvoid}(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMxubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#hhhj$hMxubj)}(hmas_wr_preallocateh]j)}(hmas_wr_preallocateh]hmas_wr_preallocate}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj$ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj#hhhj$hMxubj )}(h)(struct ma_wr_state *wr_mas, void *entry)h](j )}(hstruct ma_wr_state *wr_mash](j )}(hj h]hstruct}(hj0$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 ma_wr_stateh]h ma_wr_state}(hjN$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjK$ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjP$modnameN classnameNj# j& )}j) ]j, )}j j$sbc.mas_wr_preallocateasbuh1hhj,$ubj )}(h h]h }(hjn$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,$ubj@ )}(hjh]h*}(hj|$hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj,$ubj)}(hwr_mash]hwr_mas}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj,$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj($ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj@ )}(hjh]h*}(hj$hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj$ubj)}(hentryh]hentry}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj($ubeh}(h]h ]h"]h$]h&]hhuh1j hj#hhhj$hMxubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj#hhhj$hMxubah}(h]j#ah ](j j! eh"]h$]h&]j% j& )j' huh1jhj$hMxhj#hhubj) )}(hhh]h)}(h.Preallocate enough nodes for a store operationh]h.Preallocate enough nodes for a store operation}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMxhj$hhubah}(h]h ]h"]h$]h&]uh1j( hj#hhhj$hMxubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j %j= j %j> j? j@ uh1jhhhjhNhNubju )}(hw**Parameters** ``struct ma_wr_state *wr_mas`` The maple write state ``void *entry`` The entry that will be storedh](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](j0)}(h5``struct ma_wr_state *wr_mas`` The maple write state h](j6)}(h``struct ma_wr_state *wr_mas``h]j~)}(hj6%h]hstruct ma_wr_state *wr_mas}(hj8%hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4%ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMyhj0%ubjF)}(hhh]h)}(hThe maple write stateh]hThe maple write state}(hjO%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjK%hMyhjL%ubah}(h]h ]h"]h$]h&]uh1jEhj0%ubeh}(h]h ]h"]h$]h&]uh1j/hjK%hMyhj-%ubj0)}(h-``void *entry`` The entry that will be storedh](j6)}(h``void *entry``h]j~)}(hjo%h]h void *entry}(hjq%hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjm%ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM{hji%ubjF)}(hhh]h)}(hThe entry that will be storedh]hThe entry that will be stored}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMzhj%ubah}(h]h ]h"]h$]h&]uh1jEhji%ubeh}(h]h ]h"]h$]h&]uh1j/hj%hM{hj-%ubeh}(h]h ]h"]h$]h&]uh1j*hj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_insert (C function) c.mas_inserthNtauh1jhjhhhNhNubj)}(hhh](j)}(h5void * mas_insert (struct ma_state *mas, void *entry)h]j)}(h3void *mas_insert(struct ma_state *mas, void *entry)h](j )}(hvoidh]hvoid}(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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*}(hj%hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj%hhhj%hMubj)}(h mas_inserth]j)}(h mas_inserth]h mas_insert}(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj%ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj%hhhj%hMubj )}(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}(hj1&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj.&ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj3&modnameN classnameNj# j& )}j) ]j, )}j j%sb c.mas_insertasbuh1hhj&ubj )}(h h]h }(hjQ&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj@ )}(hjh]h*}(hj_&hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj&ubj)}(hmash]hmas}(hjl&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj &ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj )}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj@ )}(hjh]h*}(hj&hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj&ubj)}(hentryh]hentry}(hj&hhhNhNubah}(h]h ]j ah"]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)}(hInternal call to insert a valueh]hInternal call to insert a value}(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%hhhj%hMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j&j= j&j> j? j@ uh1jhhhjhNhNubju )}(h**Parameters** ``struct ma_state *mas`` The maple state ``void *entry`` The entry to store **Return** ``NULL`` or the contents that already exists at the requested index otherwise. The maple state needs to be checked for error conditions.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](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hj'h]hstruct ma_state *mas}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj'ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj'ubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj2'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.'hMhj/'ubah}(h]h ]h"]h$]h&]uh1jEhj'ubeh}(h]h ]h"]h$]h&]uh1j/hj.'hMhj'ubj0)}(h#``void *entry`` The entry to store h](j6)}(h``void *entry``h]j~)}(hjR'h]h void *entry}(hjT'hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjP'ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjL'ubjF)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjk'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjg'hMhjh'ubah}(h]h ]h"]h$]h&]uh1jEhjL'ubeh}(h]h ]h"]h$]h&]uh1j/hjg'hMhj'ubeh}(h]h ]h"]h$]h&]uh1j*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.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](j~)}(h``NULL``h]hNULL}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj'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&]uh1jt 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](j )}(hinth]hint}(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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 ]j ah"]h$]h&]uh1jhj'ubah}(h]h ](j j eh"]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 ]j ah"]h$]h&]uh1jhj8(ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj=(modnameN classnameNj# j& )}j) ]j, )}j j(sbc.mas_alloc_cyclicasbuh1hhj(ubj )}(h h]h }(hj[(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubj@ )}(hjh]h*}(hji(hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj(ubj)}(hmash]hmas}(hjv(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(hunsigned long *startph](j )}(hunsignedh]hunsigned}(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubj )}(hlongh]hlong}(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubj@ )}(hjh]h*}(hj(hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj(ubj)}(hstartph]hstartp}(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(ubj@ )}(hjh]h*}(hj )hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj(ubj)}(hentryh]hentry}(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(hunsigned long range_loh](j )}(hunsignedh]hunsigned}(hj/)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+)ubj )}(h h]h }(hj=)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+)ubj )}(hlongh]hlong}(hjK)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+)ubj )}(h h]h }(hjY)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+)ubj)}(hrange_loh]hrange_lo}(hjg)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj+)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(hunsigned long range_hih](j )}(hunsignedh]hunsigned}(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|)ubj )}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|)ubj )}(hlongh]hlong}(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|)ubj )}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|)ubj)}(hrange_hih]hrange_hi}(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj|)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(hunsigned long *nexth](j )}(hunsignedh]hunsigned}(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj )}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj )}(hlongh]hlong}(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj )}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj@ )}(hjh]h*}(hj *hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj)ubj)}(hnexth]hnext}(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj(ubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hj2*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj/*ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj4*modnameN classnameNj# j& )}j) ]jW(c.mas_alloc_cyclicasbuh1hhj+*ubj )}(h h]h }(hjP*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+*ubj)}(hgfph]hgfp}(hj^*hhhNhNubah}(h]h ]j ah"]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}(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'hhhj'hMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j*j= j*j> j? j@ uh1jhhhjhNhNubju )}(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](j0)}(h*``struct ma_state *mas`` The maple state. h](j6)}(h``struct ma_state *mas``h]j~)}(hj*h]hstruct ma_state *mas}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj*ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj*ubjF)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhj*ubah}(h]h ]h"]h$]h&]uh1jEhj*ubeh}(h]h ]h"]h$]h&]uh1j/hj*hMhj*ubj0)}(h)``unsigned long *startp`` Pointer to ID. h](j6)}(h``unsigned long *startp``h]j~)}(hj+h]hunsigned long *startp}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj+ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj*ubjF)}(hhh]h)}(hPointer to ID.h]hPointer to ID.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1jEhj*ubeh}(h]h ]h"]h$]h&]uh1j/hj+hMhj*ubj0)}(h$``void *entry`` The entry to store. h](j6)}(h``void *entry``h]j~)}(hj;+h]h void *entry}(hj=+hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9+ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj5+ubjF)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hjT+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjP+hMhjQ+ubah}(h]h ]h"]h$]h&]uh1jEhj5+ubeh}(h]h ]h"]h$]h&]uh1j/hjP+hMhj*ubj0)}(h;``unsigned long range_lo`` Lower bound of range to search. h](j6)}(h``unsigned long range_lo``h]j~)}(hjt+h]hunsigned long range_lo}(hjv+hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjr+ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjn+ubjF)}(hhh]h)}(hLower bound of range to search.h]hLower bound of range to search.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1jEhjn+ubeh}(h]h ]h"]h$]h&]uh1j/hj+hMhj*ubj0)}(h;``unsigned long range_hi`` Upper bound of range to search. h](j6)}(h``unsigned long range_hi``h]j~)}(hj+h]hunsigned long range_hi}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj+ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj+ubjF)}(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&]uh1jEhj+ubeh}(h]h ]h"]h$]h&]uh1j/hj+hMhj*ubj0)}(h8``unsigned long *next`` Pointer to next ID to allocate. h](j6)}(h``unsigned long *next``h]j~)}(hj+h]hunsigned long *next}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj+ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj+ubjF)}(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&]uh1jEhj+ubeh}(h]h ]h"]h$]h&]uh1j/hj+hMhj*ubj0)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j6)}(h ``gfp_t gfp``h]j~)}(hj,h]h gfp_t gfp}(hj!,hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj,ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj,ubjF)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hj8,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4,hMhj5,ubah}(h]h ]h"]h$]h&]uh1jEhj,ubeh}(h]h ]h"]h$]h&]uh1j/hj4,hMhj*ubeh}(h]h ]h"]h$]h&]uh1j*hj*ubh)}(h **Return**h]j)}(hjZ,h]hReturn}(hj\,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX,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.}(hjp,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&]uh1jt 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](j )}(hvoidh]hvoid}(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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*}(hj,hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj,hhhj,hMubj)}(hmas_walkh]j)}(hmas_walkh]hmas_walk}(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj,ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj,hhhj,hMubj )}(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 ]j ah"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&] refdomainj6 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*}(hj5-hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj,ubj)}(hmash]hmas}(hjB-hhhNhNubah}(h]h ]j ah"]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&Search for **mas->index** in the tree.h](h Search for }(hjl-hhhNhNubj)}(h**mas->index**h]h mas->index}(hjt-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl-ubh in the tree.}(hjl-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhji-hhubah}(h]h ]h"]h$]h&]uh1j( hj,hhhj,hMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j-j= j-j> j? j@ uh1jhhhjhNhNubju )}(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]j0)}(h*``struct ma_state *mas`` The maple state. h](j6)}(h``struct ma_state *mas``h]j~)}(hj-h]hstruct ma_state *mas}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj-ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj-ubjF)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hMhj-ubah}(h]h ]h"]h$]h&]uh1jEhj-ubeh}(h]h ]h"]h$]h&]uh1j/hj-hMhj-ubah}(h]h ]h"]h$]h&]uh1j*hj-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.chMhj-ubh)}(h&the entry at the location or ``NULL``.h](hthe entry at the location or }(hj7.hhhNhNubj~)}(h``NULL``h]hNULL}(hj?.hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj7.ubh.}(hj7.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&]uh1jt 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](j )}(hvoidh]hvoid}(hjx.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjt.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 hjt.hhhj.hM$ubh__rcu}(hjt.hhhNhNubj )}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjt.hhhj.hM$ubj@ )}(hjh]h*}(hj.hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjt.hhhj.hM$ubj@ )}(hjh]h*}(hj.hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjt.hhhj.hM$ubj)}(h mte_dead_walkh]j)}(h mte_dead_walkh]h mte_dead_walk}(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj.ubah}(h]h ](j j eh"]h$]h&]hhuh1jhjt.hhhj.hM$ubj )}(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 ]j ah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainj6 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 ]jK ah"]h$]h&]uh1j? hj.ubj@ )}(hjh]h*}(hj:/hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj.ubj)}(henodeh]henode}(hjG/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj.ubj )}(hunsigned char offseth](j )}(hunsignedh]hunsigned}(hj`/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\/ubj )}(h h]h }(hjn/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\/ubj )}(hcharh]hchar}(hj|/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\/ubj )}(h h]h }(hj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\/ubj)}(hoffseth]hoffset}(hj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj\/ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj.ubeh}(h]h ]h"]h$]h&]hhuh1j hjt.hhhj.hM$ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjp.hhhj.hM$ubah}(h]jk.ah ](j j! eh"]h$]h&]j% j& )j' huh1jhj.hM$hjm.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( hjm.hhhj.hM$ubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j/j= j/j> j? j@ uh1jhhhjhNhNubju )}(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.chM(hj/ubj+)}(hhh](j0)}(h6``struct maple_enode **enode`` The maple encoded node h](j6)}(h``struct maple_enode **enode``h]j~)}(hj0h]hstruct maple_enode **enode}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj0ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM%hj/ubjF)}(hhh]h)}(hThe maple encoded nodeh]hThe maple encoded node}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hM%hj0ubah}(h]h ]h"]h$]h&]uh1jEhj/ubeh}(h]h ]h"]h$]h&]uh1j/hj0hM%hj/ubj0)}(h-``unsigned char offset`` The starting offset h](j6)}(h``unsigned char offset``h]j~)}(hj<0h]hunsigned char offset}(hj>0hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:0ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM&hj60ubjF)}(hhh]h)}(hThe starting offseth]hThe starting offset}(hjU0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ0hM&hjR0ubah}(h]h ]h"]h$]h&]uh1jEhj60ubeh}(h]h ]h"]h$]h&]uh1j/hjQ0hM&hj/ubeh}(h]h ]h"]h$]h&]uh1j*hj/ubh)}(h**Note**h]j)}(hjw0h]hNote}(hjy0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhju0ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM(hj/ubh)}(h4This can only be used from the RCU callback context.h]h4This can only be used from the RCU callback context.}(hj0hhhNhNubah}(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&]uh1jt 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](j )}(hvoidh]hvoid}(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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 ]j ah"]h$]h&]uh1jhj0ubah}(h]h ](j j eh"]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 }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubh)}(hhh]j)}(hrcu_headh]hrcu_head}(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj1modnameN classnameNj# j& )}j) ]j, )}j j0sbc.mt_free_walkasbuh1hhj0ubj )}(h h]h }(hj71hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj@ )}(hjh]h*}(hjE1hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj0ubj)}(hheadh]hhead}(hjR1hhhNhNubah}(h]h ]j ah"]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}(hj|1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM=hjy1hhubah}(h]h ]h"]h$]h&]uh1j( hj0hhhj0hM=ubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j1j= j1j> j? j@ uh1jhhhjhNhNubju )}(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.chMAhj1ubj+)}(hhh]j0)}(h?``struct rcu_head *head`` The RCU head that's within the node. h](j6)}(h``struct rcu_head *head``h]j~)}(hj1h]hstruct rcu_head *head}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj1ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM>hj1ubjF)}(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&]uh1hhj1hM>hj1ubah}(h]h ]h"]h$]h&]uh1jEhj1ubeh}(h]h ]h"]h$]h&]uh1j/hj1hM>hj1ubah}(h]h ]h"]h$]h&]uh1j*hj1ubh)}(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.}(hj2hhhNhNubah}(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&]uh1jt 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](j )}(hvoidh]hvoid}(hj=2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj92hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjL2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj92hhhjK2hMubj@ )}(hjh]h*}(hjZ2hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj92hhhjK2hMubj)}(h mas_storeh]j)}(h mas_storeh]h mas_store}(hjk2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjg2ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj92hhhjK2hMubj )}(h#(struct ma_state *mas, void *entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubj )}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubh)}(hhh]j)}(hma_stateh]hma_state}(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj2modnameN classnameNj# j& )}j) ]j, )}j jm2sb c.mas_storeasbuh1hhj2ubj )}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubj@ )}(hjh]h*}(hj2hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj2ubj)}(hmash]hmas}(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj2ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubj )}(h h]h }(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubj@ )}(hjh]h*}(hj3hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj2ubj)}(hentryh]hentry}(hj"3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj2ubeh}(h]h ]h"]h$]h&]hhuh1j hj92hhhjK2hMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj52hhhjK2hMubah}(h]j02ah ](j j! eh"]h$]h&]j% j& )j' huh1jhjK2hMhj22hhubj) )}(hhh]h)}(hStore an **entry**.h](h Store an }(hjL3hhhNhNubj)}(h **entry**h]hentry}(hjT3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL3ubh.}(hjL3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjI3hhubah}(h]h ]h"]h$]h&]uh1j( hj22hhhjK2hMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jv3j= jv3j> j? j@ uh1jhhhjhNhNubju )}(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)}(hj3h]h Parameters}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~3ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjz3ubj+)}(hhh](j0)}(h*``struct ma_state *mas`` The maple state. h](j6)}(h``struct ma_state *mas``h]j~)}(hj3h]hstruct ma_state *mas}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj3ubjF)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj3ubah}(h]h ]h"]h$]h&]uh1jEhj3ubeh}(h]h ]h"]h$]h&]uh1j/hj3hMhj3ubj0)}(h$``void *entry`` The entry to store. h](j6)}(h``void *entry``h]j~)}(hj3h]h void *entry}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj3ubjF)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj3ubah}(h]h ]h"]h$]h&]uh1jEhj3ubeh}(h]h ]h"]h$]h&]uh1j/hj3hMhj3ubeh}(h]h ]h"]h$]h&]uh1j*hjz3ubh)}(h**Description**h]j)}(hj4h]h Description}(hj4hhhNhNubah}(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.chMhjz3ubh)}(hPThe **mas->index** and **mas->last** is used to set the range for the **entry**.h](hThe }(hj)4hhhNhNubj)}(h**mas->index**h]h mas->index}(hj14hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)4ubh and }(hj)4hhhNhNubj)}(h **mas->last**h]h mas->last}(hjC4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)4ubh" is used to set the range for the }(hj)4hhhNhNubj)}(h **entry**h]hentry}(hjU4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)4ubh.}(hj)4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjz3ubh)}(h **Return**h]j)}(hjp4h]hReturn}(hjr4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn4ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjz3ubh)}(h=the first entry between mas->index and mas->last or ``NULL``.h](h4the first entry between mas->index and mas->last or }(hj4hhhNhNubj~)}(h``NULL``h]hNULL}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4ubh.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjz3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hinth]hint}(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM ubj )}(h h]h }(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4hhhj4hM ubj)}(h mas_store_gfph]j)}(h mas_store_gfph]h mas_store_gfp}(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj4ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj4hhhj4hM ubj )}(h.(struct ma_state *mas, void *entry, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5ubj )}(h h]h }(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5ubh)}(hhh]j)}(hma_stateh]hma_state}(hj"5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj$5modnameN classnameNj# j& )}j) ]j, )}j j4sbc.mas_store_gfpasbuh1hhj5ubj )}(h h]h }(hjB5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5ubj@ )}(hjh]h*}(hjP5hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj5ubj)}(hmash]hmas}(hj]5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj4ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hjv5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjr5ubj )}(h h]h }(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjr5ubj@ )}(hjh]h*}(hj5hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjr5ubj)}(hentryh]hentry}(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjr5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj4ubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&] refdomainj6 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 ]j ah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj4ubeh}(h]h ]h"]h$]h&]hhuh1j hj4hhhj4hM ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj4hhhj4hM ubah}(h]j4ah ](j j! eh"]h$]h&]j% j& )j' huh1jhj4hM hj4hhubj) )}(hhh]h)}(hStore a value into the tree.h]hStore a value into the tree.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hj6hhubah}(h]h ]h"]h$]h&]uh1j( hj4hhhj4hM ubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j)6j= j)6j> j? j@ uh1jhhhjhNhNubju )}(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)}(hj36h]h Parameters}(hj56hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj16ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj-6ubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hjR6h]hstruct ma_state *mas}(hjT6hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjP6ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjL6ubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjk6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjg6hMhjh6ubah}(h]h ]h"]h$]h&]uh1jEhjL6ubeh}(h]h ]h"]h$]h&]uh1j/hjg6hMhjI6ubj0)}(h#``void *entry`` The entry to store h](j6)}(h``void *entry``h]j~)}(hj6h]h void *entry}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj6ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj6ubjF)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1jEhj6ubeh}(h]h ]h"]h$]h&]uh1j/hj6hMhjI6ubj0)}(hA``gfp_t gfp`` The GFP_FLAGS to use for allocations if necessary. h](j6)}(h ``gfp_t gfp``h]j~)}(hj6h]h gfp_t gfp}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj6ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj6ubjF)}(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&]uh1hhj6hMhj6ubah}(h]h ]h"]h$]h&]uh1jEhj6ubeh}(h]h ]h"]h$]h&]uh1j/hj6hMhjI6ubeh}(h]h ]h"]h$]h&]uh1j*hj-6ubh)}(h **Return**h]j)}(hj6h]hReturn}(hj7hhhNhNubah}(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.chMhj-6ubh)}(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.chMhj-6ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjD7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@7hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM1ubj )}(h h]h }(hjS7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@7hhhjR7hM1ubj)}(hmas_store_prealloch]j)}(hmas_store_prealloch]hmas_store_prealloc}(hje7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhja7ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj@7hhhjR7hM1ubj )}(h#(struct ma_state *mas, void *entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj}7ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj}7ubh)}(hhh]j)}(hma_stateh]hma_state}(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj7modnameN classnameNj# j& )}j) ]j, )}j jg7sbc.mas_store_preallocasbuh1hhj}7ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj}7ubj@ )}(hjh]h*}(hj7hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj}7ubj)}(hmash]hmas}(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj}7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjy7ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubj )}(h h]h }(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubj@ )}(hjh]h*}(hj8hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj7ubj)}(hentryh]hentry}(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjy7ubeh}(h]h ]h"]h$]h&]hhuh1j hj@7hhhjR7hM1ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj<7hhhjR7hM1ubah}(h]j77ah ](j j! eh"]h$]h&]j% j& )j' huh1jhjR7hM1hj97hhubj) )}(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.}(hjF8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM1hjC8hhubah}(h]h ]h"]h$]h&]uh1j( hj97hhhjR7hM1ubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j^8j= j^8j> j? j@ uh1jhhhjhNhNubju )}(ha**Parameters** ``struct ma_state *mas`` The maple state ``void *entry`` The entry to store.h](h)}(h**Parameters**h]j)}(hjh8h]h Parameters}(hjj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf8ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM5hjb8ubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hj8h]hstruct ma_state *mas}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM3hj8ubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hM3hj8ubah}(h]h ]h"]h$]h&]uh1jEhj8ubeh}(h]h ]h"]h$]h&]uh1j/hj8hM3hj~8ubj0)}(h#``void *entry`` The entry to store.h](j6)}(h``void *entry``h]j~)}(hj8h]h void *entry}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM5hj8ubjF)}(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.chM4hj8ubah}(h]h ]h"]h$]h&]uh1jEhj8ubeh}(h]h ]h"]h$]h&]uh1j/hj8hM5hj~8ubeh}(h]h ]h"]h$]h&]uh1j*hjb8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hinth]hint}(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMOubj )}(h h]h }(hj)9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9hhhj(9hMOubj)}(hmas_preallocateh]j)}(hmas_preallocateh]hmas_preallocate}(hj;9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj79ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj9hhhj(9hMOubj )}(h.(struct ma_state *mas, void *entry, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjW9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjS9ubj )}(h h]h }(hjd9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjS9ubh)}(hhh]j)}(hma_stateh]hma_state}(hju9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjr9ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjw9modnameN classnameNj# j& )}j) ]j, )}j j=9sbc.mas_preallocateasbuh1hhjS9ubj )}(h h]h }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjS9ubj@ )}(hjh]h*}(hj9hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjS9ubj)}(hmash]hmas}(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjS9ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjO9ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9ubj )}(h h]h }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9ubj@ )}(hjh]h*}(hj9hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj9ubj)}(hentryh]hentry}(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjO9ubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj :ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj:modnameN classnameNj# j& )}j) ]j9c.mas_preallocateasbuh1hhj:ubj )}(h h]h }(hj,:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:ubj)}(hgfph]hgfp}(hj::hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjO9ubeh}(h]h ]h"]h$]h&]hhuh1j hj9hhhj(9hMOubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj9hhhj(9hMOubah}(h]j 9ah ](j j! eh"]h$]h&]j% j& )j' huh1jhj(9hMOhj9hhubj) )}(hhh]h)}(h.Preallocate enough nodes for a store operationh]h.Preallocate enough nodes for a store operation}(hjd:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMOhja:hhubah}(h]h ]h"]h$]h&]uh1j( hj9hhhj(9hMOubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j|:j= j|:j> j? j@ uh1jhhhjhNhNubju )}(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)}(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](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hj:h]hstruct ma_state *mas}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMPhj:ubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMPhj:ubah}(h]h ]h"]h$]h&]uh1jEhj:ubeh}(h]h ]h"]h$]h&]uh1j/hj:hMPhj:ubj0)}(h.``void *entry`` The entry that will be stored h](j6)}(h``void *entry``h]j~)}(hj:h]h void *entry}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMQhj:ubjF)}(hhh]h)}(hThe entry that will be storedh]hThe entry that will be stored}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMQhj:ubah}(h]h ]h"]h$]h&]uh1jEhj:ubeh}(h]h ]h"]h$]h&]uh1j/hj:hMQhj:ubj0)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j6)}(h ``gfp_t gfp``h]j~)}(hj;h]h gfp_t gfp}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj;ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMRhj;ubjF)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hj0;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,;hMRhj-;ubah}(h]h ]h"]h$]h&]uh1jEhj;ubeh}(h]h ]h"]h$]h&]uh1j/hj,;hMRhj:ubeh}(h]h ]h"]h$]h&]uh1j*hj:ubh)}(h **Return**h]j)}(hjR;h]hReturn}(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.chMThj:ubh)}(h70 on success, -ENOMEM if memory could not be allocated.h]h70 on success, -ENOMEM if memory could not be allocated.}(hjh;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMThj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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*}(hj;hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj;hhhj;hMubj)}(hmas_nexth]j)}(hmas_nexth]hmas_next}(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj;ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj;hhhj;hMubj )}(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 ]j ah"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&] refdomainj6 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 ]jK ah"]h$]h&]uh1j? hj;ubj)}(hmash]hmas}(hj:<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;ubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hjS<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjO<ubj )}(h h]h }(hja<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjO<ubj )}(hlongh]hlong}(hjo<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjO<ubj )}(h h]h }(hj}<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjO<ubj)}(hmaxh]hmax}(hj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjO<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)}(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.chMhj<hhubah}(h]h ]h"]h$]h&]uh1j( hj;hhhj;hMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j<j= j<j> j? j@ uh1jhhhjhNhNubju )}(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.chMhj<ubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hj<h]hstruct ma_state *mas}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj<ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj<ubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj =hMhj =ubah}(h]h ]h"]h$]h&]uh1jEhj<ubeh}(h]h ]h"]h$]h&]uh1j/hj =hMhj<ubj0)}(h2``unsigned long max`` The maximum index to check. h](j6)}(h``unsigned long max``h]j~)}(hj/=h]hunsigned long max}(hj1=hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj-=ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj)=ubjF)}(hhh]h)}(hThe maximum index to check.h]hThe maximum index to check.}(hjH=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjD=hMhjE=ubah}(h]h ]h"]h$]h&]uh1jEhj)=ubeh}(h]h ]h"]h$]h&]uh1j/hjD=hMhj<ubeh}(h]h ]h"]h$]h&]uh1j*hj<ubh)}(h**Description**h]j)}(hjj=h]h Description}(hjl=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh=ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj<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 }(hj=hhhNhNubj)}(h**mas->index**h]h mas->index}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubhG. 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.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.chMhj<ubh)}(hThe next entry or ``NULL``h](hThe next entry or }(hj=hhhNhNubj~)}(h``NULL``h]hNULL}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj=ubeh}(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&]uh1jt 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](j )}(hvoidh]hvoid}(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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*}(hj>hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj=hhhj>hMubj)}(hmas_next_rangeh]j)}(hmas_next_rangeh]hmas_next_range}(hj$>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj >ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj=hhhj>hMubj )}(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 }(hjM>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<>ubh)}(hhh]j)}(hma_stateh]hma_state}(hj^>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj[>ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj`>modnameN classnameNj# j& )}j) ]j, )}j j&>sbc.mas_next_rangeasbuh1hhj<>ubj )}(h h]h }(hj~>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<>ubj@ )}(hjh]h*}(hj>hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj<>ubj)}(hmash]hmas}(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj<>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj8>ubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubj )}(h h]h }(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubj )}(hlongh]hlong}(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubj )}(h h]h }(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubj)}(hmaxh]hmax}(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj8>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)}(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.chMhj?hhubah}(h]h ]h"]h$]h&]uh1j( hj=hhhj>hMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j,?j= j,?j> j? j@ uh1jhhhjhNhNubju )}(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)}(hj6?h]h Parameters}(hj8?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4?ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj0?ubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hjU?h]hstruct ma_state *mas}(hjW?hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjS?ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjO?ubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjn?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjj?hMhjk?ubah}(h]h ]h"]h$]h&]uh1jEhjO?ubeh}(h]h ]h"]h$]h&]uh1j/hjj?hMhjL?ubj0)}(h2``unsigned long max`` The maximum index to check. h](j6)}(h``unsigned long max``h]j~)}(hj?h]hunsigned long max}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj?ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj?ubjF)}(hhh]h)}(hThe maximum index to check.h]hThe maximum index to check.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jEhj?ubeh}(h]h ]h"]h$]h&]uh1j/hj?hMhjL?ubeh}(h]h ]h"]h$]h&]uh1j*hj0?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.chMhj0?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.chMhj0?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.chMhj0?ubh)}(hThe next entry or ``NULL``h](hThe next entry or }(hj*@hhhNhNubj~)}(h``NULL``h]hNULL}(hj2@hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj*@ubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj0?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjg@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjc@hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjv@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjc@hhhju@hMubj@ )}(hjh]h*}(hj@hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjc@hhhju@hMubj)}(hmt_nexth]j)}(hmt_nexth]hmt_next}(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj@ubah}(h]h ](j j eh"]h$]h&]hhuh1jhjc@hhhju@hMubj )}(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 ]j ah"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&] refdomainj6 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 ]jK ah"]h$]h&]uh1j? hj@ubj)}(hmth]hmt}(hj AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@ubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hj#AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubj )}(h h]h }(hj1AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubj )}(hlongh]hlong}(hj?AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubj )}(h h]h }(hjMAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubj)}(hindexh]hindex}(hj[AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@ubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hjtAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpAubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpAubj )}(hlongh]hlong}(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpAubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpAubj)}(hmaxh]hmax}(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjpAubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@ubeh}(h]h ]h"]h$]h&]hhuh1j hjc@hhhju@hMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj_@hhhju@hMubah}(h]jZ@ah ](j j! eh"]h$]h&]j% j& )j' huh1jhju@hMhj\@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.chMhjAhhubah}(h]h ]h"]h$]h&]uh1j( hj\@hhhju@hMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jAj= jAj> j? j@ uh1jhhhjhNhNubju )}(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.chMhjAubj+)}(hhh](j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjBh]hstruct maple_tree *mt}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjBubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hj0BhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,BhMhj-Bubah}(h]h ]h"]h$]h&]uh1jEhjBubeh}(h]h ]h"]h$]h&]uh1j/hj,BhMhjBubj0)}(h(``unsigned long index`` The start index h](j6)}(h``unsigned long index``h]j~)}(hjPBh]hunsigned long index}(hjRBhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjNBubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjJBubjF)}(hhh]h)}(hThe start indexh]hThe start index}(hjiBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjeBhMhjfBubah}(h]h ]h"]h$]h&]uh1jEhjJBubeh}(h]h ]h"]h$]h&]uh1j/hjeBhMhjBubj0)}(h1``unsigned long max`` The maximum index to check h](j6)}(h``unsigned long max``h]j~)}(hjBh]hunsigned long max}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjBubjF)}(hhh]h)}(hThe maximum index to checkh]hThe maximum index to check}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMhjBubah}(h]h ]h"]h$]h&]uh1jEhjBubeh}(h]h ]h"]h$]h&]uh1j/hjBhMhjBubeh}(h]h ]h"]h$]h&]uh1j*hjAubh)}(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.chMhjAubh)}(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.chMhjAubh)}(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.chMhjAubh)}(h@The entry higher than **index** or ``NULL`` if nothing is found.h](hThe entry higher than }(hjChhhNhNubj)}(h **index**h]hindex}(hj ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubh or }(hjChhhNhNubj~)}(h``NULL``h]hNULL}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjCubh if nothing is found.}(hjChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjAubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjTChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjPChhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMJubj )}(h h]h }(hjcChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjPChhhjbChMJubj@ )}(hjh]h*}(hjqChhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjPChhhjbChMJubj)}(hmas_prevh]j)}(hmas_prevh]hmas_prev}(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj~Cubah}(h]h ](j j eh"]h$]h&]hhuh1jhjPChhhjbChMJubj )}(h)(struct ma_state *mas, unsigned long min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubj )}(h h]h }(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubh)}(hhh]j)}(hma_stateh]hma_state}(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjCmodnameN classnameNj# j& )}j) ]j, )}j jCsb c.mas_prevasbuh1hhjCubj )}(h h]h }(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubj@ )}(hjh]h*}(hjChhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjCubj)}(hmash]hmas}(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjCubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Dubj )}(h h]h }(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Dubj )}(hlongh]hlong}(hj,DhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Dubj )}(h h]h }(hj:DhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Dubj)}(hminh]hmin}(hjHDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj Dubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjCubeh}(h]h ]h"]h$]h&]hhuh1j hjPChhhjbChMJubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjLChhhjbChMJubah}(h]jGCah ](j j! eh"]h$]h&]j% j& )j' huh1jhjbChMJhjIChhubj) )}(hhh]h)}(hGet the previous entryh]hGet the previous entry}(hjrDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMJhjoDhhubah}(h]h ]h"]h$]h&]uh1j( hjIChhhjbChMJubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jDj= jDj> j? j@ uh1jhhhjhNhNubju )}(hX2**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. Will reset mas to ma_start if the status is ma_none. Will stop on not searchable nodes. **Return** the previous value or ``NULL``.h](h)}(h**Parameters**h]j)}(hjDh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMNhjDubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hjDh]hstruct ma_state *mas}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjDubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMKhjDubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMKhjDubah}(h]h ]h"]h$]h&]uh1jEhjDubeh}(h]h ]h"]h$]h&]uh1j/hjDhMKhjDubj0)}(h2``unsigned long min`` The minimum value to check. h](j6)}(h``unsigned long min``h]j~)}(hjDh]hunsigned long min}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjDubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMLhjDubjF)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhMLhjEubah}(h]h ]h"]h$]h&]uh1jEhjDubeh}(h]h ]h"]h$]h&]uh1j/hjEhMLhjDubeh}(h]h ]h"]h$]h&]uh1j*hjDubh)}(h**Description**h]j)}(hj'Eh]h Description}(hj)EhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%Eubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMNhjDubh)}(hMust hold rcu_read_lock or the write lock. Will reset mas to ma_start if the status is ma_none. Will stop on not searchable nodes.h]hMust hold rcu_read_lock or the write lock. Will reset mas to ma_start if the status is ma_none. Will stop on not searchable nodes.}(hj=EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMMhjDubh)}(h **Return**h]j)}(hjNEh]hReturn}(hjPEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLEubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMQhjDubh)}(hthe previous value or ``NULL``.h](hthe previous value or }(hjdEhhhNhNubj~)}(h``NULL``h]hNULL}(hjlEhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdEubh.}(hjdEhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMRhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jt hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_prev_range (C function)c.mas_prev_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(h?void * mas_prev_range (struct ma_state *mas, unsigned long min)h]j)}(h=void *mas_prev_range(struct ma_state *mas, unsigned long min)h](j )}(hvoidh]hvoid}(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjEhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM`ubj )}(h h]h }(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjEhhhjEhM`ubj@ )}(hjh]h*}(hjEhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjEhhhjEhM`ubj)}(hmas_prev_rangeh]j)}(hmas_prev_rangeh]hmas_prev_range}(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjEubah}(h]h ](j j eh"]h$]h&]hhuh1jhjEhhhjEhM`ubj )}(h)(struct ma_state *mas, unsigned long min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjEubj )}(h h]h }(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjEubh)}(hhh]j)}(hma_stateh]hma_state}(hj FhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj Fubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjFmodnameN classnameNj# j& )}j) ]j, )}j jEsbc.mas_prev_rangeasbuh1hhjEubj )}(h h]h }(hj-FhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjEubj@ )}(hjh]h*}(hj;FhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjEubj)}(hmash]hmas}(hjHFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjEubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hjaFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]Fubj )}(h h]h }(hjoFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]Fubj )}(hlongh]hlong}(hj}FhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]Fubj )}(h h]h }(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]Fubj)}(hminh]hmin}(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj]Fubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjEubeh}(h]h ]h"]h$]h&]hhuh1j hjEhhhjEhM`ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjEhhhjEhM`ubah}(h]jEah ](j j! eh"]h$]h&]j% j& )j' huh1jhjEhM`hjEhhubj) )}(hhh]h)}(hAdvance to the previous rangeh]hAdvance to the previous range}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM`hjFhhubah}(h]h ]h"]h$]h&]uh1j( hjEhhhjEhM`ubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jFj= jFj> j? j@ uh1jhhhjhNhNubju )}(hXd**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long min`` The minimum value to check. **Description** Sets **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. **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.chMdhjFubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hjGh]hstruct ma_state *mas}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjGubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMahjFubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhMahjGubah}(h]h ]h"]h$]h&]uh1jEhjFubeh}(h]h ]h"]h$]h&]uh1j/hjGhMahjFubj0)}(h2``unsigned long min`` The minimum value to check. h](j6)}(h``unsigned long min``h]j~)}(hj=Gh]hunsigned long min}(hj?GhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj;Gubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbhj7GubjF)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hjVGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRGhMbhjSGubah}(h]h ]h"]h$]h&]uh1jEhj7Gubeh}(h]h ]h"]h$]h&]uh1j/hjRGhMbhjFubeh}(h]h ]h"]h$]h&]uh1j*hjFubh)}(h**Description**h]j)}(hjxGh]h Description}(hjzGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvGubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMdhjFubh)}(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 }(hjGhhhNhNubj)}(h**mas->index**h]h mas->index}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubh and }(hjGhhhNhNubj)}(h **mas->last**h]h mas->last}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubh 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.}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMchjFubh)}(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.chMhhjFubh)}(hthe previous value or ``NULL``.h](hthe previous value or }(hjGhhhNhNubj~)}(h``NULL``h]hNULL}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjGubh.}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMihjFubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMwubj )}(h h]h }(hj)HhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHhhhj(HhMwubj@ )}(hjh]h*}(hj7HhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjHhhhj(HhMwubj)}(hmt_prevh]j)}(hmt_prevh]hmt_prev}(hjHHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjDHubah}(h]h ](j j eh"]h$]h&]hhuh1jhjHhhhj(HhMwubj )}(h?(struct maple_tree *mt, unsigned long index, unsigned long min)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjdHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`Hubj )}(h h]h }(hjqHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`Hubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjHmodnameN classnameNj# j& )}j) ]j, )}j jJHsb c.mt_prevasbuh1hhj`Hubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`Hubj@ )}(hjh]h*}(hjHhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj`Hubj)}(hmth]hmt}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj`Hubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\Hubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHubj )}(hlongh]hlong}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHubj )}(h h]h }(hjIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHubj)}(hindexh]hindex}(hjIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\Hubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hj'IhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#Iubj )}(h h]h }(hj5IhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#Iubj )}(hlongh]hlong}(hjCIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#Iubj )}(h h]h }(hjQIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#Iubj)}(hminh]hmin}(hj_IhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj#Iubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\Hubeh}(h]h ]h"]h$]h&]hhuh1j hjHhhhj(HhMwubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjHhhhj(HhMwubah}(h]j Hah ](j j! eh"]h$]h&]j% j& )j' huh1jhj(HhMwhjHhhubj) )}(hhh]h)}(h(get the previous value in the maple treeh]h(get the previous value in the maple tree}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMwhjIhhubah}(h]h ]h"]h$]h&]uh1j( hjHhhhj(HhMwubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jIj= jIj> j? j@ uh1jhhhjhNhNubju )}(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.chM{hjIubj+)}(hhh](j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjIh]hstruct maple_tree *mt}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjIubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMxhjIubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMxhjIubah}(h]h ]h"]h$]h&]uh1jEhjIubeh}(h]h ]h"]h$]h&]uh1j/hjIhMxhjIubj0)}(h(``unsigned long index`` The start index h](j6)}(h``unsigned long index``h]j~)}(hjJh]hunsigned long index}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjJubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMyhjIubjF)}(hhh]h)}(hThe start indexh]hThe start index}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhMyhjJubah}(h]h ]h"]h$]h&]uh1jEhjIubeh}(h]h ]h"]h$]h&]uh1j/hjJhMyhjIubj0)}(h1``unsigned long min`` The minimum index to check h](j6)}(h``unsigned long min``h]j~)}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:Jubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMzhj6JubjF)}(hhh]h)}(hThe minimum index to checkh]hThe minimum index to check}(hjUJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQJhMzhjRJubah}(h]h ]h"]h$]h&]uh1jEhj6Jubeh}(h]h ]h"]h$]h&]uh1j/hjQJhMzhjIubeh}(h]h ]h"]h$]h&]uh1j*hjIubh)}(h**Description**h]j)}(hjwJh]h Description}(hjyJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuJubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM|hjIubh)}(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}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM{hjIubh)}(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 }(hjJhhhNhNubj~)}(h``NULL``h]hNULL}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjJubh 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&]uh1jt 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](j )}(hvoidh]hvoid}(hjKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjKhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjKhhhjKhMubj)}(h mas_pauseh]j)}(h mas_pauseh]h mas_pause}(hj(KhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj$Kubah}(h]h ](j j eh"]h$]h&]hhuh1jhjKhhhjKhMubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjDKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@Kubj )}(h h]h }(hjQKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@Kubh)}(hhh]j)}(hma_stateh]hma_state}(hjbKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj_Kubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjdKmodnameN classnameNj# j& )}j) ]j, )}j j*Ksb c.mas_pauseasbuh1hhj@Kubj )}(h h]h }(hjKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@Kubj@ )}(hjh]h*}(hjKhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj@Kubj)}(hmash]hmas}(hjKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj@Kubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj j? j@ uh1jhhhjhNhNubju )}(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]j0)}(h2``struct ma_state *mas`` The maple state to pause h](j6)}(h``struct ma_state *mas``h]j~)}(hjLh]hstruct ma_state *mas}(hj LhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjLubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjLubjF)}(hhh]h)}(hThe maple state to pauseh]hThe maple state to pause}(hj!LhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhMhjLubah}(h]h ]h"]h$]h&]uh1jEhjLubeh}(h]h ]h"]h$]h&]uh1j/hjLhMhjKubah}(h]h ]h"]h$]h&]uh1j*hjKubh)}(h**Description**h]j)}(hjCLh]h Description}(hjELhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjALubah}(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 }(hjYLhhhNhNubj)}(h**mas**h]hmas}(hjaLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYLubh 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.}(hjYLhhhNhNubeh}(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&]uh1jt 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](j )}(hj h]hbool}(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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 ]j ah"]h$]h&]uh1jhjLubah}(h]h ](j j eh"]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 ]j ah"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&] refdomainj6 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*}(hj"MhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjLubj)}(hmash]hmas}(hj/MhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjLubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hjHMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDMubj )}(h h]h }(hjVMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDMubj )}(hlongh]hlong}(hjdMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDMubj )}(h h]h }(hjrMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDMubj)}(hmaxh]hmax}(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjDMubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjLubj )}(h void **entryh](j )}(hvoidh]hvoid}(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjMubj )}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjMubj@ )}(hjh]h*}(hjMhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjMubj@ )}(hjh]h*}(hjMhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjMubj)}(hentryh]hentry}(hjMhhhNhNubah}(h]h ]j ah"]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 hjLhhhjLhMubah}(h]jLah ](j j! eh"]h$]h&]j% j& )j' huh1jhjLhMhjLhhubj) )}(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( hjLhhhjLhMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jNj= jNj> j? j@ uh1jhhhjhNhNubju )}(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}(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.chMhjNubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hj:Nh]hstruct ma_state *mas}(hjindex 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 }(hjJPhhhNhNubj~)}(h``max``h]hmax}(hjRPhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjJPubh-. Otherwise, find the entry after mas->index.}(hjJPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjGPhhubah}(h]h ]h"]h$]h&]uh1j( hj!Ohhhj:OhMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jtPj= jtPj> j? j@ uh1jhhhjhNhNubju )}(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)}(hj~Ph]h Parameters}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|Pubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxPubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hjPh]hstruct ma_state *mas}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjPubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjPubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhMhjPubah}(h]h ]h"]h$]h&]uh1jEhjPubeh}(h]h ]h"]h$]h&]uh1j/hjPhMhjPubj0)}(h2``unsigned long max`` The maximum value to check. h](j6)}(h``unsigned long max``h]j~)}(hjPh]hunsigned long max}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjPubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjPubjF)}(hhh]h)}(hThe maximum value to check.h]hThe maximum value to check.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhMhjPubah}(h]h ]h"]h$]h&]uh1jEhjPubeh}(h]h ]h"]h$]h&]uh1j/hjPhMhjPubeh}(h]h ]h"]h$]h&]uh1j*hjxPubh)}(h**Description**h]j)}(hjQh]h Description}(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.chMhjxPubh)}(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 }(hj'QhhhNhNubj)}(h**mas->status**h]h mas->status}(hj/QhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'Qubh to ma_overflow.}(hj'QhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxPubh)}(h **Return**h]j)}(hjJQh]hReturn}(hjLQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHQubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxPubh)}(hThe entry or ``NULL``.h](h The entry or }(hj`QhhhNhNubj~)}(h``NULL``h]hNULL}(hjhQhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj`Qubh.}(hj`QhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxPubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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 ]jK ah"]h$]h&]uh1j? hjQhhhjQhMubj)}(hmas_find_rangeh]j)}(hmas_find_rangeh]hmas_find_range}(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjQubah}(h]h ](j j eh"]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}(hj RhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj RmodnameN classnameNj# j& )}j) ]j, )}j jQsbc.mas_find_rangeasbuh1hhjQubj )}(h h]h }(hj)RhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQubj@ )}(hjh]h*}(hj7RhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjQubj)}(hmash]hmas}(hjDRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjQubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hj]RhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYRubj )}(h h]h }(hjkRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYRubj )}(hlongh]hlong}(hjyRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYRubj )}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYRubj)}(hmaxh]hmax}(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjYRubeh}(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 }(hjRhhhNhNubj~)}(h``max``h]hmax}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjRubh1. 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 ](j6 functioneh"]h$]h&]j; j6 j< jRj= jRj> j? j@ uh1jhhhjhNhNubju )}(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](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hjSh]hstruct ma_state *mas}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjSubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj SubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj+ShhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'ShMhj(Subah}(h]h ]h"]h$]h&]uh1jEhj Subeh}(h]h ]h"]h$]h&]uh1j/hj'ShMhj Subj0)}(h2``unsigned long max`` The maximum value to check. h](j6)}(h``unsigned long max``h]j~)}(hjKSh]hunsigned long max}(hjMShhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjISubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjESubjF)}(hhh]h)}(hThe maximum value to check.h]hThe maximum value to check.}(hjdShhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`ShMhjaSubah}(h]h ]h"]h$]h&]uh1jEhjESubeh}(h]h ]h"]h$]h&]uh1j/hj`ShMhj Subeh}(h]h ]h"]h$]h&]uh1j*hjRubh)}(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.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 }(hjShhhNhNubj~)}(h``NULL``h]hNULL}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjSubh.}(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&]uh1jt 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](j )}(hj h]hbool}(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjThhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM-ubj )}(h h]h }(hj$ThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjThhhj#ThM-ubj)}(hmas_find_rev_setuph]j)}(hmas_find_rev_setuph]hmas_find_rev_setup}(hj6ThhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj2Tubah}(h]h ](j j eh"]h$]h&]hhuh1jhjThhhj#ThM-ubj )}(h7(struct ma_state *mas, unsigned long min, void **entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjRThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNTubj )}(h h]h }(hj_ThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNTubh)}(hhh]j)}(hma_stateh]hma_state}(hjpThhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjmTubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjrTmodnameN classnameNj# j& )}j) ]j, )}j j8Tsbc.mas_find_rev_setupasbuh1hhjNTubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNTubj@ )}(hjh]h*}(hjThhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjNTubj)}(hmash]hmas}(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjNTubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjJTubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj )}(hlongh]hlong}(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj)}(hminh]hmin}(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjTubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjJTubj )}(h void **entryh](j )}(hvoidh]hvoid}(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjUubj )}(h h]h }(hj#UhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjUubj@ )}(hjh]h*}(hj1UhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjUubj@ )}(hjh]h*}(hj>UhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjUubj)}(hentryh]hentry}(hjKUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjJTubeh}(h]h ]h"]h$]h&]hhuh1j hjThhhj#ThM-ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjThhhj#ThM-ubah}(h]j Tah ](j j! eh"]h$]h&]j% j& )j' huh1jhj#ThM-hj Thhubj) )}(hhh]h)}(h,Internal function to set up mas_find_*_rev()h]h,Internal function to set up mas_find_*_rev()}(hjuUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM-hjrUhhubah}(h]h ]h"]h$]h&]uh1j( hj Thhhj#ThM-ubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jUj= jUj> j? j@ uh1jhhhjhNhNubju )}(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.chM1hjUubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hjUh]hstruct ma_state *mas}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjUubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM.hjUubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhM.hjUubah}(h]h ]h"]h$]h&]uh1jEhjUubeh}(h]h ]h"]h$]h&]uh1j/hjUhM.hjUubj0)}(h(``unsigned long min`` The minimum index h](j6)}(h``unsigned long min``h]j~)}(hjUh]hunsigned long min}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjUubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM/hjUubjF)}(hhh]h)}(hThe minimum indexh]hThe minimum index}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhM/hjVubah}(h]h ]h"]h$]h&]uh1jEhjUubeh}(h]h ]h"]h$]h&]uh1j/hjVhM/hjUubj0)}(h&``void **entry`` Pointer to the entry h](j6)}(h``void **entry``h]j~)}(hj(Vh]h void **entry}(hj*VhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj&Vubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM0hj"VubjF)}(hhh]h)}(hPointer to the entryh]hPointer to the entry}(hjAVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=VhM0hj>Vubah}(h]h ]h"]h$]h&]uh1jEhj"Vubeh}(h]h ]h"]h$]h&]uh1j/hj=VhM0hjUubeh}(h]h ]h"]h$]h&]uh1j*hjUubh)}(h **Return**h]j)}(hjcVh]hReturn}(hjeVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaVubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM2hjUubh)}(h-True if entry is the answer, false otherwise.h]h-True if entry is the answer, false otherwise.}(hjyVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM2hjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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 ]jK ah"]h$]h&]uh1j? hjVhhhjVhMubj)}(h mas_find_revh]j)}(h mas_find_revh]h mas_find_rev}(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjVubah}(h]h ](j j eh"]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}(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj Wubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjWmodnameN classnameNj# j& )}j) ]j, )}j jVsbc.mas_find_revasbuh1hhjVubj )}(h h]h }(hj0WhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjVubj@ )}(hjh]h*}(hj>WhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjVubj)}(hmash]hmas}(hjKWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjVubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hjdWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`Wubj )}(h h]h }(hjrWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`Wubj )}(hlongh]hlong}(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`Wubj )}(h h]h }(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`Wubj)}(hminh]hmin}(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj`Wubeh}(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 }(hjWhhhNhNubj~)}(h``min``h]hmin}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjWubhC. Otherwise find the first non-null entry below mas->index down to }(hjWhhhNhNubj~)}(h``min``h]hmin}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjWubh.}(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 ](j6 functioneh"]h$]h&]j; j6 j< jXj= jXj> j? j@ uh1jhhhjhNhNubju )}(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)}(hj Xh]h Parameters}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Xubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjXubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hj+Xh]hstruct ma_state *mas}(hj-XhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj)Xubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj%XubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjDXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@XhMhjAXubah}(h]h ]h"]h$]h&]uh1jEhj%Xubeh}(h]h ]h"]h$]h&]uh1j/hj@XhMhj"Xubj0)}(h2``unsigned long min`` The minimum value to check. h](j6)}(h``unsigned long min``h]j~)}(hjdXh]hunsigned long min}(hjfXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjbXubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj^XubjF)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hj}XhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyXhMhjzXubah}(h]h ]h"]h$]h&]uh1jEhj^Xubeh}(h]h ]h"]h$]h&]uh1j/hjyXhMhj"Xubeh}(h]h ]h"]h$]h&]uh1j*hjXubh)}(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.chMhjXubh)}(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.chMhjXubh)}(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.chMhjXubh)}(hThe entry or ``NULL``.h](h The entry or }(hjXhhhNhNubj~)}(h``NULL``h]hNULL}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjXubh.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjXubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hj/YhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+YhhhU/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 hj+Yhhhj=YhMubj@ )}(hjh]h*}(hjLYhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj+Yhhhj=YhMubj)}(hmas_find_range_revh]j)}(hmas_find_range_revh]hmas_find_range_rev}(hj]YhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjYYubah}(h]h ](j j eh"]h$]h&]hhuh1jhj+Yhhhj=YhMubj )}(h)(struct ma_state *mas, unsigned long min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjyYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjuYubj )}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjuYubh)}(hhh]j)}(hma_stateh]hma_state}(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjYmodnameN classnameNj# j& )}j) ]j, )}j j_Ysbc.mas_find_range_revasbuh1hhjuYubj )}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjuYubj@ )}(hjh]h*}(hjYhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjuYubj)}(hmash]hmas}(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjuYubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjqYubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubj )}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubj )}(hlongh]hlong}(hjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubj )}(h h]h }(hjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubj)}(hminh]hmin}(hj#ZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjYubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjqYubeh}(h]h ]h"]h$]h&]hhuh1j hj+Yhhhj=YhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj'Yhhhj=YhMubah}(h]j"Yah ](j j! eh"]h$]h&]j% j& )j' huh1jhj=YhMhj$Yhhubj) )}(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 }(hjMZhhhNhNubj~)}(h``min``h]hmin}(hjUZhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjMZubhB. Otherwise advance to the previous slot after mas->index down to }(hjMZhhhNhNubj~)}(h``min``h]hmin}(hjgZhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjMZubh.}(hjMZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjJZhhubah}(h]h ]h"]h$]h&]uh1j( hj$Yhhhj=YhMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jZj= jZj> j? j@ uh1jhhhjhNhNubju )}(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&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjZubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hjZh]hstruct ma_state *mas}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjZubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjZubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhjZubah}(h]h ]h"]h$]h&]uh1jEhjZubeh}(h]h ]h"]h$]h&]uh1j/hjZhMhjZubj0)}(h2``unsigned long min`` The minimum value to check. h](j6)}(h``unsigned long min``h]j~)}(hjZh]hunsigned long min}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjZubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjZubjF)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hMhj[ubah}(h]h ]h"]h$]h&]uh1jEhjZubeh}(h]h ]h"]h$]h&]uh1j/hj[hMhjZubeh}(h]h ]h"]h$]h&]uh1j*hjZubh)}(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.chMhjZubh)}(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}(hjD[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.chMhjZubh)}(h **Return**h]j)}(hj_[h]hReturn}(hja[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.chMhjZubh)}(hThe entry or ``NULL``.h](h The entry or }(hju[hhhNhNubj~)}(h``NULL``h]hNULL}(hj}[hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hju[ubh.}(hju[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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*}(hj[hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj[hhhj[hMubj)}(h mas_eraseh]j)}(h mas_eraseh]h mas_erase}(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj[ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj[hhhj[hMubj )}(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 ]j ah"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&] refdomainj6 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*}(hjL\hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj[ubj)}(hmash]hmas}(hjY\hhhNhNubah}(h]h ]j ah"]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)}(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.}(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[hhhj[hMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j\j= j\j> j? j@ uh1jhhhjhNhNubju )}(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.chMhj\ubj+)}(hhh]j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hj\h]hstruct ma_state *mas}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj\ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj\ubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hMhj\ubah}(h]h ]h"]h$]h&]uh1jEhj\ubeh}(h]h ]h"]h$]h&]uh1j/hj\hMhj\ubah}(h]h ]h"]h$]h&]uh1j*hj\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)}(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}(hjA]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.chMhj\ubh)}(h **Return**h]j)}(hj\]h]hReturn}(hj^]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZ]ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj\ubh)}(hTthe entry that was erased or ``NULL``, **mas->index** and **mas->last** are updated.h](hthe entry that was erased or }(hjr]hhhNhNubj~)}(h``NULL``h]hNULL}(hjz]hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjr]ubh, }(hjr]hhhNhNubj)}(h**mas->index**h]h mas->index}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr]ubh and }(hjr]hhhNhNubj)}(h **mas->last**h]h mas->last}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr]ubh are updated.}(hjr]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&]uh1jt 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](j )}(hj h]hbool}(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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 mas_nomemh]j)}(h mas_nomemh]h mas_nomem}(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj]ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj]hhhj]hMubj )}(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}(hj1^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj.^ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj3^modnameN classnameNj# j& )}j) ]j, )}j j]sb c.mas_nomemasbuh1hhj^ubj )}(h h]h }(hjQ^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj^ubj@ )}(hjh]h*}(hj_^hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj^ubj)}(hmash]hmas}(hjl^hhhNhNubah}(h]h ]j ah"]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 ]j ah"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj^modnameN classnameNj# j& )}j) ]jM^ c.mas_nomemasbuh1hhj^ubj )}(h h]h }(hj^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj^ubj)}(hgfph]hgfp}(hj^hhhNhNubah}(h]h ]j ah"]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)}(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.chMhj^hhubah}(h]h ]h"]h$]h&]uh1j( hj]hhhj]hMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j^j= j^j> j? j@ uh1jhhhjhNhNubju )}(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.chMhj^ubj+)}(hhh](j0)}(h)``struct ma_state *mas`` The maple state h](j6)}(h``struct ma_state *mas``h]j~)}(hj_h]hstruct ma_state *mas}(hj!_hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj_ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj_ubjF)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj8_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4_hMhj5_ubah}(h]h ]h"]h$]h&]uh1jEhj_ubeh}(h]h ]h"]h$]h&]uh1j/hj4_hMhj_ubj0)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j6)}(h ``gfp_t gfp``h]j~)}(hjX_h]h gfp_t gfp}(hjZ_hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjV_ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjR_ubjF)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hjq_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjm_hMhjn_ubah}(h]h ]h"]h$]h&]uh1jEhjR_ubeh}(h]h ]h"]h$]h&]uh1j/hjm_hMhj_ubeh}(h]h ]h"]h$]h&]uh1j*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.chMhj^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.chMhj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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)}(h j? j@ uh1jhhhjhNhNubju )}(h**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long index`` The index to load **Return** the entry or ``NULL``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.chMhjaubj+)}(hhh](j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hj7ah]hstruct maple_tree *mt}(hj9ahhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj5aubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hj1aubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjPahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLahM hjMaubah}(h]h ]h"]h$]h&]uh1jEhj1aubeh}(h]h ]h"]h$]h&]uh1j/hjLahM hj.aubj0)}(h*``unsigned long index`` The index to load h](j6)}(h``unsigned long index``h]j~)}(hjpah]hunsigned long index}(hjrahhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjnaubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjjaubjF)}(hhh]h)}(hThe index to loadh]hThe index to load}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahM hjaubah}(h]h ]h"]h$]h&]uh1jEhjjaubeh}(h]h ]h"]h$]h&]uh1j/hjahM hj.aubeh}(h]h ]h"]h$]h&]uh1j*hjaubh)}(h **Return**h]j)}(hjah]hReturn}(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.chMhjaubh)}(hthe entry or ``NULL``h](h the entry or }(hjahhhNhNubj~)}(h``NULL``h]hNULL}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjaubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjaubeh}(h]h ] kernelindentah"]h$]h&]uh1jt hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_store_range (C function)c.mtree_store_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(hnint mtree_store_range (struct maple_tree *mt, unsigned long index, unsigned long last, void *entry, gfp_t gfp)h]j)}(hmint mtree_store_range(struct maple_tree *mt, unsigned long index, unsigned long last, void *entry, gfp_t gfp)h](j )}(hinth]hint}(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjahhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM1ubj )}(h h]h }(hj bhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjahhhj bhM1ubj)}(hmtree_store_rangeh]j)}(hmtree_store_rangeh]hmtree_store_range}(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjbubah}(h]h ](j j eh"]h$]h&]hhuh1jhjahhhj bhM1ubj )}(hX(struct maple_tree *mt, unsigned long index, unsigned long last, void *entry, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hj;bhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7bubj )}(h h]h }(hjHbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7bubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjYbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjVbubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj[bmodnameN classnameNj# j& )}j) ]j, )}j j!bsbc.mtree_store_rangeasbuh1hhj7bubj )}(h h]h }(hjybhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7bubj@ )}(hjh]h*}(hjbhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj7bubj)}(hmth]hmt}(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj7bubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj3bubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubj )}(h h]h }(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubj )}(hlongh]hlong}(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubj )}(h h]h }(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubj)}(hindexh]hindex}(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj3bubj )}(hunsigned long lasth](j )}(hunsignedh]hunsigned}(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubj )}(h h]h }(hj chhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubj )}(hlongh]hlong}(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubj )}(h h]h }(hj(chhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubj)}(hlasth]hlast}(hj6chhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjbubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj3bubj )}(h void *entryh](j )}(hvoidh]hvoid}(hjOchhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjKcubj )}(h h]h }(hj]chhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjKcubj@ )}(hjh]h*}(hjkchhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjKcubj)}(hentryh]hentry}(hjxchhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjKcubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj3bubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjcmodnameN classnameNj# j& )}j) ]jubc.mtree_store_rangeasbuh1hhjcubj )}(h h]h }(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjcubj)}(hgfph]hgfp}(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjcubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj3bubeh}(h]h ]h"]h$]h&]hhuh1j hjahhhj bhM1ubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjahhhj bhM1ubah}(h]jaah ](j j! eh"]h$]h&]j% j& )j' huh1jhj bhM1hjahhubj) )}(hhh]h)}(h Store an entry at a given range.h]h Store an entry at a given range.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM1hjchhubah}(h]h ]h"]h$]h&]uh1j( hjahhhj bhM1ubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jdj= jdj> j? j@ uh1jhhhjhNhNubju )}(hXX**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long index`` The start of the range ``unsigned long last`` The end of the range ``void *entry`` The entry to store ``gfp_t gfp`` The GFP_FLAGS to use for allocations **Return** 0 on success, -EINVAL on invalid request, -ENOMEM if memory could not be allocated.h](h)}(h**Parameters**h]j)}(hj dh]h Parameters}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj dubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM5hjdubj+)}(hhh](j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hj+dh]hstruct maple_tree *mt}(hj-dhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj)dubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM2hj%dubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjDdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@dhM2hjAdubah}(h]h ]h"]h$]h&]uh1jEhj%dubeh}(h]h ]h"]h$]h&]uh1j/hj@dhM2hj"dubj0)}(h/``unsigned long index`` The start of the range h](j6)}(h``unsigned long index``h]j~)}(hjddh]hunsigned long index}(hjfdhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjbdubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM3hj^dubjF)}(hhh]h)}(hThe start of the rangeh]hThe start of the range}(hj}dhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjydhM3hjzdubah}(h]h ]h"]h$]h&]uh1jEhj^dubeh}(h]h ]h"]h$]h&]uh1j/hjydhM3hj"dubj0)}(h,``unsigned long last`` The end of the range h](j6)}(h``unsigned long last``h]j~)}(hjdh]hunsigned long last}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM4hjdubjF)}(hhh]h)}(hThe end of the rangeh]hThe end of the range}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhM4hjdubah}(h]h ]h"]h$]h&]uh1jEhjdubeh}(h]h ]h"]h$]h&]uh1j/hjdhM4hj"dubj0)}(h#``void *entry`` The entry to store h](j6)}(h``void *entry``h]j~)}(hjdh]h void *entry}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM5hjdubjF)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhM5hjdubah}(h]h ]h"]h$]h&]uh1jEhjdubeh}(h]h ]h"]h$]h&]uh1j/hjdhM5hj"dubj0)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j6)}(h ``gfp_t gfp``h]j~)}(hjeh]h gfp_t gfp}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj eubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM6hj eubjF)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hj(ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$ehM6hj%eubah}(h]h ]h"]h$]h&]uh1jEhj eubeh}(h]h ]h"]h$]h&]uh1j/hj$ehM6hj"dubeh}(h]h ]h"]h$]h&]uh1j*hjdubh)}(h **Return**h]j)}(hjJeh]hReturn}(hjLehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHeubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM8hjdubh)}(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.}(hj`ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM8hjdubeh}(h]h ] kernelindentah"]h$]h&]uh1jt hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_store (C function) c.mtree_storehNtauh1jhjhhhNhNubj)}(hhh](j)}(hTint mtree_store (struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h]j)}(hSint mtree_store(struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h](j )}(hinth]hint}(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjehhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMQubj )}(h h]h }(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjehhhjehMQubj)}(h mtree_storeh]j)}(h mtree_storeh]h mtree_store}(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjeubah}(h]h ](j j eh"]h$]h&]hhuh1jhjehhhjehMQubj )}(hD(struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(h h]h }(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjemodnameN classnameNj# j& )}j) ]j, )}j jesb c.mtree_storeasbuh1hhjeubj )}(h h]h }(hj fhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj@ )}(hjh]h*}(hjfhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjeubj)}(hmth]hmt}(hj%fhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjeubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hj>fhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:fubj )}(h h]h }(hjLfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:fubj )}(hlongh]hlong}(hjZfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:fubj )}(h h]h }(hjhfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:fubj)}(hindexh]hindex}(hjvfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj:fubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjeubj )}(h void *entryh](j )}(hvoidh]hvoid}(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfubj )}(h h]h }(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfubj@ )}(hjh]h*}(hjfhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjfubj)}(hentryh]hentry}(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjeubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjfmodnameN classnameNj# j& )}j) ]jf c.mtree_storeasbuh1hhjfubj )}(h h]h }(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfubj)}(hgfph]hgfp}(hjghhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjeubeh}(h]h ]h"]h$]h&]hhuh1j hjehhhjehMQubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjehhhjehMQubah}(h]jeah ](j j! eh"]h$]h&]j% j& )j' huh1jhjehMQhjehhubj) )}(hhh]h)}(h Store an entry at a given index.h]h Store an entry at a given index.}(hj*ghhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMQhj'ghhubah}(h]h ]h"]h$]h&]uh1j( hjehhhjehMQubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jBgj= jBgj> j? j@ uh1jhhhjhNhNubju )}(hX/**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long index`` The index to store the value ``void *entry`` The entry to store ``gfp_t gfp`` The GFP_FLAGS to use for allocations **Return** 0 on success, -EINVAL on invalid request, -ENOMEM if memory could not be allocated.h](h)}(h**Parameters**h]j)}(hjLgh]h Parameters}(hjNghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJgubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMUhjFgubj+)}(hhh](j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjkgh]hstruct maple_tree *mt}(hjmghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjigubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMRhjegubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMRhjgubah}(h]h ]h"]h$]h&]uh1jEhjegubeh}(h]h ]h"]h$]h&]uh1j/hjghMRhjbgubj0)}(h5``unsigned long index`` The index to store the value h](j6)}(h``unsigned long index``h]j~)}(hjgh]hunsigned long index}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjgubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMShjgubjF)}(hhh]h)}(hThe index to store the valueh]hThe index to store the value}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMShjgubah}(h]h ]h"]h$]h&]uh1jEhjgubeh}(h]h ]h"]h$]h&]uh1j/hjghMShjbgubj0)}(h#``void *entry`` The entry to store h](j6)}(h``void *entry``h]j~)}(hjgh]h void *entry}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjgubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMThjgubjF)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMThjgubah}(h]h ]h"]h$]h&]uh1jEhjgubeh}(h]h ]h"]h$]h&]uh1j/hjghMThjbgubj0)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j6)}(h ``gfp_t gfp``h]j~)}(hjhh]h gfp_t gfp}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjhubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMUhjhubjF)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hj/hhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hhMUhj,hubah}(h]h ]h"]h$]h&]uh1jEhjhubeh}(h]h ]h"]h$]h&]uh1j/hj+hhMUhjbgubeh}(h]h ]h"]h$]h&]uh1j*hjFgubh)}(h **Return**h]j)}(hjQhh]hReturn}(hjShhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOhubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMWhjFgubh)}(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.}(hjghhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMWhjFgubeh}(h]h ] kernelindentah"]h$]h&]uh1jt hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_insert_range (C function)c.mtree_insert_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(hoint mtree_insert_range (struct maple_tree *mt, unsigned long first, unsigned long last, void *entry, gfp_t gfp)h]j)}(hnint mtree_insert_range(struct maple_tree *mt, unsigned long first, unsigned long last, void *entry, gfp_t gfp)h](j )}(hinth]hint}(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbubj )}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhhjhhMbubj)}(hmtree_insert_rangeh]j)}(hmtree_insert_rangeh]hmtree_insert_range}(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjhubah}(h]h ](j j eh"]h$]h&]hhuh1jhjhhhhjhhMbubj )}(hX(struct maple_tree *mt, unsigned long first, unsigned long last, void *entry, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj )}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjhmodnameN classnameNj# j& )}j) ]j, )}j jhsbc.mtree_insert_rangeasbuh1hhjhubj )}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj@ )}(hjh]h*}(hjihhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjhubj)}(hmth]hmt}(hj,ihhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjhubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjhubj )}(hunsigned long firsth](j )}(hunsignedh]hunsigned}(hjEihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAiubj )}(h h]h }(hjSihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAiubj )}(hlongh]hlong}(hjaihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAiubj )}(h h]h }(hjoihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAiubj)}(hfirsth]hfirst}(hj}ihhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjAiubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjhubj )}(hunsigned long lasth](j )}(hunsignedh]hunsigned}(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiubj )}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiubj )}(hlongh]hlong}(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiubj )}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiubj)}(hlasth]hlast}(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjhubj )}(h void *entryh](j )}(hvoidh]hvoid}(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiubj )}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiubj@ )}(hjh]h*}(hjjhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjiubj)}(hentryh]hentry}(hjjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjhubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hj,jhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj)jubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj.jmodnameN classnameNj# j& )}j) ]j ic.mtree_insert_rangeasbuh1hhj%jubj )}(h h]h }(hjJjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%jubj)}(hgfph]hgfp}(hjXjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj%jubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjhubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhhjhhMbubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhhjhhMbubah}(h]jhah ](j j! eh"]h$]h&]j% j& )j' huh1jhjhhMbhjhhhubj) )}(hhh]h)}(h6Insert an entry at a given range if there is no value.h]h6Insert an entry at a given range if there is no value.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbhjjhhubah}(h]h ]h"]h$]h&]uh1j( hjhhhhjhhMbubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jjj= jjj> j? j@ uh1jhhhjhNhNubju )}(hX|**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long first`` The start of the range ``unsigned long last`` The end of the range ``void *entry`` The entry to store ``gfp_t gfp`` The GFP_FLAGS to use for allocations. **Return** 0 on success, -EEXISTS if the range is occupied, -EINVAL on invalid request, -ENOMEM if memory could not be allocated.h](h)}(h**Parameters**h]j)}(hjjh]h Parameters}(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.chMfhjjubj+)}(hhh](j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjjh]hstruct maple_tree *mt}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjjubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMchjjubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhMchjjubah}(h]h ]h"]h$]h&]uh1jEhjjubeh}(h]h ]h"]h$]h&]uh1j/hjjhMchjjubj0)}(h/``unsigned long first`` The start of the range h](j6)}(h``unsigned long first``h]j~)}(hjjh]hunsigned long first}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjjubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMdhjjubjF)}(hhh]h)}(hThe start of the rangeh]hThe start of the range}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMdhjkubah}(h]h ]h"]h$]h&]uh1jEhjjubeh}(h]h ]h"]h$]h&]uh1j/hjkhMdhjjubj0)}(h,``unsigned long last`` The end of the range h](j6)}(h``unsigned long last``h]j~)}(hj5kh]hunsigned long last}(hj7khhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3kubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMehj/kubjF)}(hhh]h)}(hThe end of the rangeh]hThe end of the range}(hjNkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJkhMehjKkubah}(h]h ]h"]h$]h&]uh1jEhj/kubeh}(h]h ]h"]h$]h&]uh1j/hjJkhMehjjubj0)}(h#``void *entry`` The entry to store h](j6)}(h``void *entry``h]j~)}(hjnkh]h void *entry}(hjpkhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjlkubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMfhjhkubjF)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMfhjkubah}(h]h ]h"]h$]h&]uh1jEhjhkubeh}(h]h ]h"]h$]h&]uh1j/hjkhMfhjjubj0)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j6)}(h ``gfp_t gfp``h]j~)}(hjkh]h gfp_t gfp}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjkubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMghjkubjF)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMghjkubah}(h]h ]h"]h$]h&]uh1jEhjkubeh}(h]h ]h"]h$]h&]uh1j/hjkhMghjjubeh}(h]h ]h"]h$]h&]uh1j*hjjubh)}(h **Return**h]j)}(hjkh]hReturn}(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.chMihjjubh)}(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.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMihjjubeh}(h]h ] kernelindentah"]h$]h&]uh1jt hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_insert (C function)c.mtree_inserthNtauh1jhjhhhNhNubj)}(hhh](j)}(hUint mtree_insert (struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h]j)}(hTint mtree_insert(struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h](j )}(hinth]hint}(hj'lhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#lhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hj6lhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#lhhhj5lhMubj)}(h mtree_inserth]j)}(h mtree_inserth]h mtree_insert}(hjHlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjDlubah}(h]h ](j j eh"]h$]h&]hhuh1jhj#lhhhj5lhMubj )}(hD(struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjdlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`lubj )}(h h]h }(hjqlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`lubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjlmodnameN classnameNj# j& )}j) ]j, )}j jJlsbc.mtree_insertasbuh1hhj`lubj )}(h h]h }(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`lubj@ )}(hjh]h*}(hjlhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj`lubj)}(hmth]hmt}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj`lubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\lubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(h h]h }(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(hlongh]hlong}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(h h]h }(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj)}(hindexh]hindex}(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\lubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj'mhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#mubj )}(h h]h }(hj5mhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#mubj@ )}(hjh]h*}(hjCmhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj#mubj)}(hentryh]hentry}(hjPmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj#mubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\lubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hjlmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjimubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjnmmodnameN classnameNj# j& )}j) ]jlc.mtree_insertasbuh1hhjemubj )}(h h]h }(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjemubj)}(hgfph]hgfp}(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjemubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\lubeh}(h]h ]h"]h$]h&]hhuh1j hj#lhhhj5lhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjlhhhj5lhMubah}(h]jlah ](j j! eh"]h$]h&]j% j& )j' huh1jhj5lhMhjlhhubj) )}(hhh]h)}(h6Insert an entry at a given index if there is no value.h]h6Insert an entry at a given index if there is no value.}(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( hjlhhhj5lhMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jmj= jmj> j? j@ uh1jhhhjhNhNubju )}(hXS**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long index`` The index to store the value ``void *entry`` The entry to store ``gfp_t gfp`` The GFP_FLAGS to use for allocations. **Return** 0 on success, -EEXISTS if the range is occupied, -EINVAL on invalid request, -ENOMEM if memory could not be allocated.h](h)}(h**Parameters**h]j)}(hjmh]h Parameters}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjmubj+)}(hhh](j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjnh]hstruct maple_tree *mt}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjnubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjmubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jEhjmubeh}(h]h ]h"]h$]h&]uh1j/hjnhMhjmubj0)}(h5``unsigned long index`` The index to store the value h](j6)}(h``unsigned long index``h]j~)}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:nubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj6nubjF)}(hhh]h)}(hThe index to store the valueh]hThe index to store the value}(hjUnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQnhMhjRnubah}(h]h ]h"]h$]h&]uh1jEhj6nubeh}(h]h ]h"]h$]h&]uh1j/hjQnhMhjmubj0)}(h#``void *entry`` The entry to store h](j6)}(h``void *entry``h]j~)}(hjunh]h void *entry}(hjwnhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjsnubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjonubjF)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jEhjonubeh}(h]h ]h"]h$]h&]uh1j/hjnhMhjmubj0)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j6)}(h ``gfp_t gfp``h]j~)}(hjnh]h gfp_t gfp}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjnubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjnubjF)}(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&]uh1hhjnhMhjnubaSh}(h]h ]h"]h$]h&]uh1jEhjnubeh}(h]h ]h"]h$]h&]uh1j/hjnhMhjmubeh}(h]h ]h"]h$]h&]uh1j*hjmubh)}(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&]uh1jt 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](j )}(hinth]hint}(hj.ohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ohhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hj=ohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ohhhj j? j@ uh1jhhhjhNhNubju )}(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.chMhjqubj+)}(hhh](j0)}(h*``struct maple_tree *mt`` The maple tree. h](j6)}(h``struct maple_tree *mt``h]j~)}(hjrh]hstruct maple_tree *mt}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjrubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjrubjF)}(hhh]h)}(hThe maple tree.h]hThe maple tree.}(hj0rhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,rhMhj-rubah}(h]h ]h"]h$]h&]uh1jEhjrubeh}(h]h ]h"]h$]h&]uh1j/hj,rhMhjrubj0)}(h)``unsigned long *startp`` Pointer to ID. h](j6)}(h``unsigned long *startp``h]j~)}(hjPrh]hunsigned long *startp}(hjRrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjNrubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjJrubjF)}(hhh]h)}(hPointer to ID.h]hPointer to ID.}(hjirhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjerhMhjfrubah}(h]h ]h"]h$]h&]uh1jEhjJrubeh}(h]h ]h"]h$]h&]uh1j/hjerhMhjrubj0)}(h$``void *entry`` The entry to store. h](j6)}(h``void *entry``h]j~)}(hjrh]h void *entry}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjrubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjrubjF)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1jEhjrubeh}(h]h ]h"]h$]h&]uh1j/hjrhMhjrubj0)}(h;``unsigned long range_lo`` Lower bound of range to search. h](j6)}(h``unsigned long range_lo``h]j~)}(hjrh]hunsigned long range_lo}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjrubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjrubjF)}(hhh]h)}(hLower bound of range to search.h]hLower bound of range to search.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1jEhjrubeh}(h]h ]h"]h$]h&]uh1j/hjrhMhjrubj0)}(h;``unsigned long range_hi`` Upper bound of range to search. h](j6)}(h``unsigned long range_hi``h]j~)}(hjrh]hunsigned long range_hi}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjrubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjrubjF)}(hhh]h)}(hUpper bound of range to search.h]hUpper bound of range to search.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjsubah}(h]h ]h"]h$]h&]uh1jEhjrubeh}(h]h ]h"]h$]h&]uh1j/hjshMhjrubj0)}(h8``unsigned long *next`` Pointer to next ID to allocate. h](j6)}(h``unsigned long *next``h]j~)}(hj4sh]hunsigned long *next}(hj6shhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj2subah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj.subjF)}(hhh]h)}(hPointer to next ID to allocate.h]hPointer to next ID to allocate.}(hjMshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIshMhjJsubah}(h]h ]h"]h$]h&]uh1jEhj.subeh}(h]h ]h"]h$]h&]uh1j/hjIshMhjrubj0)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j6)}(h ``gfp_t gfp``h]j~)}(hjmsh]h gfp_t gfp}(hjoshhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjksubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjgsubjF)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjsubah}(h]h ]h"]h$]h&]uh1jEhjgsubeh}(h]h ]h"]h$]h&]uh1j/hjshMhjrubeh}(h]h ]h"]h$]h&]uh1j*hjqubh)}(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.chMhjqubh)}(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.chMhjqubh)}(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.chMhjqubh)}(h **Context**h]j)}(hj4th]hContext}(hj6thhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2tubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjqubh)}(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 }(hjJthhhNhNubj)}(h**gfp**h]hgfp}(hjRthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJtubh flags permit.}(hjJthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjqubh)}(h **Return**h]j)}(hjmth]hReturn}(hjothhhNhNubah}(h]h ]h"]h$]h&]uh1jhjktubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjqubh)}(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 }(hjthhhNhNubj)}(h**mt**h]hmt}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubh8 cannot be used, or -EBUSY if there are no free entries.}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjqubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j 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 ]jK ah"]h$]h&]uh1j? hjthhhjthMubj)}(h mtree_eraseh]j)}(h mtree_eraseh]h mtree_erase}(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjtubah}(h]h ](j j eh"]h$]h&]hhuh1jhjthhhjthMubj )}(h,(struct maple_tree *mt, unsigned long index)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj uubj )}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj uubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hj,uhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj)uubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj.umodnameN classnameNj# j& )}j) ]j, )}j jtsb c.mtree_eraseasbuh1hhj uubj )}(h h]h }(hjLuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj uubj@ )}(hjh]h*}(hjZuhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj uubj)}(hmth]hmt}(hjguhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj uubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjuubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|uubj )}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|uubj )}(hlongh]hlong}(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|uubj )}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|uubj)}(hindexh]hindex}(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj|uubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjuubeh}(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.chMhjuhhubah}(h]h ]h"]h$]h&]uh1j( hjthhhjthMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< juj= juj> j? j@ uh1jhhhjhNhNubju )}(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)}(hjvh]h Parameters}(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.chMhjuubj+)}(hhh](j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hj#vh]hstruct maple_tree *mt}(hj%vhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj!vubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjvubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjxubj )}(h h]h }(hjcxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>xubj)}(hgfph]hgfp}(hjqxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj>xubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjXwubeh}(h]h ]h"]h$]h&]hhuh1j hjwhhhj1whMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjwhhhj1whMubah}(h]jwah ](j j! eh"]h$]h&]j% j& )j' huh1jhj1whMhjwhhubj) )}(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.chMhjxhhubah}(h]h ]h"]h$]h&]uh1j( hjwhhhj1whMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jxj= jxj> j? j@ uh1jhhhjhNhNubju )}(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.chMhjxubj+)}(hhh](j0)}(h0``struct maple_tree *mt`` The source maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjxh]hstruct maple_tree *mt}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjxubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxubjF)}(hhh]h)}(hThe source maple treeh]hThe source maple tree}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhMhjxubah}(h]h ]h"]h$]h&]uh1jEhjxubeh}(h]h ]h"]h$]h&]uh1j/hjxhMhjxubj0)}(h.``struct maple_tree *new`` The new maple tree h](j6)}(h``struct maple_tree *new``h]j~)}(hjyh]hstruct maple_tree *new}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjyubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjyubjF)}(hhh]h)}(hThe new maple treeh]hThe new maple tree}(hj.yhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*yhMhj+yubah}(h]h ]h"]h$]h&]uh1jEhjyubeh}(h]h ]h"]h$]h&]uh1j/hj*yhMhjxubj0)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j6)}(h ``gfp_t gfp``h]j~)}(hjNyh]h gfp_t gfp}(hjPyhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjLyubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjHyubjF)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hjgyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjcyhMhjdyubah}(h]h ]h"]h$]h&]uh1jEhjHyubeh}(h]h ]h"]h$]h&]uh1j/hjcyhMhjxubeh}(h]h ]h"]h$]h&]uh1j*hjxubh)}(h**Description**h]j)}(hjyh]h Description}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxubh)}(hXThis 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.h]hXThis 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.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxubh)}(h **Return**h]j)}(hjyh]hReturn}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxubh)}(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.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxubeh}(h]h ] kernelindentah"]h$]h&]uh1jt hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_dup (C function) c.mtree_duphNtauh1jhjhhhNhNubj)}(hhh](j)}(hHint mtree_dup (struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)h]j)}(hGint mtree_dup(struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)h](j )}(hinth]hint}(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyhhhjzhMubj)}(h mtree_duph]j)}(h mtree_duph]h mtree_dup}(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjzubah}(h]h ](j j eh"]h$]h&]hhuh1jhjyhhhjzhMubj )}(h:(struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hj2zhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.zubj )}(h h]h }(hj?zhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.zubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjPzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjMzubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjRzmodnameN classnameNj# j& )}j) ]j, )}j jzsb c.mtree_dupasbuh1hhj.zubj )}(h h]h }(hjpzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.zubj@ )}(hjh]h*}(hj~zhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj.zubj)}(hmth]hmt}(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj.zubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj*zubj )}(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 ]j ah"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjzmodnameN classnameNj# j& )}j) ]jlz c.mtree_dupasbuh1hhjzubj )}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzubj@ )}(hjh]h*}(hjzhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjzubj)}(hnewh]hnew}(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj*zubj )}(h gfp_t gfph](h)}(hhh]j)}(hgfp_th]hgfp_t}(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj{modnameN classnameNj# j& )}j) ]jlz c.mtree_dupasbuh1hhj{ubj )}(h h]h }(hj5{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj{ubj)}(hgfph]hgfp}(hjC{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj*zubeh}(h]h ]h"]h$]h&]hhuh1j hjyhhhjzhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjyhhhjzhMubah}(h]jyah ](j j! eh"]h$]h&]j% j& )j' huh1jhjzhMhjyhhubj) )}(hhh]h)}(hDuplicate an entire maple treeh]hDuplicate an entire maple tree}(hjm{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjj{hhubah}(h]h ]h"]h$]h&]uh1j( hjyhhhjzhMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j{j= j{j> j? j@ uh1jhhhjhNhNubju )}(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&]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](j0)}(h0``struct maple_tree *mt`` The source maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hj{h]hstruct maple_tree *mt}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj{ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj{ubjF)}(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&]uh1jEhj{ubeh}(h]h ]h"]h$]h&]uh1j/hj{hMhj{ubj0)}(h.``struct maple_tree *new`` The new maple tree h](j6)}(h``struct maple_tree *new``h]j~)}(hj{h]hstruct maple_tree *new}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj{ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj{ubjF)}(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&]uh1jEhj{ubeh}(h]h ]h"]h$]h&]uh1j/hj{hMhj{ubj0)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j6)}(h ``gfp_t gfp``h]j~)}(hj |h]h gfp_t gfp}(hj"|hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj|ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj|ubjF)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hj9|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5|hMhj6|ubah}(h]h ]h"]h$]h&]uh1jEhj|ubeh}(h]h ]h"]h$]h&]uh1j/hj5|hMhj{ubeh}(h]h ]h"]h$]h&]uh1j*hj{ubh)}(h**Description**h]j)}(hj[|h]h Description}(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.chMhj{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.}(hjq|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)}(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.chM'hj{ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMAubj )}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|hhhj|hMAubj)}(h __mt_destroyh]j)}(h __mt_destroyh]h __mt_destroy}(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj|ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj|hhhj|hMAubj )}(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 ]j ah"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj$}modnameN classnameNj# j& )}j) ]j, )}j j|sbc.__mt_destroyasbuh1hhj}ubj )}(h h]h }(hjB}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj}ubj@ )}(hjh]h*}(hjP}hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj}ubj)}(hmth]hmt}(hj]}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj|ubah}(h]h ]h"]h$]h&]hhuh1j hj|hhhj|hMAubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj|hhhj|hMAubah}(h]j|ah ](j j! eh"]h$]h&]j% j& )j' huh1jhj|hMAhj|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.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMAhj}hhubah}(h]h ]h"]h$]h&]uh1j( hj|hhhj|hMAubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j}j= j}j> j? j@ uh1jhhhjhNhNubju )}(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.chMEhj}ubj+)}(hhh]j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hj}h]hstruct maple_tree *mt}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj}ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMBhj}ubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hMBhj}ubah}(h]h ]h"]h$]h&]uh1jEhj}ubeh}(h]h ]h"]h$]h&]uh1j/hj}hMBhj}ubah}(h]h ]h"]h$]h&]uh1j*hj}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.chMDhj}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.chMDhj}ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjH~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjD~hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMSubj )}(h h]h }(hjW~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjD~hhhjV~hMSubj)}(h mtree_destroyh]j)}(h mtree_destroyh]h mtree_destroy}(hji~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhje~ubah}(h]h ](j j eh"]h$]h&]hhuh1jhjD~hhhjV~hMSubj )}(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 ]j ah"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj~modnameN classnameNj# j& )}j) ]j, )}j jk~sbc.mtree_destroyasbuh1hhj~ubj )}(h h]h }(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj~ubj@ )}(hjh]h*}(hj~hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj~ubj)}(hmth]hmt}(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj}~ubah}(h]h ]h"]h$]h&]hhuh1j hjD~hhhjV~hMSubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj@~hhhjV~hMSubah}(h]j;~ah ](j j! eh"]h$]h&]j% j& )j' huh1jhjV~hMShj=~hhubj) )}(hhh]h)}(hDestroy a maple treeh]hDestroy a maple tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMShjhhubah}(h]h ]h"]h$]h&]uh1j( hj=~hhhjV~hMSubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j j= j j> j? j@ uh1jhhhjhNhNubju )}(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)}(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.chMWhj$ubj+)}(hhh]j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjIh]hstruct maple_tree *mt}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjGubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMThjCubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMThj_ubah}(h]h ]h"]h$]h&]uh1jEhjCubeh}(h]h ]h"]h$]h&]uh1j/hj^hMThj@ubah}(h]h ]h"]h$]h&]uh1j*hj$ubh)}(h**Description**h]j)}(hjh]h Description}(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.chMVhj$ubh)}(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.chMUhj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMaubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMaubj@ )}(hjh]h*}(hjhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjhhhjhMaubj)}(hmt_findh]j)}(hmt_findh]hmt_find}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j j eh"]h$]h&]hhuh1jhjhhhjhMaubj )}(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}(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetj3modnameN classnameNj# j& )}j) ]j, )}j jsb c.mt_findasbuh1hhjubj )}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj@ )}(hjh]h*}(hj_hhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjubj)}(hmth]hmt}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubj )}(hunsigned long *indexh](j )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj@ )}(hjh]h*}(hjhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjubj)}(hindexh]hindex}(hjʀhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj߀ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj߀ubj )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj߀ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj߀ubj)}(hmaxh]hmax}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj߀ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMaubeh}(h]h ]h"]h$]h&]hhj uh1jj j hjhhhjhMaubah}(h]jah ](j j! eh"]h$]h&]j% j& )j' huh1jhjhMahjhhubj) )}(hhh]h)}(h1Search from the start up until an entry is found.h]h1Search from the start up until an entry is found.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMahjBhhubah}(h]h ]h"]h$]h&]uh1j( hjhhhjhMaubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< j]j= j]j> j? j@ uh1jhhhjhNhNubju )}(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)}(hjgh]h Parameters}(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.chMehjaubj+)}(hhh](j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjh]hstruct maple_tree *mt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbhjubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMbhjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhMbhj}ubj0)}(hQ``unsigned long *index`` Pointer which contains the start location of the search h](j6)}(h``unsigned long *index``h]j~)}(hjh]hunsigned long *index}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMchjubjF)}(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ԁhMchjՁubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjԁhMchj}ubj0)}(h<``unsigned long max`` The maximum value of the search range h](j6)}(h``unsigned long max``h]j~)}(hjh]hunsigned long max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMdhjubjF)}(hhh]h)}(h%The maximum value of the search rangeh]h%The maximum value of the search range}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMdhjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hj hMdhj}ubeh}(h]h ]h"]h$]h&]uh1j*hjaubh)}(h**Description**h]j)}(hj3h]h Description}(hj5hhhNhNubah}(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.chMfhjaubh)}(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}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMehjaubh)}(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 }(hjXhhhNhNubj)}(h **index**h]hindex}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh is updated to point to the next possible entry independent whether the found entry is occupying a single index or a range if indices.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMihjaubh)}(h **Return**h]j)}(hj{h]hReturn}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMmhjaubh)}(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 }(hjhhhNhNubj~)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMnhjaubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj܂hhhU/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 hj܂hhhjhMubj@ )}(hjh]h*}(hjhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj܂hhhjhMubj)}(h mt_find_afterh]j)}(h mt_find_afterh]h mt_find_after}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubah}(h]h ](j j eh"]h$]h&]hhuh1jhj܂hhhjhMubj )}(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 }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubh)}(hhh]j)}(h maple_treeh]h maple_tree}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&] refdomainj6 reftypej reftargetjJmodnameN classnameNj# j& )}j) ]j, )}j jsbc.mt_find_afterasbuh1hhj&ubj )}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj@ )}(hjh]h*}(hjvhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hj&ubj)}(hmth]hmt}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubj )}(hunsigned long *indexh](j )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjƃhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj@ )}(hjh]h*}(hjԃhhhNhNubah}(h]h ]jK ah"]h$]h&]uh1j? hjubj)}(hindexh]hindex}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlongh]hlong}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hmaxh]hmax}(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubeh}(h]h ]h"]h$]h&]hhuh1j hj܂hhhjhMubeh}(h]h ]h"]h$]h&]hhj uh1jj j hj؂hhhjhMubah}(h]jӂah ](j j! eh"]h$]h&]j% j& )j' huh1jhjhMhjՂhhubj) )}(hhh]h)}(h1Search from the start up until an entry is found.h]h1Search from the start up until an entry is found.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjYhhubah}(h]h ]h"]h$]h&]uh1j( hjՂhhhjhMubeh}(h]h ](j6 functioneh"]h$]h&]j; j6 j< jtj= jtj> j? j@ uh1jhhhjhNhNubju )}(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)}(hj~h]h Parameters}(hjhhhNhNubah}(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.chMhjxubj+)}(hhh](j0)}(h)``struct maple_tree *mt`` The maple tree h](j6)}(h``struct maple_tree *mt``h]j~)}(hjh]hstruct maple_tree *mt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjubjF)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jEhjubeh}(h]h ]h"]h$]h&]uh1j/hjhMhjubj0)}(hQ``unsigned long *index`` Pointer which contains the start location of the search h](j6)}(h``unsigned long *index``h]j~)}(hjքh]hunsigned long *index}(hj؄hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjԄubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjЄubjF)}(hhh]h)}(h7Pointer which contains the start location of the searchh]h7Pointer which contains the start location of the search}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jEhjЄubeh}(h]h ]h"]h$]h&]uh1j/hjhMhjubj0)}(h1``unsigned long max`` The maximum value to check h](j6)}(h``unsigned long max``h]j~)}(hjh]hunsigned long max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j5hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj ubjF)}(hhh]h)}(hThe maximum value to checkh]hThe maximum value to check}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hMhj%ubah}(h]h ]h"]h$]h&]uh1jEhj ubeh}(h]h ]h"]h$]h&]uh1j/hj$hMhjubeh}(h]h ]h"]h$]h&]uh1j*hjxubh)}(h**Description**h]j)}(hjJh]h Description}(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.chMhjxubh)}(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 }(hj`hhhNhNubj)}(h **index**h]hindex}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubh for 0 before searching. If }(hj`hhhNhNubj)}(h **index**h]hindex}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubh; == 0, the search is aborted. This covers a wrap around of }(hj`hhhNhNubj)}(h **index**h]hindex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubh to 0 in an iterator loop.}(hj`hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxubh)}(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.chMhjxubh)}(h/The entry at or after the **index** or ``NULL``h](hThe entry at or after the }(hjhhhNhNubj)}(h **index**h]hindex}(hjŅhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }(hjhhhNhNubj~)}(h``NULL``h]hNULL}(hjׅhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjxubeh}(h]h ] kernelindentah"]h$]h&]uh1jt 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_handlerj&error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _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]jajD]j:ajn]jdaj]jaunameids}(jjj jjjjjjjjjjjjjjujDjtjqjjnjjjjjju nametypes}(jj jjjjjjjujtjjjjuh}(jhjjjj#jj#jjjjjjjjjDjEjqjEjnjzjjzjjjjjjj! j& jw j| jb jg jj!jjjbjgjjjjjjjjjqjvjjj' j, j!j!j#j#j%j%j'j'j,j,jk.jp.j0j0j02j52j4j4j77j<7j 9j9j;j;j=j=jZ@j_@jGCjLCjEjEj HjHjJjJjLjLjOj$OjQjQj TjTjVjVj"Yj'Yj[j[j]j]j_j_jajajejejhjhjljlj!oj&ojtjtjwjwjyjyj|j|j;~j@~jjjӂj؂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&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehnjlineK-uh1jubj)}(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&]levelKtypejsourcehnjlineKuh1jubj)}(hhh]h)}(hhh]h?Hyperlink target "maple-tree-advanced-alloc" is not referenced.}hjɆsbah}(h]h ]h"]h$]h&]uh1hhjƆubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1jubj)}(hhh]h)}(hhh]h?Hyperlink target "maple-tree-advanced-locks" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1jubj)}(hhh]h)}(hhh]h6Hyperlink target "maple-tree-flags" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejlineKsourcehuh1jube transformerN include_log] decorationNhhub.