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)}(hXThe 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. Note that external locks may interfere with allocations in a low memory situation.h]hXThe 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. Note that external locks may interfere with allocations in a low memory situation.}(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(hjhhubh)}(hX$Since the maple tree uses internal nodes that are allocated and has rules on data density, erasing an entry may cause allocations to occur. That is, erasing an entry may consume memory. Users must take care to ensure that they do not violate the larger system constraints on when and how memory is allocated. Most situations are fine to allocate, but the pre-allocation support is provided as a mechanism to avoid trickier situations. There is also the possibility of using special entries and clean up the tree later, in extreme circumstances.h]hX$Since the maple tree uses internal nodes that are allocated and has rules on data density, erasing an entry may cause allocations to occur. That is, erasing an entry may consume memory. Users must take care to ensure that they do not violate the larger system constraints on when and how memory is allocated. Most situations are fine to allocate, but the pre-allocation support is provided as a mechanism to avoid trickier situations. There is also the possibility of using special entries and clean up the tree later, in extreme circumstances.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjhhubhtarget)}(h.. _maple-tree-normal-api:h]h}(h]h ]h"]h$]h&]refidmaple-tree-normal-apiuh1jhK7hjhhhhubeh}(h]overviewah ]h"]overviewah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h Normal APIh]h Normal API}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hhhhhK:ubh)}(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 }(hjBhhhNhNubj~)}(h``NULL``h]hNULL}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubh pointer for the range }(hjBhhhNhNubj~)}(h``0``h]h0}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubh - }(hjBhhhNhNubj~)}(h ``ULONG_MAX``h]h ULONG_MAX}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubhX). 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 }(hjBhhhNhNubj~)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubh upwards or }(hjBhhhNhNubj~)}(h ``ULONG_MAX``h]h ULONG_MAX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubh9 down. An allocation tree can be used by passing in the }(hjBhhhNhNubj~)}(h``MT_FLAGS_ALLOC_RANGE``h]hMT_FLAGS_ALLOC_RANGE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubh! flag when initialising the tree.}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK)}(hTakes ma_lock internally: * mtree_store() * mtree_store_range() * mtree_insert() * mtree_insert_range() * mtree_erase() * mtree_dup() * mtree_destroy() * mt_set_in_rcu() * mt_clear_in_rcu() h](jD)}(hTakes ma_lock internally:h]hTakes ma_lock internally:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jChhhKhjubjT)}(hhh]jY)}(hhh](j^)}(h mtree_store()h]h)}(hjh]h mtree_store()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK~hjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hmtree_store_range()h]h)}(hjh]hmtree_store_range()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hmtree_insert()h]h)}(hj/h]hmtree_insert()}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj-ubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hmtree_insert_range()h]h)}(hjFh]hmtree_insert_range()}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjDubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(h mtree_erase()h]h)}(hj]h]h mtree_erase()}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj[ubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(h mtree_dup()h]h)}(hjth]h mtree_dup()}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjrubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hmtree_destroy()h]h)}(hjh]hmtree_destroy()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hmt_set_in_rcu()h]h)}(hjh]hmt_set_in_rcu()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hmt_clear_in_rcu() h]h)}(hmt_clear_in_rcu()h]hmt_clear_in_rcu()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]jjuh1jXhhhK~hjubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hhhKhj:hhubeh}(h]h ]h"]h$]h&]uh1j8hjhhhNhNubh)}(hXIf you want to take advantage of the internal lock to protect the data structures that you are storing in the Maple Tree, you can call mtree_lock() before calling mtree_load(), then take a reference count on the object you have found before calling mtree_unlock(). This will prevent stores from removing the object from the tree between looking up the object and incrementing the refcount. You can also use RCU to avoid dereferencing freed memory, but an explanation of that is beyond the scope of this document.h]hXIf you want to take advantage of the internal lock to protect the data structures that you are storing in the Maple Tree, you can call mtree_lock() before calling mtree_load(), then take a reference count on the object you have found before calling mtree_unlock(). This will prevent stores from removing the object from the tree between looking up the object and incrementing the refcount. You can also use RCU to avoid dereferencing freed memory, but an explanation of that is beyond the scope of this document.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h.. _maple-tree-advanced-api:h]h}(h]h ]h"]h$]h&]j'maple-tree-advanced-apiuh1jhKhjhhhhubeh}(h]lockingah ]h"]lockingah$]h&]uh1hhj1hhhhhKoubeh}(h]( normal-apij(eh ]h"]( normal apimaple-tree-normal-apieh$]h&]uh1hhhhhhhhK:expect_referenced_by_name}jjsexpect_referenced_by_id}j(jsubh)}(hhh](h)}(h Advanced APIh]h Advanced API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hXThe advanced API offers more flexibility and better performance at the cost of an interface which can be harder to use and has fewer safeguards. You must take care of your own locking while using the advanced API. You can use the ma_lock, RCU or an external lock for protection. You can mix advanced and normal operations on the same array, as long as the locking is compatible. The :ref:`maple-tree-normal-api` is implemented in terms of the advanced API.h](hXThe advanced API offers more flexibility and better performance at the cost of an interface which can be harder to use and has fewer safeguards. You must take care of your own locking while using the advanced API. You can use the ma_lock, RCU or an external lock for protection. You can mix advanced and normal operations on the same array, as long as the locking is compatible. The }(hj&hhhNhNubh)}(h:ref:`maple-tree-normal-api`h]jK)}(hj0h]hmaple-tree-normal-api}(hj2hhhNhNubah}(h]h ](jVstdstd-refeh"]h$]h&]uh1jJhj.ubah}(h]h ]h"]h$]h&]refdocjc refdomainj<reftyperef refexplicitrefwarnjimaple-tree-normal-apiuh1hhhhKhj&ubh- is implemented in terms of the advanced API.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hThe advanced API is based around the ma_state, this is where the 'mas' prefix originates. The ma_state struct keeps track of tree operations to make life easier for both internal and external tree users.h]hThe advanced API is based around the ma_state, this is where the ‘mas’ prefix originates. The ma_state struct keeps track of tree operations to make life easier for both internal and external tree users.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(haInitialising the maple tree is the same as in the :ref:`maple-tree-normal-api`. Please see above.h](h2Initialising the maple tree is the same as in the }(hjfhhhNhNubh)}(h:ref:`maple-tree-normal-api`h]jK)}(hjph]hmaple-tree-normal-api}(hjrhhhNhNubah}(h]h ](jVstdstd-refeh"]h$]h&]uh1jJhjnubah}(h]h ]h"]h$]h&]refdocjc refdomainj|reftyperef refexplicitrefwarnjimaple-tree-normal-apiuh1hhhhKhjfubh. Please see above.}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(haThe maple state keeps track of the range start and end in mas->index 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)}(hXYou 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. Note that mas_erase() may allocate with the GFP_KERNEL __GFP_NOFAIL and cannot fail, but may sleep. If this is not okay, consider using mas_store_gfp() and pass it a ``NULL``, after setting up the correct range by walking to the entry.h](hXYou 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. Note that mas_erase() may allocate with the GFP_KERNEL __GFP_NOFAIL and cannot fail, but may sleep. If this is not okay, consider using mas_store_gfp() and pass it a }(hjhhhNhNubj~)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh=, after setting up the correct range by walking to the entry.}(hjhhhNhNubeh}(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.}(hj"hhhNhNubah}(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.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hoIf the user needs to yield the lock during an operation, then the maple state must be paused using mas_pause().h]hoIf the user needs to yield the lock during an operation, then the maple state must be paused using mas_pause().}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXThere are a few extra interfaces provided when using an allocation tree. If you wish to search for a gap within a range, then mas_empty_area() or mas_empty_area_rev() can be used. mas_empty_area() searches for a gap starting at the lowest index given up to the maximum of the range. mas_empty_area_rev() searches for a gap starting at the highest index given and continues downward to the lower bound of the range.h]hXThere are a few extra interfaces provided when using an allocation tree. If you wish to search for a gap within a range, then mas_empty_area() or mas_empty_area_rev() can be used. mas_empty_area() searches for a gap starting at the lowest index given up to the maximum of the range. mas_empty_area_rev() searches for a gap starting at the highest index given and continues downward to the lower bound of the range.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h.. _maple-tree-advanced-alloc:h]h}(h]h ]h"]h$]h&]j'maple-tree-advanced-allocuh1jhKhjhhhhubh)}(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&]j'maple-tree-advanced-locksuh1jhKhjehhhhubeh}(h](advanced-allocating-nodesjdeh ]h"](advanced allocating nodesmaple-tree-advanced-alloceh$]h&]uh1hhjhhhhhKj}jjZsj}jdjZsubh)}(hhh](h)}(hAdvanced Lockingh]hAdvanced Locking}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(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``h]hMT_FLAGS_LOCK_EXTERN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubhk flag, this is usually done with the MTREE_INIT_EXT() #define, which takes an external lock as an argument.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h](advanced-lockingjeh ]h"](advanced lockingmaple-tree-advanced-lockseh$]h&]uh1hhjhhhhhKj}jjsj}jjsubeh}(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&]j'maple-tree-flagsuh1jhKhjhhhNubh)}(h**Maple tree flags**h]hstrong)}(hjh]hMaple tree flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]jah ]h"]maple tree flagsah$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhKhjhhj}jjsj}jjsubjY)}(hhh](j^)}(h4MT_FLAGS_ALLOC_RANGE - Track gaps in this treeh]h)}(hjh]h4MT_FLAGS_ALLOC_RANGE - Track gaps in this tree}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(h0MT_FLAGS_USE_RCU - Operate in RCU modeh]h)}(hj7h]h0MT_FLAGS_USE_RCU - Operate in RCU mode}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhKhj5ubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(hIMT_FLAGS_HEIGHT_OFFSET - The position of the tree height in the flagsh]h)}(hjOh]hIMT_FLAGS_HEIGHT_OFFSET - The position of the tree height in the flags}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhKhjMubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(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:236: ./include/linux/maple_tree.hhKhjeubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(h4MT_FLAGS_LOCK_MASK - How the mt_lock is usedh]h)}(hjh]h4MT_FLAGS_LOCK_MASK - How the mt_lock is used}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhKhj}ubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(h.MT_FLAGS_LOCK_IRQ - Acquired irq-safeh]h)}(hjh]h.MT_FLAGS_LOCK_IRQ - Acquired irq-safe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(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:236: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubj^)}(h1MT_FLAGS_LOCK_EXTERN - mt_lock is not used h]h)}(h0MT_FLAGS_LOCK_EXTERN - mt_lock is not usedh]h0MT_FLAGS_LOCK_EXTERN - mt_lock is not used}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]jjuh1jXhj.hKhjhhubh)}(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:236: ./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)}(hj h]h MTREE_INIT}(hj hhhNhNubah}(h]h ]nah"]h$]h&]uh1j hj ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j hj hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMubah}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1j sphinx_line_type declaratorhj hhhj3 hMubah}(h]j ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j hj3 hMhj hhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1jH hj hhhj3 hMubeh}(h]h ](cmacroeh"]h$]h&]domainjV objtypejW desctypejW noindex noindexentrynocontentsentryuh1j hhhjhNhNubh)}(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:236: ./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:236: ./include/linux/maple_tree.hhMhj{ ubah}(h]h ]h"]h$]h&]uh1jy hj 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&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj ubj9)}(hhh](j>)}(h``name`` The maple tree name h](jD)}(h``name``h]j~)}(hj h]hname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj ubjT)}(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&]uh1jShj ubeh}(h]h ]h"]h$]h&]uh1j=hj hMhj ubj>)}(h ``__flags`` The maple tree flagsh](jD)}(h ``__flags``h]j~)}(hj h]h__flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj ubjT)}(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:236: ./include/linux/maple_tree.hhMhj ubah}(h]h ]h"]h$]h&]uh1jShj ubeh}(h]h ]h"]h$]h&]uh1j=hj hMhj ubeh}(h]h ]h"]h$]h&]uh1j8hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j MTREE_INIT_EXT (C macro)c.MTREE_INIT_EXThNtauh1jhjhhhNhNubj )}(hhh](j )}(hMTREE_INIT_EXTh]j )}(hMTREE_INIT_EXTh]j )}(hMTREE_INIT_EXTh]j )}(hjH h]hMTREE_INIT_EXT}(hjR hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjN ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjJ hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMubah}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjF hhhje hMubah}(h]jA ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hje hMhjC hhubjI )}(hhh]h}(h]h ]h"]h$]h&]uh1jH hjC hhhje hMubeh}(h]h ](jV macroeh"]h$]h&]j[ jV j\ j~ j] j~ j^ j_ j` uh1j hhhjhNhNubh)}(h*``MTREE_INIT_EXT (name, __flags, __lock)``h]j~)}(hj h]h&MTREE_INIT_EXT (name, __flags, __lock)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjhhubjz )}(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:236: ./include/linux/maple_tree.hhMhj ubah}(h]h ]h"]h$]h&]uh1jy hj hMhjhhubj )}(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:236: ./include/linux/maple_tree.hhM hj ubj9)}(hhh](j>)}(h``name`` The tree name h](jD)}(h``name``h]j~)}(hj h]hname}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj ubjT)}(hhh]h)}(h The tree nameh]h The tree name}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jShj ubeh}(h]h ]h"]h$]h&]uh1j=hj hMhj ubj>)}(h!``__flags`` The maple tree flags h](jD)}(h ``__flags``h]j~)}(hj h]h__flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj ubjT)}(hhh]h)}(hThe maple tree flagsh]hThe maple tree flags}(hj* hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj& hMhj' ubah}(h]h ]h"]h$]h&]uh1jShj ubeh}(h]h ]h"]h$]h&]uh1j=hj& hMhj ubj>)}(h``__lock`` The external lockh](jD)}(h ``__lock``h]j~)}(hjJ h]h__lock}(hjL hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjH ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM hjD ubjT)}(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:236: ./include/linux/maple_tree.hhMhj` ubah}(h]h ]h"]h$]h&]uh1jShjD ubeh}(h]h ]h"]h$]h&]uh1j=hj_ hM hj ubeh}(h]h ]h"]h$]h&]uh1j8hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mtree_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:236: ./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&]uh1j hj ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj 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&]uh1j hj& ubah}(h]h ]h"]h$]h&] refdomainjV reftype identifier reftargetj+ modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]jD ASTIdentifier)}j? j sb c.mtree_emptyasbuh1hhj ubj )}(h h]h }(hjQ 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&]uh1j hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubah}(h]h ]h"]h$]h&]hhuh1j hj hhhj hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj hhhj hMubah}(h]j ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj hMhj hhubjI )}(hhh]h)}(h,Determine if a tree has any present entries.h]h,Determine if a tree has any present entries.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj hhubah}(h]h ]h"]h$]h&]uh1jH hj hhhj hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j j] j j^ j_ j` uh1j hhhjhNhNubj )}(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:236: ./include/linux/maple_tree.hhMhj ubj9)}(hhh]j>)}(h,``const struct maple_tree *mt`` Maple Tree. h](jD)}(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&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj ubjT)}(hhh]h)}(h Maple Tree.h]h Maple Tree.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jShj ubeh}(h]h ]h"]h$]h&]uh1j=hj hMhj ubah}(h]h ]h"]h$]h&]uh1j8hj 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:236: ./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:236: ./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:236: ./include/linux/maple_tree.hhMhj ubh)}(h1``true`` if the tree contains only NULL pointers.h](j~)}(h``true``h]htrue}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjR ubh) if the tree contains only NULL pointers.}(hjR hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMgubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhhj hMgubj )}(h mas_reseth]j )}(h mas_reseth]h mas_reset}(hj hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj hhhj hMgubj )}(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&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj modnameN classnameNjC jF )}jI ]jL )}j? j sb c.mas_resetasbuh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj` )}(hjh]h*}(hjhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj ubj )}(hmash]hmas}(hj%hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubah}(h]h ]h"]h$]h&]hhuh1j hj hhhj hMgubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj hhhj hMgubah}(h]j ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj hMghj hhubjI )}(hhh]h)}(h#Reset a Maple Tree operation state.h]h#Reset a Maple Tree operation state.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMghjLhhubah}(h]h ]h"]h$]h&]uh1jH hj hhhj hMgubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jgj] jgj^ j_ j` uh1j hhhjhNhNubj )}(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:236: ./include/linux/maple_tree.hhMkhjkubj9)}(hhh]j>)}(h5``struct ma_state *mas`` Maple Tree operation state. h](jD)}(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&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhhjubjT)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhhjubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhMhhjubah}(h]h ]h"]h$]h&]uh1j8hjkubh)}(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:236: ./include/linux/maple_tree.hhMjhjkubh)}(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:236: ./include/linux/maple_tree.hhMihjkubh)}(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:236: ./include/linux/maple_tree.hhMmhjkubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMnhjkubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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 )}(hjCh]h mas_for_each}(hjMhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjIubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjEhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMwubah}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjAhhhj`hMwubah}(h]j<ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj`hMwhj>hhubjI )}(hhh]h}(h]h ]h"]h$]h&]uh1jH hj>hhhj`hMwubeh}(h]h ](jV macroeh"]h$]h&]j[ jV j\ jyj] jyj^ j_ j` uh1j hhhjhNhNubh)}(h(``mas_for_each (__mas, __entry, __max)``h]j~)}(hjh]h$mas_for_each (__mas, __entry, __max)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj}ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMyhjhhubjz )}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMwhjubah}(h]h ]h"]h$]h&]uh1jy hjhMwhjhhubj )}(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:236: ./include/linux/maple_tree.hhM{hjubj9)}(hhh](j>)}(h3``__mas`` Maple Tree operation state (maple_state) h](jD)}(h ``__mas``h]j~)}(hjh]h__mas}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMxhjubjT)}(hhh]h)}(h(Maple Tree operation state (maple_state)h]h(Maple Tree operation state (maple_state)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMxhjubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhMxhjubj>)}(h*``__entry`` Entry retrieved from the tree h](jD)}(h ``__entry``h]j~)}(hj h]h__entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMyhjubjT)}(hhh]h)}(hEntry retrieved from the treeh]hEntry retrieved from the tree}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMyhj"ubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hj!hMyhjubj>)}(h2``__max`` maximum index to retrieve from the tree h](jD)}(h ``__max``h]j~)}(hjEh]h__max}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjCubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMzhj?ubjT)}(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&]uh1hhjZhMzhj[ubah}(h]h ]h"]h$]h&]uh1jShj?ubeh}(h]h ]h"]h$]h&]uh1j=hjZhMzhjubeh}(h]h ]h"]h$]h&]uh1j8hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM|hjubh)}(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:236: ./include/linux/maple_tree.hhM{hjubh)}(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:236: ./include/linux/maple_tree.hhM~hjubh)}(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:236: ./include/linux/maple_tree.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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&]uh1j hjubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMubah}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjhhhjhMubah}(h]jah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjhMhjhhubjI )}(hhh]h}(h]h ]h"]h$]h&]uh1jH hjhhhjhMubeh}(h]h ](jV macroeh"]h$]h&]j[ jV j\ jj] jj^ j_ j` uh1j hhhjhNhNubh)}(h,``mas_for_each_rev (__mas, __entry, __min)``h]j~)}(hj"h]h(mas_for_each_rev (__mas, __entry, __min)}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjhhubsjz )}(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.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj8ubah}(h]h ]h"]h$]h&]uh1jy hjJhMhjhhubj )}(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)}(hjWh]h Parameters}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjQubj9)}(hhh](j>)}(h3``__mas`` Maple Tree operation state (maple_state) h](jD)}(h ``__mas``h]j~)}(hjvh]h__mas}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjtubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjpubjT)}(hhh]h)}(h(Maple Tree operation state (maple_state)h]h(Maple Tree operation state (maple_state)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jShjpubeh}(h]h ]h"]h$]h&]uh1j=hjhMhjmubj>)}(h*``__entry`` Entry retrieved from the tree h](jD)}(h ``__entry``h]j~)}(hjh]h__entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjubjT)}(hhh]h)}(hEntry retrieved from the treeh]hEntry retrieved from the tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhMhjmubj>)}(h2``__min`` minimum index to retrieve from the tree h](jD)}(h ``__min``h]j~)}(hjh]h__min}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjubjT)}(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&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhMhjmubeh}(h]h ]h"]h$]h&]uh1j8hjQubh)}(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:236: ./include/linux/maple_tree.hhMhjQubh)}(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.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjQubh)}(h**Note**h]j)}(hjJh]hNote}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjQubh)}(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:236: ./include/linux/maple_tree.hhMhjQubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j __mas_set_range (C function)c.__mas_set_rangehNtauh1jhjhhhNhNubj )}(hhh](j )}(hTvoid __mas_set_range (struct ma_state *mas, unsigned long start, unsigned long last)h]j )}(hSvoid __mas_set_range(struct ma_state *mas, unsigned long start, unsigned long last)h](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj )}(h__mas_set_rangeh]j )}(h__mas_set_rangeh]h__mas_set_range}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjhhhjhMubj )}(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&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjmodnameN classnameNjC jF )}jI ]jL )}j? jsbc.__mas_set_rangeasbuh1hhjubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj` )}(hjh]h*}(hjhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjubj )}(hmash]hmas}(hj%hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long starth](j )}(hunsignedh]hunsigned}(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:ubj )}(h h]h }(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:ubj )}(hlongh]hlong}(hjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:ubj )}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:ubj )}(hstarth]hstart}(hjvhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(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}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlasth]hlast}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjhhhjhMubah}(h]jah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjhMhjhhubjI )}(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:236: ./include/linux/maple_tree.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jH hjhhhjhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j j] j j^ j_ j` uh1j hhhjhNhNubj )}(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:236: ./include/linux/maple_tree.hhMhj ubj9)}(hhh](j>)}(h5``struct ma_state *mas`` Maple Tree operation state. h](jD)}(h``struct ma_state *mas``h]j~)}(hj2h]hstruct ma_state *mas}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj0ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj,ubjT)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhMhjHubah}(h]h ]h"]h$]h&]uh1jShj,ubeh}(h]h ]h"]h$]h&]uh1j=hjGhMhj)ubj>)}(h>``unsigned long start`` New start of range in the Maple Tree. h](jD)}(h``unsigned long start``h]j~)}(hjkh]hunsigned long start}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjiubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjeubjT)}(hhh]h)}(h%New start of range in the Maple Tree.h]h%New start of range in the Maple Tree.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jShjeubeh}(h]h ]h"]h$]h&]uh1j=hjhMhj)ubj>)}(h;``unsigned long last`` New end of range in the Maple Tree. h](jD)}(h``unsigned long last``h]j~)}(hjh]hunsigned long last}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjubjT)}(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&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhMhj)ubeh}(h]h ]h"]h$]h&]uh1j8hj ubh)}(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:236: ./include/linux/maple_tree.hhMhj ubh)}(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:236: ./include/linux/maple_tree.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_set_range (C function)c.mas_set_rangehNtauh1jhjhhhNhNubj )}(hhh](j )}(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}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM#ubj )}(h h]h }(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhhj2hM#ubj )}(h mas_set_rangeh]j )}(h mas_set_rangeh]h mas_set_range}(hjEhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjAubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj hhhj2hM#ubj )}(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}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj|ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjmodnameN classnameNjC jF )}jI ]jL )}j? jGsbc.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&]uh1j hj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjYubj )}(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}(hj hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjYubj )}(hunsigned long lasth](j )}(hunsignedh]hunsigned}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hj2hhhNhNubah}(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 }(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(hlasth]hlast}(hj\hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjYubeh}(h]h ]h"]h$]h&]hhuh1j hj hhhj2hM#ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjhhhj2hM#ubah}(h]jah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj2hM#hjhhubjI )}(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:236: ./include/linux/maple_tree.hhM#hjhhubah}(h]h ]h"]h$]h&]uh1jH hjhhhj2hM#ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jj] jj^ j_ j` uh1j hhhjhNhNubj )}(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:236: ./include/linux/maple_tree.hhM'hjubj9)}(hhh](j>)}(h5``struct ma_state *mas`` Maple Tree operation state. h](jD)}(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&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM$hjubjT)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM$hjubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhM$hjubj>)}(h>``unsigned long start`` New start of range in the Maple Tree. h](jD)}(h``unsigned long start``h]j~)}(hjh]hunsigned long start}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM%hjubjT)}(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&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhM%hjubj>)}(h;``unsigned long last`` New end of range in the Maple Tree. h](jD)}(h``unsigned long last``h]j~)}(hj9h]hunsigned long last}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj7ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM&hj3ubjT)}(hhh]h)}(h#New end of range in the Maple Tree.h]h#New end of range in the Maple Tree.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhM&hjOubah}(h]h ]h"]h$]h&]uh1jShj3ubeh}(h]h ]h"]h$]h&]uh1j=hjNhM&hjubeh}(h]h ]h"]h$]h&]uh1j8hjubh)}(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:236: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM'hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:236: ./include/linux/maple_tree.hhM4ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM4ubj )}(hmas_seth]j )}(hmas_seth]hmas_set}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjhhhjhM4ubj )}(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&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjmodnameN classnameNjC jF )}jI ]jL )}j? jsb c.mas_setasbuh1hhjubj )}(h h]h }(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj` )}(hjh]h*}(hjBhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjubj )}(hmash]hmas}(hjOhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubeh}(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}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubj )}(hindexh]hindex}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjdubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhM4ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjhhhjhM4ubah}(h]jah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjhM4hjhhubjI )}(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:236: ./include/linux/maple_tree.hhM4hjhhubah}(h]h ]h"]h$]h&]uh1jH hjhhhjhM4ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jj] jj^ j_ j` uh1j hhhjhNhNubj )}(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:236: ./include/linux/maple_tree.hhM8hjubj9)}(hhh](j>)}(h5``struct ma_state *mas`` Maple Tree operation state. h](jD)}(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&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM5hjubjT)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM5hj!ubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hj hM5hjubj>)}(h7``unsigned long index`` New index into the Maple Tree. h](jD)}(h``unsigned long index``h]j~)}(hjDh]hunsigned long index}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM6hj>ubjT)}(hhh]h)}(hNew index into the Maple Tree.h]hNew index into the Maple Tree.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhM6hjZubah}(h]h ]h"]h$]h&]uh1jShj>ubeh}(h]h ]h"]h$]h&]uh1j=hjYhM6hjubeh}(h]h ]h"]h$]h&]uh1j8hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM8hjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM7hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mt_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:236: ./include/linux/maple_tree.hhMHubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMHubj )}(h mt_init_flagsh]j )}(h mt_init_flagsh]h mt_init_flags}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjhhhjhMHubj )}(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&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj!modnameN classnameNjC jF )}jI ]jL )}j? jsbc.mt_init_flagsasbuh1hhjubj )}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj` )}(hjh]h*}(hjMhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjubj )}(hmth]hmt}(hjZhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubeh}(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 }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj )}(hinth]hint}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjoubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMHubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjhhhjhMHubah}(h]jah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjhMHhjhhubjI )}(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:236: ./include/linux/maple_tree.hhMHhjhhubah}(h]h ]h"]h$]h&]uh1jH hjhhhjhMHubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jj] jj^ j_ j` uh1j hhhjhNhNubj )}(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:236: ./include/linux/maple_tree.hhMLhjubj9)}(hhh](j>)}(h%``struct maple_tree *mt`` Maple Tree h](jD)}(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&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMIhjubjT)}(hhh]h)}(h Maple Treeh]h Maple Tree}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMIhj,ubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hj+hMIhj ubj>)}(h)``unsigned int flags`` maple tree flags. h](jD)}(h``unsigned int flags``h]j~)}(hjOh]hunsigned int flags}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjMubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMJhjIubjT)}(hhh]h)}(hmaple tree flags.h]hmaple tree flags.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhMJhjeubah}(h]h ]h"]h$]h&]uh1jShjIubeh}(h]h ]h"]h$]h&]uh1j=hjdhMJhj ubeh}(h]h ]h"]h$]h&]uh1j8hjubh)}(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:236: ./include/linux/maple_tree.hhMLhjubh)}(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:236: ./include/linux/maple_tree.hhMKhjubh)}(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:236: ./include/linux/maple_tree.hhMNhjubh)}(h Any context.h]h Any context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMOhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mt_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:236: ./include/linux/maple_tree.hhMZubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMZubj )}(hmt_inith]j )}(hmt_inith]hmt_init}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjhhhjhMZubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hj3hhhNhNubah}(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}(hjQhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjNubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjSmodnameN classnameNjC jF )}jI ]jL )}j? jsb c.mt_initasbuh1hhj/ubj )}(h h]h }(hjqhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/ubj` )}(hjh]h*}(hjhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj/ubj )}(hmth]hmt}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj+ubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMZubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjhhhjhMZubah}(h]jah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjhMZhjhhubjI )}(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:236: ./include/linux/maple_tree.hhMZhjhhubah}(h]h ]h"]h$]h&]uh1jH hjhhhjhMZubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jj] jj^ j_ j` uh1j hhhjhNhNubj )}(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:236: ./include/linux/maple_tree.hhM^hjubj9)}(hhh]j>)}(h%``struct maple_tree *mt`` Maple Tree h](jD)}(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&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM[hjubjT)}(hhh]h)}(h Maple Treeh]h Maple Tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM[hj ubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hj hM[hjubah}(h]h ]h"]h$]h&]uh1j8hjubh)}(h**Description**h]j)}(hj2h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM]hjubh)}(hAn empty Maple Tree.h]hAn empty Maple Tree.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM\hjubh)}(h **Context**h]j)}(hjYh]hContext}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM^hjubh)}(h Any context.h]h Any context.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhM_hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mt_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}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMlubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMlubj )}(hmt_clear_in_rcuh]j )}(hmt_clear_in_rcuh]hmt_clear_in_rcu}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjhhhjhMlubj )}(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&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjmodnameN classnameNjC jF )}jI ]jL )}j? jsbc.mt_clear_in_rcuasbuh1hhjubj )}(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}(hj4hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMlubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjhhhjhMlubah}(h]jah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjhMlhjhhubjI )}(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:236: ./include/linux/maple_tree.hhMlhj[hhubah}(h]h ]h"]h$]h&]uh1jH hjhhhjhMlubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jvj] jvj^ j_ j` uh1j hhhjhNhNubj )}(h:**Parameters** ``struct maple_tree *mt`` The Maple Treeh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMphjzubj9)}(hhh]j>)}(h(``struct maple_tree *mt`` The Maple Treeh](jD)}(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&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMrhjubjT)}(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:236: ./include/linux/maple_tree.hhMmhjubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhMrhjubah}(h]h ]h"]h$]h&]uh1j8hjzubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mt_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:236: ./include/linux/maple_tree.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj )}(h mt_set_in_rcuh]j )}(h mt_set_in_rcuh]h mt_set_in_rcu}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjhhhjhMubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubj )}(h h]h }(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hjThhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjQubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjVmodnameN classnameNjC jF )}jI ]jL )}j? jsbc.mt_set_in_rcuasbuh1hhj2ubj )}(h h]h }(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubj` )}(hjh]h*}(hjhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj2ubj )}(hmth]hmt}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj.ubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjhhhjhMubah}(h]jah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjhMhjhhubjI )}(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:236: ./include/linux/maple_tree.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jH hjhhhjhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jj] jj^ j_ j` uh1j hhhjhNhNubj )}(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:236: ./include/linux/maple_tree.hhMhjubj9)}(hhh]j>)}(h(``struct maple_tree *mt`` The Maple Treeh](jD)}(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&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjubjT)}(hhh]h)}(hThe Maple Treeh]hThe Maple Tree}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj ubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hj hMhjubah}(h]h ]h"]h$]h&]uh1j8hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mt_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 )}(hjN h]h mt_for_each}(hjX hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjT ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjP hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMubah}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjL hhhjk hMubah}(h]jG ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjk hMhjI hhubjI )}(hhh]h}(h]h ]h"]h$]h&]uh1jH hjI hhhjk hMubeh}(h]h ](jV macroeh"]h$]h&]j[ jV j\ j j] j j^ j_ j` uh1j hhhjhNhNubh)}(h1``mt_for_each (__tree, __entry, __index, __max)``h]j~)}(hj h]h-mt_for_each (__tree, __entry, __index, __max)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./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:236: ./include/linux/maple_tree.hhMhj ubah}(h]h ]h"]h$]h&]uh1jy hj hMhjhhubj )}(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:236: ./include/linux/maple_tree.hhMhj ubj9)}(hhh](j>)}(h``__tree`` The Maple Tree h](jD)}(h ``__tree``h]j~)}(hj h]h__tree}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj ubjT)}(hhh]h)}(hThe Maple Treeh]hThe Maple Tree}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jShj ubeh}(h]h ]h"]h$]h&]uh1j=hj hMhj ubj>)}(h``__entry`` The current entry h](jD)}(h ``__entry``h]j~)}(hj!h]h__entry}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj!ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj!ubjT)}(hhh]h)}(hThe current entryh]hThe current entry}(hj0!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,!hMhj-!ubah}(h]h ]h"]h$]h&]uh1jShj!ubeh}(h]h ]h"]h$]h&]uh1j=hj,!hMhj ubj>)}(hO``__index`` The index to start the search from. Subsequently used as iterator. h](jD)}(h ``__index``h]j~)}(hjP!h]h__index}(hjR!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjN!ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhjJ!ubjT)}(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&]uh1jShjJ!ubeh}(h]h ]h"]h$]h&]uh1j=hje!hMhj ubj>)}(h*``__max`` The maximum limit for **index** h](jD)}(h ``__max``h]j~)}(hj!h]h__max}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj!ubah}(h]h ]h"]h$]h&]uh1jCh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:236: ./include/linux/maple_tree.hhMhj!ubjT)}(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&]uh1jShj!ubeh}(h]h ]h"]h$]h&]uh1j=hj!hMhj ubeh}(h]h ]h"]h$]h&]uh1j8hj 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:236: ./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:236: ./include/linux/maple_tree.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chMXubj )}(h h]h }(hj&"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"hhhj%"hMXubj )}(hmas_prealloc_calch]j )}(hmas_prealloc_calch]hmas_prealloc_calc}(hj8"hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj4"ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj"hhhj%"hMXubj )}(h)(struct ma_wr_state *wr_mas, void *entry)h](j )}(hstruct ma_wr_state *wr_mash](j )}(hj h]hstruct}(hjT"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjP"ubj )}(h h]h }(hja"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjP"ubh)}(hhh]j )}(h ma_wr_stateh]h ma_wr_state}(hjr"hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjo"ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjt"modnameN classnameNjC jF )}jI ]jL )}j? j:"sbc.mas_prealloc_calcasbuh1hhjP"ubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjP"ubj` )}(hjh]h*}(hj"hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjP"ubj )}(hwr_mash]hwr_mas}(hj"hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjP"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjL"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&]uh1j hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjL"ubeh}(h]h ]h"]h$]h&]hhuh1j hj"hhhj%"hMXubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj"hhhj%"hMXubah}(h]j "ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj%"hMXhj "hhubjI )}(hhh]h)}(h)}(h5``struct ma_wr_state *wr_mas`` The maple write state h](jD)}(h``struct ma_wr_state *wr_mas``h]j~)}(hjZ#h]hstruct ma_wr_state *wr_mas}(hj\#hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjX#ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMZhjT#ubjT)}(hhh]h)}(hThe maple write stateh]hThe maple write state}(hjs#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo#hMZhjp#ubah}(h]h ]h"]h$]h&]uh1jShjT#ubeh}(h]h ]h"]h$]h&]uh1j=hjo#hMZhjQ#ubj>)}(h1``void *entry`` The entry to store into the tree h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM[hj#ubjT)}(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#hM[hj#ubah}(h]h ]h"]h$]h&]uh1jShj#ubeh}(h]h ]h"]h$]h&]uh1j=hj#hM[hjQ#ubeh}(h]h ]h"]h$]h&]uh1j8hj5#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:237: ./lib/maple_tree.chM]hj5#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:237: ./lib/maple_tree.chM]hj5#ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chMubj )}(h h]h }(hj"$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$hhhj!$hMubj )}(hmas_wr_preallocateh]j )}(hmas_wr_preallocateh]hmas_wr_preallocate}(hj4$hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj0$ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj$hhhj!$hMubj )}(h)(struct ma_wr_state *wr_mas, void *entry)h](j )}(hstruct ma_wr_state *wr_mash](j )}(hj h]hstruct}(hjP$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjL$ubj )}(h h]h }(hj]$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjL$ubh)}(hhh]j )}(h ma_wr_stateh]h ma_wr_state}(hjn$hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjk$ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjp$modnameN classnameNjC jF )}jI ]jL )}j? j6$sbc.mas_wr_preallocateasbuh1hhjL$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjL$ubj` )}(hjh]h*}(hj$hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjL$ubj )}(hwr_mash]hwr_mas}(hj$hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjL$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjH$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&]uh1j hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjH$ubeh}(h]h ]h"]h$]h&]hhuh1j hj$hhhj!$hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj $hhhj!$hMubah}(h]j$ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj!$hMhj$hhubjI )}(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:237: ./lib/maple_tree.chMhj%hhubah}(h]h ]h"]h$]h&]uh1jH hj$hhhj!$hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j-%j] j-%j^ j_ j` uh1j hhhjhNhNubj )}(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)}(hj7%h]h Parameters}(hj9%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5%ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj1%ubj9)}(hhh](j>)}(h5``struct ma_wr_state *wr_mas`` The maple write state h](jD)}(h``struct ma_wr_state *wr_mas``h]j~)}(hjV%h]hstruct ma_wr_state *wr_mas}(hjX%hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjT%ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjP%ubjT)}(hhh]h)}(hThe maple write stateh]hThe maple write state}(hjo%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjk%hMhjl%ubah}(h]h ]h"]h$]h&]uh1jShjP%ubeh}(h]h ]h"]h$]h&]uh1j=hjk%hMhjM%ubj>)}(h-``void *entry`` The entry that will be storedh](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj%ubjT)}(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:237: ./lib/maple_tree.chMhj%ubah}(h]h ]h"]h$]h&]uh1jShj%ubeh}(h]h ]h"]h$]h&]uh1j=hj%hMhjM%ubeh}(h]h ]h"]h$]h&]uh1j8hj1%ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./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&]uh1j hj&ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj%hhhj%hMubj )}(h#(struct ma_state *mas, void *entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj3&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}(hjQ&hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjN&ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjS&modnameN classnameNjC jF )}jI ]jL )}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}(hj&hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj/&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&]uh1j hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj+&ubeh}(h]h ]h"]h$]h&]hhuh1j hj%hhhj%hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj%hhhj%hMubah}(h]j%ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj%hMhj%hhubjI )}(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:237: ./lib/maple_tree.chMhj&hhubah}(h]h ]h"]h$]h&]uh1jH hj%hhhj%hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j'j] j'j^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chMhj'ubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(h``struct ma_state *mas``h]j~)}(hj9'h]hstruct ma_state *mas}(hj;'hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj7'ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj3'ubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjR'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjN'hMhjO'ubah}(h]h ]h"]h$]h&]uh1jShj3'ubeh}(h]h ]h"]h$]h&]uh1j=hjN'hMhj0'ubj>)}(h#``void *entry`` The entry to store h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjl'ubjT)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hMhj'ubah}(h]h ]h"]h$]h&]uh1jShjl'ubeh}(h]h ]h"]h$]h&]uh1j=hj'hMhj0'ubeh}(h]h ]h"]h$]h&]uh1j8hj'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:237: ./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:237: ./lib/maple_tree.chMhj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./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&]uh1j hj(ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj'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 hj9(ubj )}(h h]h }(hjJ(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9(ubh)}(hhh]j )}(hma_stateh]hma_state}(hj[(hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjX(ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj](modnameN classnameNjC jF )}jI ]jL )}j? j#(sbc.mas_alloc_cyclicasbuh1hhj9(ubj )}(h h]h }(hj{(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9(ubj` )}(hjh]h*}(hj(hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj9(ubj )}(hmash]hmas}(hj(hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj9(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj5(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&]uh1j hj(ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj5(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}(hj6)hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj )ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj5(ubj )}(hunsigned long range_loh](j )}(hunsignedh]hunsigned}(hjO)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjK)ubj )}(h h]h }(hj])hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjK)ubj )}(hlongh]hlong}(hjk)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjK)ubj )}(h h]h }(hjy)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjK)ubj )}(hrange_loh]hrange_lo}(hj)hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjK)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj5(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&]uh1j hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj5(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}(hj6*hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj5(ubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hjR*hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjO*ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjT*modnameN classnameNjC jF )}jI ]jw(c.mas_alloc_cyclicasbuh1hhjK*ubj )}(h h]h }(hjp*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjK*ubj )}(hgfph]hgfp}(hj~*hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjK*ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj5(ubeh}(h]h ]h"]h$]h&]hhuh1j hj'hhhj(hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj'hhhj(hMubah}(h]j'ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj(hMhj'hhubjI )}(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:237: ./lib/maple_tree.chMhj*hhubah}(h]h ]h"]h$]h&]uh1jH hj'hhhj(hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j*j] j*j^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chMhj*ubj9)}(hhh](j>)}(h*``struct ma_state *mas`` The maple state. h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj*ubjT)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMhj*ubah}(h]h ]h"]h$]h&]uh1jShj*ubeh}(h]h ]h"]h$]h&]uh1j=hj*hMhj*ubj>)}(h)``unsigned long *startp`` Pointer to ID. h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj+ubjT)}(hhh]h)}(hPointer to ID.h]hPointer to ID.}(hj;+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7+hMhj8+ubah}(h]h ]h"]h$]h&]uh1jShj+ubeh}(h]h ]h"]h$]h&]uh1j=hj7+hMhj*ubj>)}(h$``void *entry`` The entry to store. h](jD)}(h``void *entry``h]j~)}(hj[+h]h void *entry}(hj]+hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjY+ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjU+ubjT)}(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&]uh1jShjU+ubeh}(h]h ]h"]h$]h&]uh1j=hjp+hMhj*ubj>)}(h;``unsigned long range_lo`` Lower bound of range to search. h](jD)}(h``unsigned long range_lo``h]j~)}(hj+h]hunsigned long range_lo}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj+ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj+ubjT)}(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&]uh1jShj+ubeh}(h]h ]h"]h$]h&]uh1j=hj+hMhj*ubj>)}(h;``unsigned long range_hi`` Upper bound of range to search. h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj+ubjT)}(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&]uh1jShj+ubeh}(h]h ]h"]h$]h&]uh1j=hj+hMhj*ubj>)}(h8``unsigned long *next`` Pointer to next ID to allocate. h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM hj,ubjT)}(hhh]h)}(hPointer to next ID to allocate.h]hPointer to next ID to allocate.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hM hj,ubah}(h]h ]h"]h$]h&]uh1jShj,ubeh}(h]h ]h"]h$]h&]uh1j=hj,hM hj*ubj>)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](jD)}(h ``gfp_t gfp``h]j~)}(hj?,h]h gfp_t gfp}(hjA,hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj=,ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM!hj9,ubjT)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjX,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjT,hM!hjU,ubah}(h]h ]h"]h$]h&]uh1jShj9,ubeh}(h]h ]h"]h$]h&]uh1j=hjT,hM!hj*ubeh}(h]h ]h"]h$]h&]uh1j8hj*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:237: ./lib/maple_tree.chM#hj*ubh)}(h0 if the allocation succeeded without wrapping, 1 if the allocation succeeded after wrapping, or -EBUSY if there are no free entries.h]h0 if the allocation succeeded without wrapping, 1 if the allocation succeeded after wrapping, or -EBUSY if there are no free entries.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM#hj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chM[ubj )}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,hhhj,hM[ubj` )}(hjh]h*}(hj,hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj,hhhj,hM[ubj )}(hmas_walkh]j )}(hmas_walkh]hmas_walk}(hj,hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj,ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj,hhhj,hM[ubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj -hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-ubj )}(h h]h }(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-ubh)}(hhh]j )}(hma_stateh]hma_state}(hj'-hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj$-ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj)-modnameN classnameNjC jF )}jI ]jL )}j? j,sb c.mas_walkasbuh1hhj-ubj )}(h h]h }(hjG-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-ubj` )}(hjh]h*}(hjU-hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj-ubj )}(hmash]hmas}(hjb-hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj-ubah}(h]h ]h"]h$]h&]hhuh1j hj,hhhj,hM[ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj,hhhj,hM[ubah}(h]j,ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj,hM[hj,hhubjI )}(hhh]h)}(h&Search for **mas->index** in the tree.h](h Search for }(hj-hhhNhNubj)}(h**mas->index**h]h mas->index}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh in the tree.}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM[hj-hhubah}(h]h ]h"]h$]h&]uh1jH hj,hhhj,hM[ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j-j] j-j^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chM_hj-ubj9)}(hhh]j>)}(h*``struct ma_state *mas`` The maple state. h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM\hj-ubjT)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-hM\hj-ubah}(h]h ]h"]h$]h&]uh1jShj-ubeh}(h]h ]h"]h$]h&]uh1j=hj-hM\hj-ubah}(h]h ]h"]h$]h&]uh1j8hj-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:237: ./lib/maple_tree.chM^hj-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}(hj0.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM]hj-ubh)}(h **Return**h]j)}(hjA.h]hReturn}(hjC.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?.ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM`hj-ubh)}(h&the entry at the location or ``NULL``.h](hthe entry at the location or }(hjW.hhhNhNubj~)}(h``NULL``h]hNULL}(hj_.hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjW.ubh.}(hjW.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMahj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mte_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}(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.hhhj.hMubh__rcu}(hj.hhhNhNubj )}(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` )}(hjh]h*}(hj.hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj.hhhj.hMubj )}(h mte_dead_walkh]j )}(h mte_dead_walkh]h mte_dead_walk}(hj.hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj.ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj.hhhj.hMubj )}(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&]uh1j hj/ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj!/modnameN classnameNjC jF )}jI ]jL )}j? j.sbc.mte_dead_walkasbuh1hhj.ubj )}(h h]h }(hj?/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj` )}(hjh]h*}(hjM/hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj.ubj` )}(hjh]h*}(hjZ/hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj.ubj )}(henodeh]henode}(hjg/hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj.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 }(hj/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&]uh1j hj|/ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj.ubeh}(h]h ]h"]h$]h&]hhuh1j hj.hhhj.hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj.hhhj.hMubah}(h]j.ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj.hMhj.hhubjI )}(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:237: ./lib/maple_tree.chMhj/hhubah}(h]h ]h"]h$]h&]uh1jH hj.hhhj.hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j/j] j/j^ j_ j` uh1j hhhjhNhNubj )}(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)}(hj0h]h Parameters}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj/ubj9)}(hhh](j>)}(h6``struct maple_enode **enode`` The maple encoded node h](jD)}(h``struct maple_enode **enode``h]j~)}(hj#0h]hstruct maple_enode **enode}(hj%0hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj!0ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj0ubjT)}(hhh]h)}(hThe maple encoded nodeh]hThe maple encoded node}(hj<0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj80hMhj90ubah}(h]h ]h"]h$]h&]uh1jShj0ubeh}(h]h ]h"]h$]h&]uh1j=hj80hMhj0ubj>)}(h-``unsigned char offset`` The starting offset h](jD)}(h``unsigned char offset``h]j~)}(hj\0h]hunsigned char offset}(hj^0hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjZ0ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjV0ubjT)}(hhh]h)}(hThe starting offseth]hThe starting offset}(hju0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjq0hMhjr0ubah}(h]h ]h"]h$]h&]uh1jShjV0ubeh}(h]h ]h"]h$]h&]uh1j=hjq0hMhj0ubeh}(h]h ]h"]h$]h&]uh1j8hj/ubh)}(h**Note**h]j)}(hj0h]hNote}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj/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:237: ./lib/maple_tree.chMhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mt_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:237: ./lib/maple_tree.chMubj )}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0hhhj0hMubj )}(h mt_free_walkh]j )}(h mt_free_walkh]h mt_free_walk}(hj0hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj0ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj0hhhj0hMubj )}(h(struct rcu_head *head)h]j )}(hstruct rcu_head *headh](j )}(hj h]hstruct}(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubj )}(h h]h }(hj&1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubh)}(hhh]j )}(hrcu_headh]hrcu_head}(hj71hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj41ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj91modnameN classnameNjC jF )}jI ]jL )}j? j0sbc.mt_free_walkasbuh1hhj1ubj )}(h h]h }(hjW1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubj` )}(hjh]h*}(hje1hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj1ubj )}(hheadh]hhead}(hjr1hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj1ubah}(h]h ]h"]h$]h&]hhuh1j hj0hhhj0hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj0hhhj0hMubah}(h]j0ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj0hMhj0hhubjI )}(hhh]h)}(h.Walk & free a tree in the RCU callback contexth]h.Walk & free a tree in the RCU callback context}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj1hhubah}(h]h ]h"]h$]h&]uh1jH hj0hhhj0hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j1j] j1j^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chMhj1ubj9)}(hhh]j>)}(h?``struct rcu_head *head`` The RCU head that's within the node. h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj1ubjT)}(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&]uh1hhj1hMhj1ubah}(h]h ]h"]h$]h&]uh1jShj1ubeh}(h]h ]h"]h$]h&]uh1j=hj1hMhj1ubah}(h]h ]h"]h$]h&]uh1j8hj1ubh)}(h**Note**h]j)}(hj2h]hNote}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj1ubh)}(h4This can only be used from the RCU callback context.h]h4This can only be used from the RCU callback context.}(hj.2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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 hjY2hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM2ubj )}(h h]h }(hjl2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjY2hhhjk2hM2ubj` )}(hjh]h*}(hjz2hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjY2hhhjk2hM2ubj )}(h mas_storeh]j )}(h mas_storeh]h mas_store}(hj2hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj2ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjY2hhhjk2hM2ubj )}(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&]uh1j hj2ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj2modnameN classnameNjC jF )}jI ]jL )}j? j2sb 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}(hj3hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj2ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3ubj )}(h h]h }(hj'3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3ubj` )}(hjh]h*}(hj53hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj3ubj )}(hentryh]hentry}(hjB3hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj3ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj2ubeh}(h]h ]h"]h$]h&]hhuh1j hjY2hhhjk2hM2ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjU2hhhjk2hM2ubah}(h]jP2ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjk2hM2hjR2hhubjI )}(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:237: ./lib/maple_tree.chM2hji3hhubah}(h]h ]h"]h$]h&]uh1jH hjR2hhhjk2hM2ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j3j] j3j^ j_ j` uh1j hhhjhNhNubj )}(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&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM6hj3ubj9)}(hhh](j>)}(h*``struct ma_state *mas`` The maple state. h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM3hj3ubjT)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hM3hj3ubah}(h]h ]h"]h$]h&]uh1jShj3ubeh}(h]h ]h"]h$]h&]uh1j=hj3hM3hj3ubj>)}(h$``void *entry`` The entry to store. h](jD)}(h``void *entry``h]j~)}(hj3h]h void *entry}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM4hj3ubjT)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj 4hM4hj4ubah}(h]h ]h"]h$]h&]uh1jShj3ubeh}(h]h ]h"]h$]h&]uh1j=hj 4hM4hj3ubeh}(h]h ]h"]h$]h&]uh1j8hj3ubh)}(h**Description**h]j)}(hj34h]h Description}(hj54hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj14ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM6hj3ubh)}(hPThe **mas->index** and **mas->last** is used to set the range for the **entry**.h](hThe }(hjI4hhhNhNubj)}(h**mas->index**h]h mas->index}(hjQ4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI4ubh and }(hjI4hhhNhNubj)}(h **mas->last**h]h mas->last}(hjc4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI4ubh" is used to set the range for the }(hjI4hhhNhNubj)}(h **entry**h]hentry}(hju4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI4ubh.}(hjI4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM5hj3ubh)}(h **Return**h]j)}(hj4h]hReturn}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM7hj3ubh)}(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:237: ./lib/maple_tree.chM8hj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chMjubj )}(h h]h }(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4hhhj4hMjubj )}(h mas_store_gfph]j )}(h mas_store_gfph]h mas_store_gfp}(hj5hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj5ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj4hhhj4hMjubj )}(h.(struct ma_state *mas, void *entry, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj$5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj 5ubj )}(h h]h }(hj15hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj 5ubh)}(hhh]j )}(hma_stateh]hma_state}(hjB5hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj?5ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjD5modnameN classnameNjC jF )}jI ]jL )}j? j 5sbc.mas_store_gfpasbuh1hhj 5ubj )}(h h]h }(hjb5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj 5ubj` )}(hjh]h*}(hjp5hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj 5ubj )}(hmash]hmas}(hj}5hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj 5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj5ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5ubj )}(h h]h }(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5ubj` )}(hjh]h*}(hj5hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj5ubj )}(hentryh]hentry}(hj5hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj5ubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hj5hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj5ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj5modnameN classnameNjC jF )}jI ]j^5c.mas_store_gfpasbuh1hhj5ubj )}(h h]h }(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5ubj )}(hgfph]hgfp}(hj6hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj5ubeh}(h]h ]h"]h$]h&]hhuh1j hj4hhhj4hMjubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj4hhhj4hMjubah}(h]j4ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj4hMjhj4hhubjI )}(hhh]h)}(hStore a value into the tree.h]hStore a value into the tree.}(hj16hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMjhj.6hhubah}(h]h ]h"]h$]h&]uh1jH hj4hhhj4hMjubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jI6j] jI6j^ j_ j` uh1j hhhjhNhNubj )}(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)}(hjS6h]h Parameters}(hjU6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ6ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMnhjM6ubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMkhjl6ubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMkhj6ubah}(h]h ]h"]h$]h&]uh1jShjl6ubeh}(h]h ]h"]h$]h&]uh1j=hj6hMkhji6ubj>)}(h#``void *entry`` The entry to store h](jD)}(h``void *entry``h]j~)}(hj6h]h void *entry}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj6ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMlhj6ubjT)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMlhj6ubah}(h]h ]h"]h$]h&]uh1jShj6ubeh}(h]h ]h"]h$]h&]uh1j=hj6hMlhji6ubj>)}(hA``gfp_t gfp`` The GFP_FLAGS to use for allocations if necessary. h](jD)}(h ``gfp_t gfp``h]j~)}(hj6h]h gfp_t gfp}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj6ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMmhj6ubjT)}(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&]uh1hhj6hMmhj6ubah}(h]h ]h"]h$]h&]uh1jShj6ubeh}(h]h ]h"]h$]h&]uh1j=hj6hMmhji6ubeh}(h]h ]h"]h$]h&]uh1j8hjM6ubh)}(h **Return**h]j)}(hj7h]hReturn}(hj!7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMohjM6ubh)}(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.}(hj57hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMohjM6ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chMubj )}(h h]h }(hjs7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`7hhhjr7hMubj )}(hmas_store_prealloch]j )}(hmas_store_prealloch]hmas_store_prealloc}(hj7hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj7ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj`7hhhjr7hMubj )}(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 hj7ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubh)}(hhh]j )}(hma_stateh]hma_state}(hj7hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj7ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj7modnameN classnameNjC jF )}jI ]jL )}j? j7sbc.mas_store_preallocasbuh1hhj7ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubj` )}(hjh]h*}(hj7hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj7ubj )}(hmash]hmas}(hj7hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj7ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj8ubj )}(h h]h }(hj!8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj8ubj` )}(hjh]h*}(hj/8hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj8ubj )}(hentryh]hentry}(hj<8hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj7ubeh}(h]h ]h"]h$]h&]hhuh1j hj`7hhhjr7hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj\7hhhjr7hMubah}(h]jW7ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjr7hMhjY7hhubjI )}(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:237: ./lib/maple_tree.chMhjc8hhubah}(h]h ]h"]h$]h&]uh1jH hjY7hhhjr7hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j~8j] j~8j^ j_ j` uh1j hhhjhNhNubj )}(ha**Parameters** ``struct ma_state *mas`` The maple state ``void *entry`` The entry to store.h](h)}(h**Parameters**h]j)}(hj8h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj8ubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj8ubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1jShj8ubeh}(h]h ]h"]h$]h&]uh1j=hj8hMhj8ubj>)}(h#``void *entry`` The entry to store.h](jD)}(h``void *entry``h]j~)}(hj8h]h void *entry}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj8ubjT)}(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:237: ./lib/maple_tree.chMhj8ubah}(h]h ]h"]h$]h&]uh1jShj8ubeh}(h]h ]h"]h$]h&]uh1j=hj8hMhj8ubeh}(h]h ]h"]h$]h&]uh1j8hj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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}(hj:9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj69hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hjI9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj69hhhjH9hMubj )}(hmas_preallocateh]j )}(hmas_preallocateh]hmas_preallocate}(hj[9hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjW9ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj69hhhjH9hMubj )}(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 }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjs9ubh)}(hhh]j )}(hma_stateh]hma_state}(hj9hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj9ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj9modnameN classnameNjC jF )}jI ]jL )}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&]uh1j hjs9ubeh}(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*}(hj:hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj9ubj )}(hentryh]hentry}(hj:hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj9ubeh}(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&]uh1j hj+:ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj0:modnameN classnameNjC jF )}jI ]j9c.mas_preallocateasbuh1hhj':ubj )}(h h]h }(hjL:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj':ubj )}(hgfph]hgfp}(hjZ:hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj':ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjo9ubeh}(h]h ]h"]h$]h&]hhuh1j hj69hhhjH9hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj29hhhjH9hMubah}(h]j-9ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjH9hMhj/9hhubjI )}(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:237: ./lib/maple_tree.chMhj:hhubah}(h]h ]h"]h$]h&]uh1jH hj/9hhhjH9hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j:j] j:j^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chMhj:ubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj:ubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMhj:ubah}(h]h ]h"]h$]h&]uh1jShj:ubeh}(h]h ]h"]h$]h&]uh1j=hj:hMhj:ubj>)}(h.``void *entry`` The entry that will be stored h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj:ubjT)}(hhh]h)}(hThe entry that will be storedh]hThe entry that will be stored}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMhj;ubah}(h]h ]h"]h$]h&]uh1jShj:ubeh}(h]h ]h"]h$]h&]uh1j=hj;hMhj:ubj>)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](jD)}(h ``gfp_t gfp``h]j~)}(hj7;h]h gfp_t gfp}(hj9;hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj5;ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj1;ubjT)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjP;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjL;hMhjM;ubah}(h]h ]h"]h$]h&]uh1jShj1;ubeh}(h]h ]h"]h$]h&]uh1j=hjL;hMhj:ubeh}(h]h ]h"]h$]h&]uh1j8hj: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:237: ./lib/maple_tree.chMhj:ubh)}(h70 on success, -ENOMEM if memory could not be allocated.h]h70 on success, -ENOMEM if memory could not be allocated.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chM(ubj )}(h h]h }(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;hhhj;hM(ubj` )}(hjh]h*}(hj;hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj;hhhj;hM(ubj )}(hmas_nexth]j )}(hmas_nexth]hmas_next}(hj;hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj;ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj;hhhj;hM(ubj )}(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&]uh1j hj<ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj!<modnameN classnameNjC jF )}jI ]jL )}j? j;sb c.mas_nextasbuh1hhj;ubj )}(h h]h }(hj?<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubj` )}(hjh]h*}(hjM<hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj;ubj )}(hmash]hmas}(hjZ<hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj;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 }(hj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjo<ubj )}(hlongh]hlong}(hj<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&]uh1j hjo<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: uh1j j; j< hj;hhhj;hM(ubah}(h]j;ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj;hM(hj;hhubjI )}(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:237: ./lib/maple_tree.chM(hj<hhubah}(h]h ]h"]h$]h&]uh1jH hj;hhhj;hM(ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j<j] j<j^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chM,hj<ubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM)hj=ubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj/=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+=hM)hj,=ubah}(h]h ]h"]h$]h&]uh1jShj=ubeh}(h]h ]h"]h$]h&]uh1j=hj+=hM)hj =ubj>)}(h2``unsigned long max`` The maximum index to check. h](jD)}(h``unsigned long max``h]j~)}(hjO=h]hunsigned long max}(hjQ=hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjM=ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM*hjI=ubjT)}(hhh]h)}(hThe maximum index to check.h]hThe maximum index to check.}(hjh=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd=hM*hje=ubah}(h]h ]h"]h$]h&]uh1jShjI=ubeh}(h]h ]h"]h$]h&]uh1j=hjd=hM*hj =ubeh}(h]h ]h"]h$]h&]uh1j8hj<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:237: ./lib/maple_tree.chM,hj<ubh)}(hrReturns the next entry after **mas->index**. Must hold rcu_read_lock or the write lock. Can return the zero entry.h](hReturns the next entry after }(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:237: ./lib/maple_tree.chM+hj<ubh)}(h **Return**h]j)}(hj=h]hReturn}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM/hj<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:237: ./lib/maple_tree.chM0hj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chM@ubj )}(h h]h }(hj%>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>hhhj$>hM@ubj` )}(hjh]h*}(hj3>hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj>hhhj$>hM@ubj )}(hmas_next_rangeh]j )}(hmas_next_rangeh]hmas_next_range}(hjD>hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj@>ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj>hhhj$>hM@ubj )}(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&]uh1j hj{>ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj>modnameN classnameNjC jF )}jI ]jL )}j? jF>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&]uh1j hj\>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjX>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&]uh1j hj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjX>ubeh}(h]h ]h"]h$]h&]hhuh1j hj>hhhj$>hM@ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj>hhhj$>hM@ubah}(h]j >ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj$>hM@hj >hhubjI )}(hhh]h)}(h)Advance the maple state to the next rangeh]h)Advance the maple state to the next range}(hj4?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM@hj1?hhubah}(h]h ]h"]h$]h&]uh1jH hj >hhhj$>hM@ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jL?j] jL?j^ j_ j` uh1j hhhjhNhNubj )}(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)}(hjV?h]h Parameters}(hjX?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT?ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMDhjP?ubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMAhjo?ubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMAhj?ubah}(h]h ]h"]h$]h&]uh1jShjo?ubeh}(h]h ]h"]h$]h&]uh1j=hj?hMAhjl?ubj>)}(h2``unsigned long max`` The maximum index to check. h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMBhj?ubjT)}(hhh]h)}(hThe maximum index to check.h]hThe maximum index to check.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMBhj?ubah}(h]h ]h"]h$]h&]uh1jShj?ubeh}(h]h ]h"]h$]h&]uh1j=hj?hMBhjl?ubeh}(h]h ]h"]h$]h&]uh1j8hjP?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:237: ./lib/maple_tree.chMDhjP?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:237: ./lib/maple_tree.chMChjP?ubh)}(h **Return**h]j)}(hj4@h]hReturn}(hj6@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2@ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMGhjP?ubh)}(hThe next entry or ``NULL``h](hThe next entry or }(hjJ@hhhNhNubj~)}(h``NULL``h]hNULL}(hjR@hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjJ@ubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMHhjP?ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mt_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}(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMXubj )}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@hhhj@hMXubj` )}(hjh]h*}(hj@hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj@hhhj@hMXubj )}(hmt_nexth]j )}(hmt_nexth]hmt_next}(hj@hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj@ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj@hhhj@hMXubj )}(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&]uh1j hj@ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj@modnameN classnameNjC jF )}jI ]jL )}j? j@sb c.mt_nextasbuh1hhj@ubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@ubj` )}(hjh]h*}(hjAhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj@ubj )}(hmth]hmt}(hj*AhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@ubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hjCAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?Aubj )}(h h]h }(hjQAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?Aubj )}(hlongh]hlong}(hj_AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?Aubj )}(h h]h }(hjmAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?Aubj )}(hindexh]hindex}(hj{AhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj?Aubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@ubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubj )}(hlongh]hlong}(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubj )}(hmaxh]hmax}(hjAhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjAubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@ubeh}(h]h ]h"]h$]h&]hhuh1j hj@hhhj@hMXubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj@hhhj@hMXubah}(h]jz@ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj@hMXhj|@hhubjI )}(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:237: ./lib/maple_tree.chMXhjAhhubah}(h]h ]h"]h$]h&]uh1jH hj|@hhhj@hMXubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jBj] jBj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hjBh]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM\hjBubj9)}(hhh](j>)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(h``struct maple_tree *mt``h]j~)}(hj7Bh]hstruct maple_tree *mt}(hj9BhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj5Bubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMYhj1BubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjPBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLBhMYhjMBubah}(h]h ]h"]h$]h&]uh1jShj1Bubeh}(h]h ]h"]h$]h&]uh1j=hjLBhMYhj.Bubj>)}(h(``unsigned long index`` The start index h](jD)}(h``unsigned long index``h]j~)}(hjpBh]hunsigned long index}(hjrBhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjnBubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMZhjjBubjT)}(hhh]h)}(hThe start indexh]hThe start index}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMZhjBubah}(h]h ]h"]h$]h&]uh1jShjjBubeh}(h]h ]h"]h$]h&]uh1j=hjBhMZhj.Bubj>)}(h1``unsigned long max`` The maximum index to check h](jD)}(h``unsigned long max``h]j~)}(hjBh]hunsigned long max}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM[hjBubjT)}(hhh]h)}(hThe maximum index to checkh]hThe maximum index to check}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhM[hjBubah}(h]h ]h"]h$]h&]uh1jShjBubeh}(h]h ]h"]h$]h&]uh1j=hjBhM[hj.Bubeh}(h]h ]h"]h$]h&]uh1j8hjBubh)}(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:237: ./lib/maple_tree.chM]hjBubh)}(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:237: ./lib/maple_tree.chM\hjBubh)}(h **Return**h]j)}(hj Ch]hReturn}(hj ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Cubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM`hjBubh)}(h@The entry higher than **index** or ``NULL`` if nothing is found.h](hThe entry higher than }(hj!ChhhNhNubj)}(h **index**h]hindex}(hj)ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!Cubh or }(hj!ChhhNhNubj~)}(h``NULL``h]hNULL}(hj;ChhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj!Cubh if nothing is found.}(hj!ChhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMahjBubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chMubj )}(h h]h }(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpChhhjChMubj` )}(hjh]h*}(hjChhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjpChhhjChMubj )}(hmas_prevh]j )}(hmas_prevh]hmas_prev}(hjChhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjCubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjpChhhjChMubj )}(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&]uh1j hjCubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjCmodnameN classnameNjC jF )}jI ]jL )}j? jCsb c.mas_prevasbuh1hhjCubj )}(h h]h }(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubj` )}(hjh]h*}(hj DhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjCubj )}(hmash]hmas}(hjDhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjCubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjCubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hj0DhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,Dubj )}(h h]h }(hj>DhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,Dubj )}(hlongh]hlong}(hjLDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,Dubj )}(h h]h }(hjZDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,Dubj )}(hminh]hmin}(hjhDhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj,Dubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjCubeh}(h]h ]h"]h$]h&]hhuh1j hjpChhhjChMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjlChhhjChMubah}(h]jgCah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjChMhjiChhubjI )}(hhh]h)}(hGet the previous entryh]hGet the previous entry}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjDhhubah}(h]h ]h"]h$]h&]uh1jH hjiChhhjChMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jDj] jDj^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chMhjDubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjDubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjDubah}(h]h ]h"]h$]h&]uh1jShjDubeh}(h]h ]h"]h$]h&]uh1j=hjDhMhjDubj>)}(h2``unsigned long min`` The minimum value to check. h](jD)}(h``unsigned long min``h]j~)}(hj Eh]hunsigned long min}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj Eubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjEubjT)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hj%EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!EhMhj"Eubah}(h]h ]h"]h$]h&]uh1jShjEubeh}(h]h ]h"]h$]h&]uh1j=hj!EhMhjDubeh}(h]h ]h"]h$]h&]uh1j8hjDubh)}(h**Description**h]j)}(hjGEh]h Description}(hjIEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEEubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjDubh)}(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:237: ./lib/maple_tree.chMhjDubh)}(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:237: ./lib/maple_tree.chMhjDubh)}(hthe previous value or ``NULL``.h](hthe previous value or }(hjEhhhNhNubj~)}(h``NULL``h]hNULL}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjEubh.}(hjEhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chMubj )}(h h]h }(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjEhhhjEhMubj` )}(hjh]h*}(hjEhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjEhhhjEhMubj )}(hmas_prev_rangeh]j )}(hmas_prev_rangeh]hmas_prev_range}(hjEhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjEubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjEhhhjEhMubj )}(h)(struct ma_state *mas, unsigned long min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Fubj )}(h h]h }(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Fubh)}(hhh]j )}(hma_stateh]hma_state}(hj-FhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj*Fubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj/FmodnameN classnameNjC jF )}jI ]jL )}j? jEsbc.mas_prev_rangeasbuh1hhj Fubj )}(h h]h }(hjMFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Fubj` )}(hjh]h*}(hj[FhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj Fubj )}(hmash]hmas}(hjhFhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj Fubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjFubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj}Fubj )}(h h]h }(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj}Fubj )}(hlongh]hlong}(hjFhhhNhNubah}(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&]uh1j hj}Fubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjFubeh}(h]h ]h"]h$]h&]hhuh1j hjEhhhjEhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjEhhhjEhMubah}(h]jEah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjEhMhjEhhubjI )}(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:237: ./lib/maple_tree.chMhjFhhubah}(h]h ]h"]h$]h&]uh1jH hjEhhhjEhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jFj] jFj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hjGh]h Parameters}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjFubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(h``struct ma_state *mas``h]j~)}(hj$Gh]hstruct ma_state *mas}(hj&GhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj"Gubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjGubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj=GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9GhMhj:Gubah}(h]h ]h"]h$]h&]uh1jShjGubeh}(h]h ]h"]h$]h&]uh1j=hj9GhMhjGubj>)}(h2``unsigned long min`` The minimum value to check. h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjWGubjT)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hjvGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrGhMhjsGubah}(h]h ]h"]h$]h&]uh1jShjWGubeh}(h]h ]h"]h$]h&]uh1j=hjrGhMhjGubeh}(h]h ]h"]h$]h&]uh1j8hjFubh)}(h**Description**h]j)}(hjGh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjFubh)}(hSets **mas->index** and **mas->last** to the range. Must hold rcu_read_lock or the write lock. Will reset mas to ma_start if the node is ma_none. Will stop on not searchable nodes.h](hSets }(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:237: ./lib/maple_tree.chMhjFubh)}(h **Return**h]j)}(hjGh]hReturn}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjFubh)}(hthe previous value or ``NULL``.h](hthe previous value or }(hjGhhhNhNubj~)}(h``NULL``h]hNULL}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjGubh.}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjFubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mt_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}(hj:HhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6HhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hjIHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6HhhhjHHhMubj` )}(hjh]h*}(hjWHhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj6HhhhjHHhMubj )}(hmt_prevh]j )}(hmt_prevh]hmt_prev}(hjhHhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjdHubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj6HhhhjHHhMubj )}(h?(struct maple_tree *mt, unsigned long index, unsigned long min)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&]uh1j hjHubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjHmodnameN classnameNjC jF )}jI ]jL )}j? jjHsb c.mt_prevasbuh1hhjHubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHubj` )}(hjh]h*}(hjHhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjHubj )}(hmth]hmt}(hjHhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjHubeh}(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 }(hjIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHubj )}(hlongh]hlong}(hjIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHubj )}(h h]h }(hj IhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHubj )}(hindexh]hindex}(hj.IhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjHubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj|Hubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hjGIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCIubj )}(h h]h }(hjUIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCIubj )}(hlongh]hlong}(hjcIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCIubj )}(h h]h }(hjqIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCIubj )}(hminh]hmin}(hjIhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjCIubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj|Hubeh}(h]h ]h"]h$]h&]hhuh1j hj6HhhhjHHhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj2HhhhjHHhMubah}(h]j-Hah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjHHhMhj/HhhubjI )}(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:237: ./lib/maple_tree.chMhjIhhubah}(h]h ]h"]h$]h&]uh1jH hj/HhhhjHHhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jIj] jIj^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chMhjIubj9)}(hhh](j>)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjIubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjJubah}(h]h ]h"]h$]h&]uh1jShjIubeh}(h]h ]h"]h$]h&]uh1j=hjIhMhjIubj>)}(h(``unsigned long index`` The start index h](jD)}(h``unsigned long index``h]j~)}(hj#Jh]hunsigned long index}(hj%JhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj!Jubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjJubjT)}(hhh]h)}(hThe start indexh]hThe start index}(hj)}(h1``unsigned long min`` The minimum index to check h](jD)}(h``unsigned long min``h]j~)}(hj\Jh]hunsigned long min}(hj^JhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjZJubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjVJubjT)}(hhh]h)}(hThe minimum index to checkh]hThe minimum index to check}(hjuJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqJhMhjrJubah}(h]h ]h"]h$]h&]uh1jShjVJubeh}(h]h ]h"]h$]h&]uh1j=hjqJhMhjIubeh}(h]h ]h"]h$]h&]uh1j8hjIubh)}(h**Description**h]j)}(hjJh]h Description}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjIubh)}(hTakes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rsth]hTakes RCU read lock internally to protect the search, which does not protect the returned pointer after dropping RCU read lock. See also: Documentation/core-api/maple_tree.rst}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjIubh)}(h **Return**h]j)}(hjJh]hReturn}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./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:237: ./lib/maple_tree.chMhjIubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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}(hj'KhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#KhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hj6KhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#Khhhj5KhMubj )}(h mas_pauseh]j )}(h mas_pauseh]h mas_pause}(hjHKhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjDKubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj#Khhhj5KhMubj )}(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}(hjKhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjKubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjKmodnameN classnameNjC jF )}jI ]jL )}j? jJKsb 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&]uh1j hj`Kubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\Kubah}(h]h ]h"]h$]h&]hhuh1j hj#Khhhj5KhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjKhhhj5KhMubah}(h]jKah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj5KhMhjKhhubjI )}(hhh]h)}(h/Pause a mas_find/mas_for_each to drop the lock.h]h/Pause a mas_find/mas_for_each to drop the lock.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjKhhubah}(h]h ]h"]h$]h&]uh1jH hjKhhhj5KhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jKj] jKj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hj Lh]h Parameters}(hj LhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjLubj9)}(hhh]j>)}(h2``struct ma_state *mas`` The maple state to pause h](jD)}(h``struct ma_state *mas``h]j~)}(hj(Lh]hstruct ma_state *mas}(hj*LhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj&Lubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj"LubjT)}(hhh]h)}(hThe maple state to pauseh]hThe maple state to pause}(hjALhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=LhMhj>Lubah}(h]h ]h"]h$]h&]uh1jShj"Lubeh}(h]h ]h"]h$]h&]uh1j=hj=LhMhjLubah}(h]h ]h"]h$]h&]uh1j8hjLubh)}(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:237: ./lib/maple_tree.chMhjLubh)}(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}(hjLhhhNhNubah}(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:237: ./lib/maple_tree.chMhjLubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chM ubj )}(h h]h }(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLhhhjLhM ubj )}(hmas_find_setuph]j )}(hmas_find_setuph]hmas_find_setup}(hjLhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjLubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjLhhhjLhM ubj )}(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 }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubh)}(hhh]j )}(hma_stateh]hma_state}(hjMhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjMubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjMmodnameN classnameNjC jF )}jI ]jL )}j? jLsbc.mas_find_setupasbuh1hhjLubj )}(h h]h }(hj4MhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubj` )}(hjh]h*}(hjBMhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjLubj )}(hmash]hmas}(hjOMhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjLubeh}(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}(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdMubj )}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdMubj )}(hmaxh]hmax}(hjMhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjdMubeh}(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&]uh1j hjMubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjLubeh}(h]h ]h"]h$]h&]hhuh1j hjLhhhjLhM ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjLhhhjLhM ubah}(h]jLah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjLhM hjLhhubjI )}(hhh]h)}(h(Internal function to set up mas_find*().h]h(Internal function to set up mas_find*().}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM hjNhhubah}(h]h ]h"]h$]h&]uh1jH hjLhhhjLhM ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j1Nj] j1Nj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hj;Nh]h Parameters}(hj=NhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9Nubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM hj5Nubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(h``struct ma_state *mas``h]j~)}(hjZNh]hstruct ma_state *mas}(hj\NhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjXNubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM hjTNubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjsNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjoNhM hjpNubah}(h]h ]h"]h$]h&]uh1jShjTNubeh}(h]h ]h"]h$]h&]uh1j=hjoNhM hjQNubj>)}(h(``unsigned long max`` The maximum index h](jD)}(h``unsigned long max``h]j~)}(hjNh]hunsigned long max}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjNubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM hjNubjT)}(hhh]h)}(hThe maximum indexh]hThe maximum index}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhM hjNubah}(h]h ]h"]h$]h&]uh1jShjNubeh}(h]h ]h"]h$]h&]uh1j=hjNhM hjQNubj>)}(h&``void **entry`` Pointer to the entry h](jD)}(h``void **entry``h]j~)}(hjNh]h void **entry}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjNubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM hjNubjT)}(hhh]h)}(hPointer to the entryh]hPointer to the entry}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhM hjNubah}(h]h ]h"]h$]h&]uh1jShjNubeh}(h]h ]h"]h$]h&]uh1j=hjNhM hjQNubeh}(h]h ]h"]h$]h&]uh1j8hj5Nubh)}(h **Return**h]j)}(hjOh]hReturn}(hj OhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj5Nubh)}(h-True if entry is the answer, false otherwise.h]h-True if entry is the answer, false otherwise.}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj5Nubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_find (C function) c.mas_findhNtauh1jhjhhhNhNubj )}(hhh](j )}(h9void * mas_find (struct ma_state *mas, unsigned long max)h]j )}(h7void *mas_find(struct ma_state *mas, unsigned long max)h](j )}(hvoidh]hvoid}(hjLOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHOhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM`ubj )}(h h]h }(hj[OhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHOhhhjZOhM`ubj` )}(hjh]h*}(hjiOhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjHOhhhjZOhM`ubj )}(hmas_findh]j )}(hmas_findh]hmas_find}(hjzOhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjvOubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjHOhhhjZOhM`ubj )}(h)(struct ma_state *mas, unsigned long max)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubj )}(h h]h }(hjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubh)}(hhh]j )}(hma_stateh]hma_state}(hjOhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjOubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjOmodnameN classnameNjC jF )}jI ]jL )}j? j|Osb c.mas_findasbuh1hhjOubj )}(h h]h }(hjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubj` )}(hjh]h*}(hjOhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjOubj )}(hmash]hmas}(hjOhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjOubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjOubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjPubj )}(h h]h }(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjPubj )}(hlongh]hlong}(hj$PhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjPubj )}(h h]h }(hj2PhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjPubj )}(hmaxh]hmax}(hj@PhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjPubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjOubeh}(h]h ]h"]h$]h&]hhuh1j hjHOhhhjZOhM`ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjDOhhhjZOhM`ubah}(h]j?Oah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjZOhM`hjAOhhubjI )}(hhh]h)}(hsOn the first call, find the entry at or after mas->index 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:237: ./lib/maple_tree.chM`hjgPhhubah}(h]h ]h"]h$]h&]uh1jH hjAOhhhjZOhM`ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jPj] jPj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hjPh]h Parameters}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMdhjPubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMbhjPubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhMbhjPubah}(h]h ]h"]h$]h&]uh1jShjPubeh}(h]h ]h"]h$]h&]uh1j=hjPhMbhjPubj>)}(h2``unsigned long max`` The maximum value to check. h](jD)}(h``unsigned long max``h]j~)}(hjPh]hunsigned long max}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjPubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMchjPubjT)}(hhh]h)}(hThe maximum value to check.h]hThe maximum value to check.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj QhMchj Qubah}(h]h ]h"]h$]h&]uh1jShjPubeh}(h]h ]h"]h$]h&]uh1j=hj QhMchjPubeh}(h]h ]h"]h$]h&]uh1j8hjPubh)}(h**Description**h]j)}(hj1Qh]h Description}(hj3QhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/Qubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMehjPubh)}(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 }(hjGQhhhNhNubj)}(h**mas->status**h]h mas->status}(hjOQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGQubh to ma_overflow.}(hjGQhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMdhjPubh)}(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:237: ./lib/maple_tree.chMhhjPubh)}(hThe entry or ``NULL``.h](h The entry or }(hjQhhhNhNubj~)}(h``NULL``h]hNULL}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjQubh.}(hjQhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMihjPubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chM|ubj )}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQhhhjQhM|ubj` )}(hjh]h*}(hjQhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjQhhhjQhM|ubj )}(hmas_find_rangeh]j )}(hmas_find_rangeh]hmas_find_range}(hjQhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjQubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjQhhhjQhM|ubj )}(h)(struct ma_state *mas, unsigned long max)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj RhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRubj )}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRubh)}(hhh]j )}(hma_stateh]hma_state}(hj)RhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj&Rubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj+RmodnameN classnameNjC jF )}jI ]jL )}j? jQsbc.mas_find_rangeasbuh1hhjRubj )}(h h]h }(hjIRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRubj` )}(hjh]h*}(hjWRhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjRubj )}(hmash]hmas}(hjdRhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjRubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjRubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hj}RhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyRubj )}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyRubj )}(hlongh]hlong}(hjRhhhNhNubah}(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&]uh1j hjyRubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjRubeh}(h]h ]h"]h$]h&]hhuh1j hjQhhhjQhM|ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjQhhhjQhM|ubah}(h]jQah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjQhM|hjQhhubjI )}(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:237: ./lib/maple_tree.chM|hjRhhubah}(h]h ]h"]h$]h&]uh1jH hjQhhhjQhM|ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j Sj] j Sj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hjSh]h Parameters}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj Subj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(h``struct ma_state *mas``h]j~)}(hj2Sh]hstruct ma_state *mas}(hj4ShhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj0Subah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM~hj,SubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjKShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGShM~hjHSubah}(h]h ]h"]h$]h&]uh1jShj,Subeh}(h]h ]h"]h$]h&]uh1j=hjGShM~hj)Subj>)}(h2``unsigned long max`` The maximum value to check. h](jD)}(h``unsigned long max``h]j~)}(hjkSh]hunsigned long max}(hjmShhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjiSubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjeSubjT)}(hhh]h)}(hThe maximum value to check.h]hThe maximum value to check.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMhjSubah}(h]h ]h"]h$]h&]uh1jShjeSubeh}(h]h ]h"]h$]h&]uh1j=hjShMhj)Subeh}(h]h ]h"]h$]h&]uh1j8hj Subh)}(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:237: ./lib/maple_tree.chMhj Subh)}(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:237: ./lib/maple_tree.chMhj Subh)}(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:237: ./lib/maple_tree.chMhj Subh)}(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:237: ./lib/maple_tree.chMhj Subeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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}(hj6ThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ThhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hjDThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ThhhjCThMubj )}(hmas_find_rev_setuph]j )}(hmas_find_rev_setuph]hmas_find_rev_setup}(hjVThhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjRTubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj2ThhhjCThMubj )}(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 }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnTubh)}(hhh]j )}(hma_stateh]hma_state}(hjThhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjTubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjTmodnameN classnameNjC jF )}jI ]jL )}j? jXTsbc.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&]uh1j hjnTubeh}(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}(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj )}(h h]h }(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj )}(hminh]hmin}(hjUhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjTubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjjTubj )}(h void **entryh](j )}(hvoidh]hvoid}(hj5UhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1Uubj )}(h h]h }(hjCUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1Uubj` )}(hjh]h*}(hjQUhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj1Uubj` )}(hjh]h*}(hj^UhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj1Uubj )}(hentryh]hentry}(hjkUhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj1Uubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjjTubeh}(h]h ]h"]h$]h&]hhuh1j hj2ThhhjCThMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj.ThhhjCThMubah}(h]j)Tah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjCThMhj+ThhubjI )}(hhh]h)}(h,Internal function to set up mas_find_*_rev()h]h,Internal function to set up mas_find_*_rev()}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjUhhubah}(h]h ]h"]h$]h&]uh1jH hj+ThhhjCThMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jUj] jUj^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chMhjUubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjUubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMhjUubah}(h]h ]h"]h$]h&]uh1jShjUubeh}(h]h ]h"]h$]h&]uh1j=hjUhMhjUubj>)}(h(``unsigned long min`` The minimum index h](jD)}(h``unsigned long min``h]j~)}(hjVh]hunsigned long min}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj Vubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj VubjT)}(hhh]h)}(hThe minimum indexh]hThe minimum index}(hj(VhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$VhMhj%Vubah}(h]h ]h"]h$]h&]uh1jShj Vubeh}(h]h ]h"]h$]h&]uh1j=hj$VhMhjUubj>)}(h&``void **entry`` Pointer to the entry h](jD)}(h``void **entry``h]j~)}(hjHVh]h void **entry}(hjJVhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjFVubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjBVubjT)}(hhh]h)}(hPointer to the entryh]hPointer to the entry}(hjaVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]VhMhj^Vubah}(h]h ]h"]h$]h&]uh1jShjBVubeh}(h]h ]h"]h$]h&]uh1j=hj]VhMhjUubeh}(h]h ]h"]h$]h&]uh1j8hjUubh)}(h **Return**h]j)}(hjVh]hReturn}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjUubh)}(h-True if entry is the answer, false otherwise.h]h-True if entry is the answer, false otherwise.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjUubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./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&]uh1j hjVubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjVhhhjVhMubj )}(h)(struct ma_state *mas, unsigned long min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWubj )}(h h]h }(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWubh)}(hhh]j )}(hma_stateh]hma_state}(hj0WhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj-Wubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj2WmodnameN classnameNjC jF )}jI ]jL )}j? jVsbc.mas_find_revasbuh1hhjWubj )}(h h]h }(hjPWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWubj` )}(hjh]h*}(hj^WhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjWubj )}(hmash]hmas}(hjkWhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj Wubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWubj )}(h h]h }(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWubj )}(hlongh]hlong}(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWubj )}(h h]h }(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWubj )}(hminh]hmin}(hjWhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj Wubeh}(h]h ]h"]h$]h&]hhuh1j hjVhhhjVhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjVhhhjVhMubah}(h]jVah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjVhMhjVhhubjI )}(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}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjWubh.}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjWhhubah}(h]h ]h"]h$]h&]uh1jH hjVhhhjVhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j"Xj] j"Xj^ j_ j` uh1j hhhjhNhNubj )}(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}(hj.XhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*Xubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj&Xubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(h``struct ma_state *mas``h]j~)}(hjKXh]hstruct ma_state *mas}(hjMXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjIXubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjEXubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjdXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`XhMhjaXubah}(h]h ]h"]h$]h&]uh1jShjEXubeh}(h]h ]h"]h$]h&]uh1j=hj`XhMhjBXubj>)}(h2``unsigned long min`` The minimum value to check. h](jD)}(h``unsigned long min``h]j~)}(hjXh]hunsigned long min}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjXubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj~XubjT)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjXubah}(h]h ]h"]h$]h&]uh1jShj~Xubeh}(h]h ]h"]h$]h&]uh1j=hjXhMhjBXubeh}(h]h ]h"]h$]h&]uh1j8hj&Xubh)}(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:237: ./lib/maple_tree.chMhj&Xubh)}(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:237: ./lib/maple_tree.chMhj&Xubh)}(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:237: ./lib/maple_tree.chMhj&Xubh)}(hThe entry or ``NULL``.h](h The entry or }(hjYhhhNhNubj~)}(h``NULL``h]hNULL}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjYubh.}(hjYhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj&Xubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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}(hjOYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjKYhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hj^YhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjKYhhhj]YhMubj` )}(hjh]h*}(hjlYhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjKYhhhj]YhMubj )}(hmas_find_range_revh]j )}(hmas_find_range_revh]hmas_find_range_rev}(hj}YhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjyYubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjKYhhhj]YhMubj )}(h)(struct ma_state *mas, unsigned long min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubj )}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubh)}(hhh]j )}(hma_stateh]hma_state}(hjYhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjYubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjYmodnameN classnameNjC jF )}jI ]jL )}j? jYsbc.mas_find_range_revasbuh1hhjYubj )}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubj` )}(hjh]h*}(hjYhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjYubj )}(hmash]hmas}(hjYhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjYubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hj ZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZubj )}(h h]h }(hjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZubj )}(hlongh]hlong}(hj'ZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZubj )}(h h]h }(hj5ZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZubj )}(hminh]hmin}(hjCZhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjZubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjYubeh}(h]h ]h"]h$]h&]hhuh1j hjKYhhhj]YhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjGYhhhj]YhMubah}(h]jBYah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj]YhMhjDYhhubjI )}(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}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjmZubh.}(hjmZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjjZhhubah}(h]h ]h"]h$]h&]uh1jH hjDYhhhj]YhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jZj] jZj^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chM hjZubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM hjZubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhM hjZubah}(h]h ]h"]h$]h&]uh1jShjZubeh}(h]h ]h"]h$]h&]uh1j=hjZhM hjZubj>)}(h2``unsigned long min`` The minimum value to check. h](jD)}(h``unsigned long min``h]j~)}(hj [h]hunsigned long min}(hj [hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj [ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM hj[ubjT)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hj$[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj [hM hj![ubah}(h]h ]h"]h$]h&]uh1jShj[ubeh}(h]h ]h"]h$]h&]uh1j=hj [hM hjZubeh}(h]h ]h"]h$]h&]uh1j8hjZubh)}(h**Description**h]j)}(hjF[h]h Description}(hjH[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD[ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM hjZubh)}(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:237: ./lib/maple_tree.chM hjZubh)}(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:237: ./lib/maple_tree.chMhjZubh)}(hThe entry or ``NULL``.h](h The entry or }(hj[hhhNhNubj~)}(h``NULL``h]hNULL}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj[ubh.}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chM ubj )}(h h]h }(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj[hhhj[hM ubj` )}(hjh]h*}(hj[hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj[hhhj[hM ubj )}(h mas_eraseh]j )}(h mas_eraseh]h mas_erase}(hj\hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj\ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj[hhhj[hM ubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hj \hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\ubj )}(h h]h }(hj-\hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\ubh)}(hhh]j )}(hma_stateh]hma_state}(hj>\hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj;\ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj@\modnameN classnameNjC jF )}jI ]jL )}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&]uh1j hj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\ubah}(h]h ]h"]h$]h&]hhuh1j hj[hhhj[hM ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj[hhhj[hM ubah}(h]j[ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj[hM hj[hhubjI )}(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:237: ./lib/maple_tree.chM hj\hhubah}(h]h ]h"]h$]h&]uh1jH hj[hhhj[hM ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j\j] j\j^ j_ j` uh1j hhhjhNhNubj )}(hX3**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. Note that erase requires allocations and will use GFP_KERNEL | __GFP_NOFAIL to do so if necessary. If the allocation fails, the internal lock will be dropped to retry. An externally locked tree must be protected by a lock that allows blocking for this API. **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:237: ./lib/maple_tree.chM$hj\ubj9)}(hhh]j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM"hj\ubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hM"hj\ubah}(h]h ]h"]h$]h&]uh1jShj\ubeh}(h]h ]h"]h$]h&]uh1j=hj\hM"hj\ubah}(h]h ]h"]h$]h&]uh1j8hj\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:237: ./lib/maple_tree.chM$hj\ubh)}(hMust hold the write lock. Searches for **mas->index**, sets **mas->index** and **mas->last** to the range and erases that range.h](h'Must hold the write lock. Searches for }(hj5]hhhNhNubj)}(h**mas->index**h]h mas->index}(hj=]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5]ubh, sets }(hj5]hhhNhNubj)}(h**mas->index**h]h mas->index}(hjO]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5]ubh and }(hj5]hhhNhNubj)}(h **mas->last**h]h mas->last}(hja]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5]ubh$ to the range and erases that range.}(hj5]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM#hj\ubh)}(hXNote that erase requires allocations and will use GFP_KERNEL | __GFP_NOFAIL to do so if necessary. If the allocation fails, the internal lock will be dropped to retry. An externally locked tree must be protected by a lock that allows blocking for this API.h]hXNote that erase requires allocations and will use GFP_KERNEL | __GFP_NOFAIL to do so if necessary. If the allocation fails, the internal lock will be dropped to retry. An externally locked tree must be protected by a lock that allows blocking for this API.}(hjz]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM'hj\ubh)}(h **Return**h]j)}(hj]h]hReturn}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM,hj\ubh)}(hTthe entry that was erased or ``NULL``, **mas->index** and **mas->last** are updated.h](hthe entry that was erased or }(hj]hhhNhNubj~)}(h``NULL``h]hNULL}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj]ubh, }(hj]hhhNhNubj)}(h**mas->index**h]h mas->index}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubh and }(hj]hhhNhNubj)}(h **mas->last**h]h mas->last}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubh are updated.}(hj]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM-hj\ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_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:237: ./lib/maple_tree.chMQubj )}(h h]h }(hj^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj^hhhj^hMQubj )}(h mas_nomemh]j )}(h mas_nomemh]h mas_nomem}(hj&^hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj"^ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj^hhhj^hMQubj )}(h!(struct ma_state *mas, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjB^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>^ubj )}(h h]h }(hjO^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>^ubh)}(hhh]j )}(hma_stateh]hma_state}(hj`^hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj]^ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjb^modnameN classnameNjC jF )}jI ]jL )}j? j(^sb c.mas_nomemasbuh1hhj>^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&]uh1j hj>^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&]uh1j hj^ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj^modnameN classnameNjC jF )}jI ]j|^ 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&]uh1j hj^ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj:^ubeh}(h]h ]h"]h$]h&]hhuh1j hj^hhhj^hMQubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj]hhhj^hMQubah}(h]j]ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj^hMQhj]hhubjI )}(hhh]h)}(hJCheck if there was an error allocating and do the allocation if necessary.h]hJCheck if there was an error allocating and do the allocation if necessary.}(hj _hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMQhj _hhubah}(h]h ]h"]h$]h&]uh1jH hj]hhhj^hMQubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j%_j] j%_j^ j_ j` uh1j hhhjhNhNubj )}(h**Parameters** ``struct ma_state *mas`` The maple state ``gfp_t gfp`` The GFP_FLAGS to use for allocations **Return** False on no memory. True otherwise (partial success as well)h](h)}(h**Parameters**h]j)}(hj/_h]h Parameters}(hj1_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-_ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMUhj)_ubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(h``struct ma_state *mas``h]j~)}(hjN_h]hstruct ma_state *mas}(hjP_hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjL_ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMThjH_ubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjg_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc_hMThjd_ubah}(h]h ]h"]h$]h&]uh1jShjH_ubeh}(h]h ]h"]h$]h&]uh1j=hjc_hMThjE_ubj>)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMUhj_ubjT)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hMUhj_ubah}(h]h ]h"]h$]h&]uh1jShj_ubeh}(h]h ]h"]h$]h&]uh1j=hj_hMUhjE_ubeh}(h]h ]h"]h$]h&]uh1j8hj)_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:237: ./lib/maple_tree.chMWhj)_ubh)}(h=False on no memory. True otherwise (partial success as well)h]h=False on no memory. True otherwise (partial success as well)}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMVhj)_ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mas_nomem_nofail (C function)c.mas_nomem_nofailhNtauh1jhjhhhNhNubj )}(hhh](j )}(hUbool mas_nomem_nofail (struct ma_state *mas, unsigned long index, unsigned long last)h]j )}(hTbool mas_nomem_nofail(struct ma_state *mas, unsigned long index, unsigned long last)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:237: ./lib/maple_tree.chMxubj )}(h h]h }(hj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`hhhj`hMxubj )}(hmas_nomem_nofailh]j )}(hmas_nomem_nofailh]hmas_nomem_nofail}(hj'`hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj#`ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj`hhhj`hMxubj )}(h?(struct ma_state *mas, unsigned long index, unsigned long last)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hjC`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?`ubj )}(h h]h }(hjP`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?`ubh)}(hhh]j )}(hma_stateh]hma_state}(hja`hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj^`ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjc`modnameN classnameNjC jF )}jI ]jL )}j? j)`sbc.mas_nomem_nofailasbuh1hhj?`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&]uh1j hj?`ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;`ubj )}(hunsigned long indexh](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 )}(hindexh]hindex}(hj`hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;`ubj )}(hunsigned long lasth](j )}(hunsignedh]hunsigned}(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaubj )}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaubj )}(hlongh]hlong}(hj"ahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaubj )}(h h]h }(hj0ahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaubj )}(hlasth]hlast}(hj>ahhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjaubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;`ubeh}(h]h ]h"]h$]h&]hhuh1j hj`hhhj`hMxubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj_hhhj`hMxubah}(h]j_ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj`hMxhj_hhubjI )}(hhh]h)}(hURetry allocations with __GFP_NOFAIL, if the maple state has stored the -ENOMEM error.h]hURetry allocations with __GFP_NOFAIL, if the maple state has stored the -ENOMEM error.}(hjhahhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMxhjeahhubah}(h]h ]h"]h$]h&]uh1jH hj_hhhj`hMxubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jaj] jaj^ j_ j` uh1j hhhjhNhNubj )}(hX**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long index`` The start of the range for the **mas** reset ``unsigned long last`` The end of the range for the **mas** reset **Return** false if **mas** isn't in an -ENOMEM state. True if the allocation happens, the state is reset. The internal lock will be dropped and external locks must allow blocking.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:237: ./lib/maple_tree.chM|hjaubj9)}(hhh](j>)}(h)``struct ma_state *mas`` The maple state h](jD)}(h``struct ma_state *mas``h]j~)}(hjah]hstruct ma_state *mas}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjaubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMzhjaubjT)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahMzhjaubah}(h]h ]h"]h$]h&]uh1jShjaubeh}(h]h ]h"]h$]h&]uh1j=hjahMzhjaubj>)}(hE``unsigned long index`` The start of the range for the **mas** reset h](jD)}(h``unsigned long index``h]j~)}(hjah]hunsigned long index}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjaubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM{hjaubjT)}(hhh]h)}(h,The start of the range for the **mas** reseth](hThe start of the range for the }(hjahhhNhNubj)}(h**mas**h]hmas}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubh reset}(hjahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjahM{hjaubah}(h]h ]h"]h$]h&]uh1jShjaubeh}(h]h ]h"]h$]h&]uh1j=hjahM{hjaubj>)}(hB``unsigned long last`` The end of the range for the **mas** reset h](jD)}(h``unsigned long last``h]j~)}(hj-bh]hunsigned long last}(hj/bhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj+bubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM|hj'bubjT)}(hhh]h)}(h*The end of the range for the **mas** reseth](hThe end of the range for the }(hjFbhhhNhNubj)}(h**mas**h]hmas}(hjNbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFbubh reset}(hjFbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjBbhM|hjCbubah}(h]h ]h"]h$]h&]uh1jShj'bubeh}(h]h ]h"]h$]h&]uh1j=hjBbhM|hjaubeh}(h]h ]h"]h$]h&]uh1j8hjaubh)}(h **Return**h]j)}(hjzbh]hReturn}(hj|bhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxbubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM~hjaubh)}(hfalse if **mas** isn't in an -ENOMEM state. True if the allocation happens, the state is reset. The internal lock will be dropped and external locks must allow blocking.h](h false if }(hjbhhhNhNubj)}(h**mas**h]hmas}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh isn’t in an -ENOMEM state. True if the allocation happens, the state is reset. The internal lock will be dropped and external locks must allow blocking.}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM~hjaubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mtree_load (C function) c.mtree_loadhNtauh1jhjhhhNhNubj )}(hhh](j )}(h>void * mtree_load (struct maple_tree *mt, unsigned long index)h]j )}(h)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(h``struct maple_tree *mt``h]j~)}(hj0dh]hstruct maple_tree *mt}(hj2dhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj.dubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj*dubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjIdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEdhMhjFdubah}(h]h ]h"]h$]h&]uh1jShj*dubeh}(h]h ]h"]h$]h&]uh1j=hjEdhMhj'dubj>)}(h*``unsigned long index`` The index to load h](jD)}(h``unsigned long index``h]j~)}(hjidh]hunsigned long index}(hjkdhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjgdubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjcdubjT)}(hhh]h)}(hThe index to loadh]hThe index to load}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~dhMhjdubah}(h]h ]h"]h$]h&]uh1jShjcdubeh}(h]h ]h"]h$]h&]uh1j=hj~dhMhj'dubeh}(h]h ]h"]h$]h&]uh1j8hj dubh)}(h **Return**h]j)}(hjdh]hReturn}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj dubh)}(hthe entry or ``NULL``h](h the entry or }(hjdhhhNhNubj~)}(h``NULL``h]hNULL}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj dubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mtree_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}(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdhhhjehMubj )}(hmtree_store_rangeh]j )}(hmtree_store_rangeh]hmtree_store_range}(hjehhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjeubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjdhhhjehMubj )}(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}(hj4ehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0eubj )}(h h]h }(hjAehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0eubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hjRehhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjOeubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjTemodnameN classnameNjC jF )}jI ]jL )}j? jesbc.mtree_store_rangeasbuh1hhj0eubj )}(h h]h }(hjrehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0eubj` )}(hjh]h*}(hjehhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj0eubj )}(hmth]hmt}(hjehhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj0eubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj,eubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(h h]h }(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(hlongh]hlong}(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(h h]h }(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(hindexh]hindex}(hjehhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj,eubj )}(hunsigned long lasth](j )}(hunsignedh]hunsigned}(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(h h]h }(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(hlongh]hlong}(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(h h]h }(hj!fhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(hlasth]hlast}(hj/fhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj,eubj )}(h void *entryh](j )}(hvoidh]hvoid}(hjHfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDfubj )}(h h]h }(hjVfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDfubj` )}(hjh]h*}(hjdfhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjDfubj )}(hentryh]hentry}(hjqfhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjDfubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj,eubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hjfhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjfubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjfmodnameN classnameNjC jF )}jI ]jnec.mtree_store_rangeasbuh1hhjfubj )}(h h]h }(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfubj )}(hgfph]hgfp}(hjfhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjfubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj,eubeh}(h]h ]h"]h$]h&]hhuh1j hjdhhhjehMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjdhhhjehMubah}(h]jdah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjehMhjdhhubjI )}(hhh]h)}(h Store an entry at a given range.h]h Store an entry at a given range.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjfhhubah}(h]h ]h"]h$]h&]uh1jH hjdhhhjehMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jfj] jfj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hjgh]h Parameters}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjfubj9)}(hhh](j>)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(h``struct maple_tree *mt``h]j~)}(hj$gh]hstruct maple_tree *mt}(hj&ghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj"gubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjgubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hj=ghhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9ghMhj:gubah}(h]h ]h"]h$]h&]uh1jShjgubeh}(h]h ]h"]h$]h&]uh1j=hj9ghMhjgubj>)}(h/``unsigned long index`` The start of the range h](jD)}(h``unsigned long index``h]j~)}(hj]gh]hunsigned long index}(hj_ghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj[gubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjWgubjT)}(hhh]h)}(hThe start of the rangeh]hThe start of the range}(hjvghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrghMhjsgubah}(h]h ]h"]h$]h&]uh1jShjWgubeh}(h]h ]h"]h$]h&]uh1j=hjrghMhjgubj>)}(h,``unsigned long last`` The end of the range h](jD)}(h``unsigned long last``h]j~)}(hjgh]hunsigned long last}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjgubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjgubjT)}(hhh]h)}(hThe end of the rangeh]hThe end of the range}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMhjgubah}(h]h ]h"]h$]h&]uh1jShjgubeh}(h]h ]h"]h$]h&]uh1j=hjghMhjgubj>)}(h#``void *entry`` The entry to store h](jD)}(h``void *entry``h]j~)}(hjgh]h void *entry}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjgubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjgubjT)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMhjgubah}(h]h ]h"]h$]h&]uh1jShjgubeh}(h]h ]h"]h$]h&]uh1j=hjghMhjgubj>)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](jD)}(h ``gfp_t gfp``h]j~)}(hjhh]h gfp_t gfp}(hj hhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjhubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjhubjT)}(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&]uh1hhjhhMhjhubah}(h]h ]h"]h$]h&]uh1jShjhubeh}(h]h ]h"]h$]h&]uh1j=hjhhMhjgubeh}(h]h ]h"]h$]h&]uh1j8hjfubh)}(h **Return**h]j)}(hjChh]hReturn}(hjEhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAhubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjfubh)}(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.}(hjYhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjfubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mtree_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}(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhhjhhMubj )}(h mtree_storeh]j )}(h mtree_storeh]h mtree_store}(hjhhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjhubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjhhhhjhhMubj )}(hD(struct maple_tree *mt, unsigned long index, 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&]uh1j hjhubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjhmodnameN classnameNjC jF )}jI ]jL )}j? jhsb c.mtree_storeasbuh1hhjhubj )}(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}(hjihhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjhubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjhubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hj7ihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3iubj )}(h h]h }(hjEihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3iubj )}(hlongh]hlong}(hjSihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3iubj )}(h h]h }(hjaihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3iubj )}(hindexh]hindex}(hjoihhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj3iubeh}(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*}(hjihhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjiubj )}(hentryh]hentry}(hjihhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjiubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjhubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hjihhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjiubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjimodnameN classnameNjC jF )}jI ]jh c.mtree_storeasbuh1hhjiubj )}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiubj )}(hgfph]hgfp}(hjihhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjiubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjhubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhhjhhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjhhhhjhhMubah}(h]j{hah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjhhMhj}hhhubjI )}(hhh]h)}(h Store an entry at a given index.h]h Store an entry at a given index.}(hj#jhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj jhhubah}(h]h ]h"]h$]h&]uh1jH hj}hhhhjhhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j;jj] j;jj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hjEjh]h Parameters}(hjGjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj?jubj9)}(hhh](j>)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(h``struct maple_tree *mt``h]j~)}(hjdjh]hstruct maple_tree *mt}(hjfjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjbjubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj^jubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hj}jhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyjhMhjzjubah}(h]h ]h"]h$]h&]uh1jShj^jubeh}(h]h ]h"]h$]h&]uh1j=hjyjhMhj[jubj>)}(h5``unsigned long index`` The index to store the value h](jD)}(h``unsigned long index``h]j~)}(hjjh]hunsigned long index}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjjubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjjubjT)}(hhh]h)}(hThe index to store the valueh]hThe index to store the value}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhMhjjubah}(h]h ]h"]h$]h&]uh1jShjjubeh}(h]h ]h"]h$]h&]uh1j=hjjhMhj[jubj>)}(h#``void *entry`` The entry to store h](jD)}(h``void *entry``h]j~)}(hjjh]h void *entry}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjjubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjjubjT)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjjhMhjjubah}(h]h ]h"]h$]h&]uh1jShjjubeh}(h]h ]h"]h$]h&]uh1j=hjjhMhj[jubj>)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](jD)}(h ``gfp_t gfp``h]j~)}(hjkh]h gfp_t gfp}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj kubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj kubjT)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hj(khhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$khMhj%kubah}(h]h ]h"]h$]h&]uh1jShj kubeh}(h]h ]h"]h$]h&]uh1j=hj$khMhj[jubeh}(h]h ]h"]h$]h&]uh1j8hj?jubh)}(h **Return**h]j)}(hjJkh]hReturn}(hjLkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHkubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj?jubh)}(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`khhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj?jubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mtree_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}(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkhhhjkhMubj )}(hmtree_insert_rangeh]j )}(hmtree_insert_rangeh]hmtree_insert_range}(hjkhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjkubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjkhhhjkhMubj )}(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}(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj )}(h h]h }(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hjkhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjkubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjkmodnameN classnameNjC jF )}jI ]jL )}j? jksbc.mtree_insert_rangeasbuh1hhjkubj )}(h h]h }(hj lhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj` )}(hjh]h*}(hjlhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjkubj )}(hmth]hmt}(hj%lhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjkubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjkubj )}(hunsigned long firsth](j )}(hunsignedh]hunsigned}(hj>lhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:lubj )}(h h]h }(hjLlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:lubj )}(hlongh]hlong}(hjZlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:lubj )}(h h]h }(hjhlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:lubj )}(hfirsth]hfirst}(hjvlhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj:lubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjkubj )}(hunsigned long lasth](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 }(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(hlasth]hlast}(hjlhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjlubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjkubj )}(h void *entryh](j )}(hvoidh]hvoid}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(h h]h }(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj` )}(hjh]h*}(hjlhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjlubj )}(hentryh]hentry}(hj mhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjlubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjkubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hj%mhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj"mubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj'mmodnameN classnameNjC jF )}jI ]jlc.mtree_insert_rangeasbuh1hhjmubj )}(h h]h }(hjCmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmubj )}(hgfph]hgfp}(hjQmhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjmubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjkubeh}(h]h ]h"]h$]h&]hhuh1j hjkhhhjkhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjkhhhjkhMubah}(h]jkah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjkhMhjkhhubjI )}(hhh]h)}(hIInsert an entry from [first, last] at a given range if there is no value.h]hIInsert an entry from [first, last] at a given range if there is no value.}(hj{mhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjxmhhubah}(h]h ]h"]h$]h&]uh1jH hjkhhhjkhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jmj] jmj^ j_ j` uh1j hhhjhNhNubj )}(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 (inclusive) ``void *entry`` The entry to store ``gfp_t gfp`` The GFP_FLAGS to use for allocations. **Description** Note that **last** is inclusive. That is, **last** = **first** + length - 1; **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:237: ./lib/maple_tree.chMhjmubj9)}(hhh](j>)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(h``struct maple_tree *mt``h]j~)}(hjmh]hstruct maple_tree *mt}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjmubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjmubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhMhjmubah}(h]h ]h"]h$]h&]uh1jShjmubeh}(h]h ]h"]h$]h&]uh1j=hjmhMhjmubj>)}(h/``unsigned long first`` The start of the range h](jD)}(h``unsigned long first``h]j~)}(hjmh]hunsigned long first}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjmubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjmubjT)}(hhh]h)}(hThe start of the rangeh]hThe start of the range}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj nhMhj nubah}(h]h ]h"]h$]h&]uh1jShjmubeh}(h]h ]h"]h$]h&]uh1j=hj nhMhjmubj>)}(h8``unsigned long last`` The end of the range (inclusive) h](jD)}(h``unsigned long last``h]j~)}(hj.nh]hunsigned long last}(hj0nhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj,nubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj(nubjT)}(hhh]h)}(h The end of the range (inclusive)h]h The end of the range (inclusive)}(hjGnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjCnhMhjDnubah}(h]h ]h"]h$]h&]uh1jShj(nubeh}(h]h ]h"]h$]h&]uh1j=hjCnhMhjmubj>)}(h#``void *entry`` The entry to store h](jD)}(h``void *entry``h]j~)}(hjgnh]h void *entry}(hjinhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjenubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjanubjT)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|nhMhj}nubah}(h]h ]h"]h$]h&]uh1jShjanubeh}(h]h ]h"]h$]h&]uh1j=hj|nhMhjmubj>)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](jD)}(h ``gfp_t gfp``h]j~)}(hjnh]h gfp_t gfp}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjnubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjnubjT)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMhjnubah}(h]h ]h"]h$]h&]uh1jShjnubeh}(h]h ]h"]h$]h&]uh1j=hjnhMhjmubeh}(h]h ]h"]h$]h&]uh1j8hjmubh)}(h**Description**h]j)}(hjnh]h Description}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjmubh)}(hLNote that **last** is inclusive. That is, **last** = **first** + length - 1;h](h Note that }(hjnhhhNhNubj)}(h**last**h]hlast}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh is inclusive. That is, }(hjnhhhNhNubj)}(h**last**h]hlast}(hj ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh = }(hjnhhhNhNubj)}(h **first**h]hfirst}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh + length - 1;}(hjnhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjmubh)}(h **Return**h]j)}(hj8oh]hReturn}(hj:ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6oubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./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.}(hjNohhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjmubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mtree_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}ohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyohhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM%ubj )}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyohhhjohM%ubj )}(h mtree_inserth]j )}(h mtree_inserth]h mtree_insert}(hjohhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjoubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjyohhhjohM%ubj )}(hD(struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj )}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hjohhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjoubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjomodnameN classnameNjC jF )}jI ]jL )}j? josbc.mtree_insertasbuh1hhjoubj )}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj` )}(hjh]h*}(hjphhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjoubj )}(hmth]hmt}(hjphhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjoubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjoubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hj,phhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(pubj )}(h h]h }(hj:phhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(pubj )}(hlongh]hlong}(hjHphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(pubj )}(h h]h }(hjVphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(pubj )}(hindexh]hindex}(hjdphhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj(pubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjoubj )}(h void *entryh](j )}(hvoidh]hvoid}(hj}phhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjypubj )}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjypubj` )}(hjh]h*}(hjphhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjypubj )}(hentryh]hentry}(hjphhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjypubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjoubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hjphhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjpubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjpmodnameN classnameNjC jF )}jI ]joc.mtree_insertasbuh1hhjpubj )}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubj )}(hgfph]hgfp}(hjphhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjpubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjoubeh}(h]h ]h"]h$]h&]hhuh1j hjyohhhjohM%ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjuohhhjohM%ubah}(h]jpoah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjohM%hjrohhubjI )}(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.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM%hjqhhubah}(h]h ]h"]h$]h&]uh1jH hjrohhhjohM%ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j0qj] j0qj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hj:qh]h Parameters}(hj)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(h``struct maple_tree *mt``h]j~)}(hjYqh]hstruct maple_tree *mt}(hj[qhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjWqubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM&hjSqubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjrqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnqhM&hjoqubah}(h]h ]h"]h$]h&]uh1jShjSqubeh}(h]h ]h"]h$]h&]uh1j=hjnqhM&hjPqubj>)}(h5``unsigned long index`` The index to store the value h](jD)}(h``unsigned long index``h]j~)}(hjqh]hunsigned long index}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjqubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM'hjqubjT)}(hhh]h)}(hThe index to store the valueh]hThe index to store the value}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhM'hjqubah}(h]h ]h"]h$]h&]uh1jShjqubeh}(h]h ]h"]h$]h&]uh1j=hjqhM'hjPqubj>)}(h#``void *entry`` The entry to store h](jD)}(h``void *entry``h]j~)}(hjqh]h void *entry}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjqubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM(hjqubjT)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhM(hjqubah}(h]h ]h"]h$]h&]uh1jShjqubeh}(h]h ]h"]h$]h&]uh1j=hjqhM(hjPqubj>)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](jD)}(h ``gfp_t gfp``h]j~)}(hjrh]h gfp_t gfp}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjrubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM)hjqubjT)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhM)hjrubah}(h]h ]h"]h$]h&]uh1jShjqubeh}(h]h ]h"]h$]h&]uh1j=hjrhM)hjPqubeh}(h]h ]h"]h$]h&]uh1j8hj4qubh)}(h **Return**h]j)}(hj?rh]hReturn}(hjArhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=rubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM+hj4qubh)}(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.}(hjUrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM+hj4qubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mtree_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}(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM]ubj )}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrhhhjrhM]ubj )}(hmtree_alloc_cyclich]j )}(hmtree_alloc_cyclich]hmtree_alloc_cyclic}(hjrhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjrubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjrhhhjrhM]ubj )}(h(struct maple_tree *mt, unsigned long *startp, void *entry, unsigned long range_lo, unsigned long range_hi, unsigned long *next, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrubj )}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hjrhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjrubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjrmodnameN classnameNjC jF )}jI ]jL )}j? jrsbc.mtree_alloc_cyclicasbuh1hhjrubj )}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrubj` )}(hjh]h*}(hj shhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjrubj )}(hmth]hmt}(hjshhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjrubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjrubj )}(hunsigned long *startph](j )}(hunsignedh]hunsigned}(hj3shhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/subj )}(h h]h }(hjAshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/subj )}(hlongh]hlong}(hjOshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/subj )}(h h]h }(hj]shhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/subj` )}(hjh]h*}(hjkshhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj/subj )}(hstartph]hstartp}(hjxshhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj/subeh}(h]h ]h"]h$]h&]noemphhhuh1j hjrubj )}(h void *entryh](j )}(hvoidh]hvoid}(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsubj )}(h h]h }(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsubj` )}(hjh]h*}(hjshhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjsubj )}(hentryh]hentry}(hjshhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjsubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjrubj )}(hunsigned long range_loh](j )}(hunsignedh]hunsigned}(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsubj )}(h h]h }(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsubj )}(hlongh]hlong}(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsubj )}(h h]h }(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsubj )}(hrange_loh]hrange_lo}(hj thhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjsubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjrubj )}(hunsigned long range_hih](j )}(hunsignedh]hunsigned}(hj$thhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj tubj )}(h h]h }(hj2thhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj tubj )}(hlongh]hlong}(hj@thhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj tubj )}(h h]h }(hjNthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj tubj )}(hrange_hih]hrange_hi}(hj\thhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj tubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjrubj )}(hunsigned long *nexth](j )}(hunsignedh]hunsigned}(hjuthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqtubj )}(h h]h }(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqtubj )}(hlongh]hlong}(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqtubj )}(h h]h }(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqtubj` )}(hjh]h*}(hjthhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjqtubj )}(hnexth]hnext}(hjthhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjqtubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjrubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hjthhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjtubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjtmodnameN classnameNjC jF )}jI ]jrc.mtree_alloc_cyclicasbuh1hhjtubj )}(h h]h }(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubj )}(hgfph]hgfp}(hjuhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjtubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjrubeh}(h]h ]h"]h$]h&]hhuh1j hjrhhhjrhM]ubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj|rhhhjrhM]ubah}(h]jwrah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjrhM]hjyrhhubjI )}(hhh]h)}(h/Find somewhere to store this entry in the tree.h]h/Find somewhere to store this entry in the tree.}(hj,uhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM]hj)uhhubah}(h]h ]h"]h$]h&]uh1jH hjyrhhhjrhM]ubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jDuj] jDuj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hjNuh]h Parameters}(hjPuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLuubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMahjHuubj9)}(hhh](j>)}(h*``struct maple_tree *mt`` The maple tree. h](jD)}(h``struct maple_tree *mt``h]j~)}(hjmuh]hstruct maple_tree *mt}(hjouhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjkuubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM^hjguubjT)}(hhh]h)}(hThe maple tree.h]hThe maple tree.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhM^hjuubah}(h]h ]h"]h$]h&]uh1jShjguubeh}(h]h ]h"]h$]h&]uh1j=hjuhM^hjduubj>)}(h)``unsigned long *startp`` Pointer to ID. h](jD)}(h``unsigned long *startp``h]j~)}(hjuh]hunsigned long *startp}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjuubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM_hjuubjT)}(hhh]h)}(hPointer to ID.h]hPointer to ID.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhM_hjuubah}(h]h ]h"]h$]h&]uh1jShjuubeh}(h]h ]h"]h$]h&]uh1j=hjuhM_hjduubj>)}(h$``void *entry`` The entry to store. h](jD)}(h``void *entry``h]j~)}(hjuh]h void *entry}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjuubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMbhjuubjT)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMbhjuubah}(h]h ]h"]h$]h&]uh1jShjuubeh}(h]h ]h"]h$]h&]uh1j=hjuhMbhjduubj>)}(h;``unsigned long range_lo`` Lower bound of range to search. h](jD)}(h``unsigned long range_lo``h]j~)}(hjvh]hunsigned long range_lo}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjvubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM`hjvubjT)}(hhh]h)}(hLower bound of range to search.h]hLower bound of range to search.}(hj1vhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-vhM`hj.vubah}(h]h ]h"]h$]h&]uh1jShjvubeh}(h]h ]h"]h$]h&]uh1j=hj-vhM`hjduubj>)}(h;``unsigned long range_hi`` Upper bound of range to search. h](jD)}(h``unsigned long range_hi``h]j~)}(hjQvh]hunsigned long range_hi}(hjSvhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjOvubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMahjKvubjT)}(hhh]h)}(hUpper bound of range to search.h]hUpper bound of range to search.}(hjjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfvhMahjgvubah}(h]h ]h"]h$]h&]uh1jShjKvubeh}(h]h ]h"]h$]h&]uh1j=hjfvhMahjduubj>)}(h8``unsigned long *next`` Pointer to next ID to allocate. h](jD)}(h``unsigned long *next``h]j~)}(hjvh]hunsigned long *next}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjvubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMchjvubjT)}(hhh]h)}(hPointer to next ID to allocate.h]hPointer to next ID to allocate.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhMchjvubah}(h]h ]h"]h$]h&]uh1jShjvubeh}(h]h ]h"]h$]h&]uh1j=hjvhMchjduubj>)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](jD)}(h ``gfp_t gfp``h]j~)}(hjvh]h gfp_t gfp}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjvubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMdhjvubjT)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjvhMdhjvubah}(h]h ]h"]h$]h&]uh1jShjvubeh}(h]h ]h"]h$]h&]uh1j=hjvhMdhjduubeh}(h]h ]h"]h$]h&]uh1j8hjHuubh)}(h**Description**h]j)}(hjvh]h Description}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMfhjHuubh)}(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 }(hjwhhhNhNubj)}(h**mt**h]hmt}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubh after }(hjwhhhNhNubj)}(h**next**h]hnext}(hj.whhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubh , stores the new index into the }(hjwhhhNhNubj)}(h**id**h]hid}(hj@whhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubh7 pointer, stores the entry at that index, then updates }(hjwhhhNhNubj)}(h**next**h]hnext}(hjRwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubh.}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMehjHuubh)}(h>**mt** must be initialized with the MT_FLAGS_ALLOC_RANGE flag.h](j)}(h**mt**h]hmt}(hjowhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkwubh8 must be initialized with the MT_FLAGS_ALLOC_RANGE flag.}(hjkwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhhjHuubh)}(h **Context**h]j)}(hjwh]hContext}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMjhjHuubh)}(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 }(hjwhhhNhNubj)}(h**gfp**h]hgfp}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubh flags permit.}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMkhjHuubh)}(h **Return**h]j)}(hjwh]hReturn}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMnhjHuubh)}(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 }(hjwhhhNhNubj)}(h**mt**h]hmt}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubh8 cannot be used, or -EBUSY if there are no free entries.}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMnhjHuubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mtree_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}(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hj)xhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxhhhj(xhMubj` )}(hjh]h*}(hj7xhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjxhhhj(xhMubj )}(h mtree_eraseh]j )}(h mtree_eraseh]h mtree_erase}(hjHxhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjDxubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjxhhhj(xhMubj )}(h,(struct maple_tree *mt, unsigned long index)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjdxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`xubj )}(h h]h }(hjqxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`xubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hjxhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjxubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjxmodnameN classnameNjC jF )}jI ]jL )}j? jJxsb c.mtree_eraseasbuh1hhj`xubj )}(h h]h }(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`xubj` )}(hjh]h*}(hjxhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj`xubj )}(hmth]hmt}(hjxhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj`xubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\xubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxubj )}(h h]h }(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxubj )}(hlongh]hlong}(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxubj )}(h h]h }(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxubj )}(hindexh]hindex}(hjyhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjxubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj\xubeh}(h]h ]h"]h$]h&]hhuh1j hjxhhhj(xhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjxhhhj(xhMubah}(h]j xah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj(xhMhjxhhubjI )}(hhh]h)}(h)Find an index and erase the entire range.h]h)Find an index and erase the entire range.}(hj8yhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj5yhhubah}(h]h ]h"]h$]h&]uh1jH hjxhhhj(xhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jPyj] jPyj^ j_ j` uh1j hhhjhNhNubj )}(hX**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. Note that erase requires allocations and will use GFP_KERNEL | __GFP_NOFAIL to do so if necessary. If the allocation fails, the internal lock will be dropped to retry. **Return** The entry stored at the **index** or ``NULL``h](h)}(h**Parameters**h]j)}(hjZyh]h Parameters}(hj\yhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXyubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjTyubj9)}(hhh](j>)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(h``struct maple_tree *mt``h]j~)}(hjyyh]hstruct maple_tree *mt}(hj{yhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjwyubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjsyubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhMhjyubah}(h]h ]h"]h$]h&]uh1jShjsyubeh}(h]h ]h"]h$]h&]uh1j=hjyhMhjpyubj>)}(h+``unsigned long index`` The index to erase h](jD)}(h``unsigned long index``h]j~)}(hjyh]hunsigned long index}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjyubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjyubjT)}(hhh]h)}(hThe index to eraseh]hThe index to erase}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhMhjyubah}(h]h ]h"]h$]h&]uh1jShjyubeh}(h]h ]h"]h$]h&]uh1j=hjyhMhjpyubeh}(h]h ]h"]h$]h&]uh1j8hjTyubh)}(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:237: ./lib/maple_tree.chMhjTyubh)}(hErasing is the same as a walk to an entry then a store of a NULL to that ENTIRE range. In fact, it is implemented as such using the advanced API.h]hErasing is the same as a walk to an entry then a store of a NULL to that ENTIRE range. In fact, it is implemented as such using the advanced API.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjTyubh)}(hNote that erase requires allocations and will use GFP_KERNEL | __GFP_NOFAIL to do so if necessary. If the allocation fails, the internal lock will be dropped to retry.h]hNote that erase requires allocations and will use GFP_KERNEL | __GFP_NOFAIL to do so if necessary. If the allocation fails, the internal lock will be dropped to retry.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjTyubh)}(h **Return**h]j)}(hj#zh]hReturn}(hj%zhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!zubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjTyubh)}(h-The entry stored at the **index** or ``NULL``h](hThe entry stored at the }(hj9zhhhNhNubj)}(h **index**h]hindex}(hjAzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9zubh or }(hj9zhhhNhNubj~)}(h``NULL``h]hNULL}(hjSzhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9zubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjTyubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j __mt_dup (C function) c.__mt_duphNtauh1jhjhhhNhNubj )}(hhh](j )}(hGint __mt_dup (struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)h]j )}(hFint __mt_dup(struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)h](j )}(hinth]hint}(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzhhhjzhMubj )}(h__mt_duph]j )}(h__mt_duph]h__mt_dup}(hjzhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjzubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjzhhhjzhMubj )}(h:(struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)h](j )}(hstruct maple_tree *mth](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&]uh1j hjzubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjzmodnameN classnameNjC jF )}jI ]jL )}j? jzsb c.__mt_dupasbuh1hhjzubj )}(h h]h }(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzubj` )}(hjh]h*}(hj{hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjzubj )}(hmth]hmt}(hj{hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjzubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjzubj )}(hstruct maple_tree *newh](j )}(hj h]hstruct}(hj7{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3{ubj )}(h h]h }(hjD{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3{ubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hjU{hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjR{ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjW{modnameN classnameNjC jF )}jI ]jz c.__mt_dupasbuh1hhj3{ubj )}(h h]h }(hjs{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3{ubj` )}(hjh]h*}(hj{hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj3{ubj )}(hnewh]hnew}(hj{hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj3{ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjzubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hj{hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj{ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj{modnameN classnameNjC jF )}jI ]jz c.__mt_dupasbuh1hhj{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&]uh1j hj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjzubeh}(h]h ]h"]h$]h&]hhuh1j hjzhhhjzhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjzhhhjzhMubah}(h]j{zah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjzhMhj}zhhubjI )}(hhh]h)}(hDuplicate an entire maple treeh]hDuplicate an entire maple tree}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj{hhubah}(h]h ]h"]h$]h&]uh1jH hj}zhhhjzhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j|j] j|j^ j_ j` uh1j hhhjhNhNubj )}(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)}(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:237: ./lib/maple_tree.chMhj|ubj9)}(hhh](j>)}(h0``struct maple_tree *mt`` The source maple tree h](jD)}(h``struct maple_tree *mt``h]j~)}(hjA|h]hstruct maple_tree *mt}(hjC|hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj?|ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj;|ubjT)}(hhh]h)}(hThe source maple treeh]hThe source maple tree}(hjZ|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV|hMhjW|ubah}(h]h ]h"]h$]h&]uh1jShj;|ubeh}(h]h ]h"]h$]h&]uh1j=hjV|hMhj8|ubj>)}(h.``struct maple_tree *new`` The new maple tree h](jD)}(h``struct maple_tree *new``h]j~)}(hjz|h]hstruct maple_tree *new}(hj||hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjx|ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjt|ubjT)}(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&]uh1jShjt|ubeh}(h]h ]h"]h$]h&]uh1j=hj|hMhj8|ubj>)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj|ubjT)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|hMhj|ubah}(h]h ]h"]h$]h&]uh1jShj|ubeh}(h]h ]h"]h$]h&]uh1j=hj|hMhj8|ubeh}(h]h ]h"]h$]h&]uh1j8hj|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:237: ./lib/maple_tree.chMhj|ubh)}(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.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./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:237: ./lib/maple_tree.chMhj|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:237: ./lib/maple_tree.chMhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mtree_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}(hjZ}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjV}hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hji}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjV}hhhjh}hMubj )}(h mtree_duph]j )}(h mtree_duph]h mtree_dup}(hj{}hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjw}ubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjV}hhhjh}hMubj )}(h:(struct maple_tree *mt, struct maple_tree *new, gfp_t gfp)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&]uh1j hj}ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj}modnameN classnameNjC jF )}jI ]jL )}j? j}}sb c.mtree_dupasbuh1hhj}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&]uh1j hj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj}ubj )}(hstruct maple_tree *newh](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&]uh1j hj$~ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj)~modnameN classnameNjC jF )}jI ]j} c.mtree_dupasbuh1hhj~ubj )}(h h]h }(hjE~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj~ubj` )}(hjh]h*}(hjS~hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj~ubj )}(hnewh]hnew}(hj`~hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj~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&]uh1j hjy~ubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj~~modnameN classnameNjC jF )}jI ]j} c.mtree_dupasbuh1hhju~ubj )}(h h]h }(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hju~ubj )}(hgfph]hgfp}(hj~hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hju~ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj}ubeh}(h]h ]h"]h$]h&]hhuh1j hjV}hhhjh}hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjR}hhhjh}hMubah}(h]jM}ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjh}hMhjO}hhubjI )}(hhh]h)}(hDuplicate an entire maple treeh]hDuplicate an entire maple tree}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj~hhubah}(h]h ]h"]h$]h&]uh1jH hjO}hhhjh}hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j~j] j~j^ j_ j` uh1j hhhjhNhNubj )}(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:237: ./lib/maple_tree.chMhj~ubj9)}(hhh](j>)}(h0``struct maple_tree *mt`` The source maple tree h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj ubjT)}(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&]uh1jShj ubeh}(h]h ]h"]h$]h&]uh1j=hj(hMhj ubj>)}(h.``struct maple_tree *new`` The new maple tree h](jD)}(h``struct maple_tree *new``h]j~)}(hjLh]hstruct maple_tree *new}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjJubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjFubjT)}(hhh]h)}(hThe new maple treeh]hThe new maple tree}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahMhjbubah}(h]h ]h"]h$]h&]uh1jShjFubeh}(h]h ]h"]h$]h&]uh1j=hjahMhj ubj>)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](jD)}(h ``gfp_t gfp``h]j~)}(hjh]h gfp_t gfp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjubjT)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhMhj ubeh}(h]h ]h"]h$]h&]uh1j8hj~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:237: ./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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj~ubh)}(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:237: ./lib/maple_tree.chMhj~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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j __mt_destroy (C function)c.__mt_destroyhNtauh1jhjhhhNhNubj )}(hhh](j )}(h)void __mt_destroy (struct maple_tree *mt)h]j )}(h(void __mt_destroy(struct maple_tree *mt)h](j )}(hvoidh]hvoid}(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(hhhj:hMubj )}(h __mt_destroyh]j )}(h __mt_destroyh]h __mt_destroy}(hjMhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjIubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hj(hhhj:hMubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(h h]h }(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjmodnameN classnameNjC jF )}jI ]jL )}j? jOsbc.__mt_destroyasbuh1hhjeubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj` )}(hjh]h*}(hjhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjeubj )}(hmth]hmt}(hj€hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjaubah}(h]h ]h"]h$]h&]hhuh1j hj(hhhj:hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj$hhhj:hMubah}(h]jah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj:hMhj!hhubjI )}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjhhubah}(h]h ]h"]h$]h&]uh1jH hj!hhhj:hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jj] jj^ j_ j` uh1j hhhjhNhNubj )}(h^**Parameters** ``struct maple_tree *mt`` The maple tree **Note** Does not handle locking.h](h)}(h**Parameters**h]j)}(hjh]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:237: ./lib/maple_tree.chMhjubj9)}(hhh]j>)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhj'ubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMhjCubah}(h]h ]h"]h$]h&]uh1jShj'ubeh}(h]h ]h"]h$]h&]uh1j=hjBhMhj$ubah}(h]h ]h"]h$]h&]uh1j8hjubh)}(h**Note**h]j)}(hjhh]hNote}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjubh)}(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:237: ./lib/maple_tree.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mtree_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}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj )}(h mtree_destroyh]j )}(h mtree_destroyh]h mtree_destroy}(hj΁hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjʁubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjhhhjhMubj )}(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&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetj modnameN classnameNjC jF )}jI ]jL )}j? jЁsbc.mtree_destroyasbuh1hhjubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj` )}(hjh]h*}(hj6hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjubj )}(hmth]hmt}(hjChhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hjhhhjhMubah}(h]jah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjhMhjhhubjI )}(hhh]h)}(hDestroy a maple treeh]hDestroy a maple tree}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjjhhubah}(h]h ]h"]h$]h&]uh1jH hjhhhjhMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jj] jj^ j_ j` uh1j hhhjhNhNubj )}(h**Parameters** ``struct maple_tree *mt`` The maple tree **Description** Frees all resources used by the tree. Handles locking.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjubj9)}(hhh]j>)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjǂhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjÂhMhjĂubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjÂhMhjubah}(h]h ]h"]h$]h&]uh1j8hjubh)}(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:237: ./lib/maple_tree.chMhjubh)}(h7Frees all resources used by the tree. Handles locking.h]h7Frees all resources used by the tree. Handles locking.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mt_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}(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMubj )}(h h]h }(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*hhhj<hMubj` )}(hjh]h*}(hjKhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hj*hhhj<hMubj )}(hmt_findh]j )}(hmt_findh]hmt_find}(hj\hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjXubah}(h]h ](j. j/ eh"]h$]h&]hhuh1Tj hj*hhhj<hMubj )}(h@(struct maple_tree *mt, unsigned long *index, unsigned long max)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjmodnameN classnameNjC jF )}jI ]jL )}j? j^sb c.mt_findasbuh1hhjtubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubj` )}(hjh]h*}(hjăhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjtubj )}(hmth]hmt}(hjуhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjtubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjpubj )}(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*}(hj"hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjubj )}(hindexh]hindex}(hj/hhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjpubj )}(hunsigned long maxh](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 )}(hmaxh]hmax}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjDubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjpubeh}(h]h ]h"]h$]h&]hhuh1j hj*hhhj<hMubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj&hhhj<hMubah}(h]j!ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hj<hMhj#hhubjI )}(hhh]h)}(h1Search from the start up until an entry is found.h]h1Search from the start up until an entry is found.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjhhubah}(h]h ]h"]h$]h&]uh1jH hj#hhhj<hMubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ j„j] j„j^ j_ j` uh1j hhhjhNhNubj )}(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)}(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:237: ./lib/maple_tree.chMhjƄubj9)}(hhh](j>)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhMhjubj>)}(hQ``unsigned long *index`` Pointer which contains the start location of the search h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjubjT)}(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&]uh1hhj9hMhj:ubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hj9hMhjubj>)}(h<``unsigned long max`` The maximum value of the search range h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjWubjT)}(hhh]h)}(h%The maximum value of the search rangeh]h%The maximum value of the search range}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjsubah}(h]h ]h"]h$]h&]uh1jShjWubeh}(h]h ]h"]h$]h&]uh1j=hjrhMhjubeh}(h]h ]h"]h$]h&]uh1j8hjƄ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:237: ./lib/maple_tree.chMhjƄubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjƄubh)}(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 }(hjhhhNhNubj)}(h **index**h]hindex}(hjŅhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is updated to point to the next possible entry independent whether the found entry is occupying a single index or a range if indices.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chM hjƄubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjޅubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMhjƄubh)}(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:237: ./lib/maple_tree.chMhjƄubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j mt_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}(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMCubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAhhhjShMCubj` )}(hjh]h*}(hjbhhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjAhhhjShMCubj )}(h mt_find_afterh]j )}(h mt_find_afterh]h mt_find_after}(hjshhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjoubah}(h]h ](j. j/ eh"]h$]h&]hhuh1j hjAhhhjShMCubj )}(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 }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjV reftypej? reftargetjmodnameN classnameNjC jF )}jI ]jL )}j? jusbc.mt_find_afterasbuh1hhjubj )}(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 )}(hmth]hmt}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(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*}(hj9hhhNhNubah}(h]h ]jk ah"]h$]h&]uh1j_ hjubj )}(hindexh]hindex}(hjFhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hj_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj[ubj )}(h h]h }(hjmhhhNhNubah}(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 }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj[ubj )}(hmaxh]hmax}(hjhhhNhNubah}(h]h ]j' ah"]h$]h&]uh1j hj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjAhhhjShMCubeh}(h]h ]h"]h$]h&]hhj: uh1j j; j< hj=hhhjShMCubah}(h]j8ah ](j@ jA eh"]h$]h&]jE jF )jG huh1j hjShMChj:hhubjI )}(hhh]h)}(h1Search from the start up until an entry is found.h]h1Search from the start up until an entry is found.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMChjhhubah}(h]h ]h"]h$]h&]uh1jH hj:hhhjShMCubeh}(h]h ](jV functioneh"]h$]h&]j[ jV j\ jهj] jهj^ j_ j` uh1j hhhjhNhNubj )}(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)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMGhj݇ubj9)}(hhh](j>)}(h)``struct maple_tree *mt`` The maple tree h](jD)}(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&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMDhjubjT)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMDhjubah}(h]h ]h"]h$]h&]uh1jShjubeh}(h]h ]h"]h$]h&]uh1j=hjhMDhjubj>)}(hQ``unsigned long *index`` Pointer which contains the start location of the search h](jD)}(h``unsigned long *index``h]j~)}(hj;h]hunsigned long *index}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9ubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMEhj5ubjT)}(hhh]h)}(h7Pointer which contains the start location of the searchh]h7Pointer which contains the start location of the search}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhMEhjQubah}(h]h ]h"]h$]h&]uh1jShj5ubeh}(h]h ]h"]h$]h&]uh1j=hjPhMEhjubj>)}(h1``unsigned long max`` The maximum value to check h](jD)}(h``unsigned long max``h]j~)}(hjth]hunsigned long max}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjrubah}(h]h ]h"]h$]h&]uh1jChU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMFhjnubjT)}(hhh]h)}(hThe maximum value to checkh]hThe maximum value to check}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMFhjubah}(h]h ]h"]h$]h&]uh1jShjnubeh}(h]h ]h"]h$]h&]uh1j=hjhMFhjubeh}(h]h ]h"]h$]h&]uh1j8hj݇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:237: ./lib/maple_tree.chMHhj݇ubh)}(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}(hj͈hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjňubh for 0 before searching. If }(hjňhhhNhNubj)}(h **index**h]hindex}(hj߈hhhNhNubah}(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:237: ./lib/maple_tree.chMGhj݇ubh)}(h **Return**h]j)}(hj h]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:237: ./lib/maple_tree.chMKhj݇ubh)}(h/The entry at or after the **index** or ``NULL``h](hThe entry at or after the }(hj"hhhNhNubj)}(h **index**h]hindex}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubh 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:237: ./lib/maple_tree.chMLhj݇ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubeh}(h]functions-and-structuresah ]h"]functions and structuresah$]h&]uh1hhhhhhhhKubeh}(h] maple-treeah ]h"] maple treeah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_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]jZaj]jaj]jaunameids}(jejbj.j+jj(j j jjjjjjjjjjdjjjjjjj]jZjju nametypes}(jej.jj jjjjjjjjj]juh}(jbhj+jj(j1j j1jjjjjjjjjdjejjejjjjjZjjjj j jA jF j j j j j<jAjjjjjjjjjjjjjjjjjG jL j "j"j$j $j%j%j'j'j,j,j.j.j0j0jP2jU2j4j4jW7j\7j-9j29j;j;j >j>jz@j@jgCjlCjEjEj-Hj2HjKjKjLjLj?OjDOjQjQj)Tj.TjVjVjBYjGYj[j[j]j]j_j_jbjbjdjdj{hjhjkjkjpojuojwrj|rj xjxj{zjzjM}jR}jj$jjj!j&j8j=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&]levelKtypeINFOsourcehnjlineK7uh1jubj)}(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.}hjHsbah}(h]h ]h"]h$]h&]uh1hhjEubah}(h]h ]h"]h$]h&]levelKtypejsourcehnjlineKuh1jubj)}(hhh]h)}(hhh]h6Hyperlink target "maple-tree-flags" is not referenced.}hjbsbah}(h]h ]h"]h$]h&]uh1hhj_ubah}(h]h ]h"]h$]h&]levelKtypejlineKsourcehuh1jube transformerN include_log] decorationNhhub.