/sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}(hhparenthuba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget'/translations/zh_CN/core-api/maple_treemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}(hhhh2ubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/zh_TW/core-api/maple_treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}(hhhhFubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/it_IT/core-api/maple_treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}(hhhhZubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ja_JP/core-api/maple_treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}(hhhhnubah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget'/translations/ko_KR/core-api/maple_treemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}(hhhhubah}(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+}(hhhhubah}(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}(hhhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hAuthorh]hAuthor}(hhhhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(hLiam R. Howlett h]h paragraph)}(hLiam R. Howletth]hLiam R. Howlett}(hhhhhhhNhNubah}(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}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhK ubh)}(hXCThe Maple Tree is a B-Tree data type which is optimized for storing non-overlapping ranges, including ranges of size 1. The tree was designed to be simple to use and does not require a user written search method. It supports iterating over a range of entries and going to the previous or next entry in a cache-efficient manner. The tree can also be put into an RCU-safe mode of operation which allows reading and writing concurrently. Writers must synchronize on a lock, which can be the default spinlock, or the user can set the lock to an external lock of a different type.h]hXCThe Maple Tree is a B-Tree data type which is optimized for storing non-overlapping ranges, including ranges of size 1. The tree was designed to be simple to use and does not require a user written search method. It supports iterating over a range of entries and going to the previous or next entry in a cache-efficient manner. The tree can also be put into an RCU-safe mode of operation which allows reading and writing concurrently. Writers must synchronize on a lock, which can be the default spinlock, or the user can set the lock to an external lock of a different type.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj hhubh)}(hXKThe Maple Tree maintains a small memory footprint and was designed to use modern processor cache efficiently. The majority of the users will be able to use the normal API. An :ref:`maple-tree-advanced-api` exists for more complex scenarios. The most important usage of the Maple Tree is the tracking of the virtual memory areas.h](hThe Maple Tree maintains a small memory footprint and was designed to use modern processor cache efficiently. The majority of the users will be able to use the normal API. An }(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)}(hj5h]hmaple-tree-advanced-api}(hhhj9hhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1j7hj3ubah}(h]h ]h"]h$]h&]refdoccore-api/maple_tree refdomainjDreftyperef 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.}(h| exists for more complex scenarios. The most important usage of the Maple Tree is the tracking of the virtual memory areas.hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(hXThe Maple Tree can store values between ``0`` and ``ULONG_MAX``. The Maple Tree reserves values with the bottom two bits set to '10' which are below 4096 (ie 2, 6, 10 .. 4094) for internal use. If the entries may use reserved entries then the users can convert the entries using xa_mk_value() and convert them back by calling xa_to_value(). If the user needs to use a reserved value, then the user can convert the value when using the :ref:`maple-tree-advanced-api`, but are blocked by the normal API.h](h(The Maple Tree can store values between }(h(The Maple Tree can store values between hjchhhNhNubhliteral)}(h``0``h]h0}(hhhjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjcubh and }(h and hjchhhNhNubjm)}(h ``ULONG_MAX``h]h ULONG_MAX}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjcubhX{. 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 }(hXw. 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 hjchhhNhNubh)}(h:ref:`maple-tree-advanced-api`h]j8)}(hjh]hmaple-tree-advanced-api}(hhhjhhhNhNubah}(h]h ](jCstdstd-refeh"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]refdocjP refdomainjreftyperef refexplicitrefwarnjVmaple-tree-advanced-apiuh1hhhhKhjcubh$, but are blocked by the normal API.}(h$, but are blocked by the normal API.hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj hhubh)}(haThe Maple Tree can also be configured to support searching for a gap of a given size (or larger).h]haThe Maple Tree can also be configured to support searching for a gap of a given size (or larger).}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hj hhubh)}(hXPre-allocating of nodes is also supported using the :ref:`maple-tree-advanced-api`. This is useful for users who must guarantee a successful store operation within a given code segment when allocating cannot be done. Allocations of nodes are relatively small at around 256 bytes.h](h4Pre-allocating of nodes is also supported using the }(h4Pre-allocating of nodes is also supported using the hjhhhNhNubh)}(h:ref:`maple-tree-advanced-api`h]j8)}(hjh]hmaple-tree-advanced-api}(hhhjhhhNhNubah}(h]h ](jCstdstd-refeh"]h$]h&]uh1j7hjubah}(h]h ]h"]h$]h&]refdocjP refdomainjreftyperef refexplicitrefwarnjVmaple-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.}(h. This is useful for users who must guarantee a successful store operation within a given code segment when allocating cannot be done. Allocations of nodes are relatively small at around 256 bytes.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK'hj hhubhtarget)}(h.. _maple-tree-normal-api:h]h}(h]h ]h"]h$]h&]refidmaple-tree-normal-apiuh1jhK-hj hhhhubeh}(h]overviewah ]h"]overviewah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h Normal APIh]h Normal API}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK0ubh)}(hXStart by initialising a maple tree, either with DEFINE_MTREE() for statically allocated maple trees or mt_init() for dynamically allocated ones. A freshly-initialised maple tree contains a ``NULL`` pointer for the range ``0`` - ``ULONG_MAX``. There are currently two types of maple trees supported: the allocation tree and the regular tree. The regular tree has a higher branching factor for internal nodes. The allocation tree has a lower branching factor but allows the user to search for a gap of a given size or larger from either ``0`` upwards or ``ULONG_MAX`` down. An allocation tree can be used by passing in the ``MT_FLAGS_ALLOC_RANGE`` flag when initialising the tree.h](hStart by initialising a maple tree, either with DEFINE_MTREE() for statically allocated maple trees or mt_init() for dynamically allocated ones. A freshly-initialised maple tree contains a }(hStart by initialising a maple tree, either with DEFINE_MTREE() for statically allocated maple trees or mt_init() for dynamically allocated ones. A freshly-initialised maple tree contains a hj(hhhNhNubjm)}(h``NULL``h]hNULL}(hhhj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj(ubh pointer for the range }(h pointer for the range hj(hhhNhNubjm)}(h``0``h]h0}(hhhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj(ubh - }(h - hj(hhhNhNubjm)}(h ``ULONG_MAX``h]h ULONG_MAX}(hhhjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj(ubhX). There are currently two types of maple trees supported: the allocation tree and the regular tree. The regular tree has a higher branching factor for internal nodes. The allocation tree has a lower branching factor but allows the user to search for a gap of a given size or larger from either }(hX). There are currently two types of maple trees supported: the allocation tree and the regular tree. The regular tree has a higher branching factor for internal nodes. The allocation tree has a lower branching factor but allows the user to search for a gap of a given size or larger from either hj(hhhNhNubjm)}(h``0``h]h0}(hhhjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj(ubh upwards or }(h upwards or hj(hhhNhNubjm)}(h ``ULONG_MAX``h]h ULONG_MAX}(hhhj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj(ubh9 down. An allocation tree can be used by passing in the }(h9 down. An allocation tree can be used by passing in the hj(hhhNhNubjm)}(h``MT_FLAGS_ALLOC_RANGE``h]hMT_FLAGS_ALLOC_RANGE}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj(ubh! flag when initialising the tree.}(h! flag when initialising the tree.hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK2hjhhubh)}(hXYou can then set entries using mtree_store() or mtree_store_range(). mtree_store() will overwrite any entry with the new entry and return 0 on success or an error code otherwise. mtree_store_range() works in the same way but takes a range. mtree_load() is used to retrieve the entry stored at a given index. You can use mtree_erase() to erase an entire range by only knowing one value within that range, or mtree_store() call with an entry of NULL may be used to partially erase a range or many ranges at once.h]hXYou can then set entries using mtree_store() or mtree_store_range(). mtree_store() will overwrite any entry with the new entry and return 0 on success or an error code otherwise. mtree_store_range() works in the same way but takes a range. mtree_load() is used to retrieve the entry stored at a given index. You can use mtree_erase() to erase an entire range by only knowing one value within that range, or mtree_store() call with an entry of NULL may be used to partially erase a range or many ranges at once.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhNhNubah}(h]h ]h"]h$]h&]uh1j<hhhKnhj8ubh definition)}(hhh]h bullet_list)}(hhh](h list_item)}(h mtree_load()h]h)}(hjZh]h mtree_load()}(hjZhj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjXubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(h mt_find()h]h)}(hjqh]h mt_find()}(hjqhjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhjoubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(h mt_for_each()h]h)}(hjh]h mt_for_each()}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKlhjubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(h mt_next()h]h)}(hjh]h mt_next()}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(h mt_prev() h]h)}(h mt_prev()h]h mt_prev()}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhjubah}(h]h ]h"]h$]h&]uh1jVhjSubeh}(h]h ]h"]h$]h&]bullet*uh1jQhhhKjhjNubah}(h]h ]h"]h$]h&]uh1jLhj8ubeh}(h]h ]h"]h$]h&]uh1j6hhhKnhj3ubj7)}(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](j=)}(hTakes ma_lock internally:h]hTakes ma_lock internally:}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1j<hhhKyhjubjM)}(hhh]jR)}(hhh](jW)}(h mtree_store()h]h)}(hjh]h mtree_store()}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hmtree_store_range()h]h)}(hjh]hmtree_store_range()}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKrhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hmtree_insert()h]h)}(hj(h]hmtree_insert()}(hj(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshj&ubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hmtree_insert_range()h]h)}(hj?h]hmtree_insert_range()}(hj?hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKthj=ubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(h mtree_erase()h]h)}(hjVh]h mtree_erase()}(hjVhjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjTubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(h mtree_dup()h]h)}(hjmh]h mtree_dup()}(hjmhjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKvhjkubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hmtree_destroy()h]h)}(hjh]hmtree_destroy()}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hmt_set_in_rcu()h]h)}(hjh]hmt_set_in_rcu()}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKxhjubah}(h]h ]h"]h$]h&]uh1jVhjubjW)}(hmt_clear_in_rcu() h]h)}(hmt_clear_in_rcu()h]hmt_clear_in_rcu()}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]jjuh1jQhhhKqhjubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hhhKyhj3hhubeh}(h]h ]h"]h$]h&]uh1j1hjhhhNhNubh)}(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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hjhhubj)}(h.. _maple-tree-advanced-api:h]h}(h]h ]h"]h$]h&]j maple-tree-advanced-apiuh1jhKhjhhhhubeh}(h]lockingah ]h"]lockingah$]h&]uh1hhjhhhhhKbubeh}(h]( normal-apijeh ]h"]( normal apimaple-tree-normal-apieh$]h&]uh1hhhhhhhhK0expect_referenced_by_name}jjsexpect_referenced_by_id}jjsubh)}(hhh](h)}(h Advanced APIh]h Advanced API}(hjhjhhhNhNubah}(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 }(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 hjhhhNhNubh)}(h:ref:`maple-tree-normal-api`h]j8)}(hj*h]hmaple-tree-normal-api}(hhhj,hhhNhNubah}(h]h ](jCstdstd-refeh"]h$]h&]uh1j7hj(ubah}(h]h ]h"]h$]h&]refdocjP refdomainj6reftyperef refexplicitrefwarnjVmaple-tree-normal-apiuh1hhhhKhjubh- is implemented in terms of the advanced API.}(h- is implemented in terms of the advanced API.hjhhhNhNubeh}(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.}(hjUhjShhhNhNubah}(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 }(h2Initialising the maple tree is the same as in the hjahhhNhNubh)}(h:ref:`maple-tree-normal-api`h]j8)}(hjlh]hmaple-tree-normal-api}(hhhjnhhhNhNubah}(h]h ](jCstdstd-refeh"]h$]h&]uh1j7hjjubah}(h]h ]h"]h$]h&]refdocjP refdomainjxreftyperef refexplicitrefwarnjVmaple-tree-normal-apiuh1hhhhKhjaubh. Please see above.}(h. Please see above.hjahhhNhNubeh}(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.}(hjhjhhhNhNubah}(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.}(hjhjhhhNhNubah}(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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX.You can use mas_erase() to erase an entire range by setting index and last of the maple state to the desired range to erase. This will erase the first range that is found in that range, set the maple state index and last as the range that was erased and return the entry that existed at that location.h]hX.You can use mas_erase() to erase an entire range by setting index and last of the maple state to the desired range to erase. This will erase the first range that is found in that range, set the maple state index and last as the range that was erased and return the entry that existed at that location.}(hjhjhhhNhNubah}(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 }(hsYou can walk each entry within a range by using mas_for_each(). If you want to walk each element of the tree then hjhhhNhNubjm)}(h``0``h]h0}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubh and }(h and hjhhhNhNubjm)}(h ``ULONG_MAX``h]h ULONG_MAX}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubhn may be used as the range. If the lock needs to be periodically dropped, see the locking section mas_pause().}(hn 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.}(hjhjhhhNhNubah}(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.}(hjhjhhhNhNubah}(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.}(hj hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hoIf the user needs to yield the lock during an operation, then the maple state must be paused using mas_pause().h]hoIf the user needs to yield the lock during an operation, then the maple state must be paused using mas_pause().}(hj.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.}(hj<hj:hhhNhNubah}(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}(hjXhjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShhhhhKubh)}(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.}(hjfhjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjShhubj)}(h.. _maple-tree-advanced-locks:h]h}(h]h ]h"]h$]h&]j maple-tree-advanced-locksuh1jhKhjShhhhubeh}(h](advanced-allocating-nodesjReh ]h"](advanced allocating nodesmaple-tree-advanced-alloceh$]h&]uh1hhjhhhhhKj }jjHsj }jRjHsubh)}(hhh](h)}(hAdvanced Lockingh]hAdvanced Locking}(hjhjhhhNhNubah}(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 }(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 hjhhhNhNubjm)}(h``MT_FLAGS_LOCK_EXTERN flag``h]hMT_FLAGS_LOCK_EXTERN flag}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubhf, this is usually done with the MTREE_INIT_EXT() #define, which takes an external lock as an argument.}(hf, 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-lockingj|eh ]h"](advanced lockingmaple-tree-advanced-lockseh$]h&]uh1hhjhhhhhKj }jjrsj }j|jrsubeh}(h]( advanced-apijeh ]h"]( advanced apimaple-tree-advanced-apieh$]h&]uh1hhhhhhhhKj }jjsj }jjsubh)}(hhh](h)}(hFunctions and structuresh]hFunctions and structures}(hjhjhhhNhNubah}(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}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]jah ]h"]maple tree flagsah$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjhhj }jjsj }jjsubjR)}(hhh](jW)}(h4MT_FLAGS_ALLOC_RANGE - Track gaps in this treeh]h)}(hjh]h4MT_FLAGS_ALLOC_RANGE - Track gaps in this tree}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(h0MT_FLAGS_USE_RCU - Operate in RCU modeh]h)}(hj'h]h0MT_FLAGS_USE_RCU - Operate in RCU mode}(hj'hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj%ubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(hIMT_FLAGS_HEIGHT_OFFSET - The position of the tree height in the flagsh]h)}(hj?h]hIMT_FLAGS_HEIGHT_OFFSET - The position of the tree height in the flags}(hj?hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj=ubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(hEMT_FLAGS_HEIGHT_MASK - The mask for the maple tree height valueh]h)}(hjWh]hEMT_FLAGS_HEIGHT_MASK - The mask for the maple tree height value}(hjWhjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjUubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(h4MT_FLAGS_LOCK_MASK - How the mt_lock is usedh]h)}(hjoh]h4MT_FLAGS_LOCK_MASK - How the mt_lock is used}(hjohjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjmubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(h.MT_FLAGS_LOCK_IRQ - Acquired irq-safeh]h)}(hjh]h.MT_FLAGS_LOCK_IRQ - Acquired irq-safe}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(h-MT_FLAGS_LOCK_BH - Acquired bh-safeh]h)}(hjh]h-MT_FLAGS_LOCK_BH - Acquired bh-safe}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1jVhj ubjW)}(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}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]jjuh1jQhjhKhjhhubh)}(h:MAPLE_HEIGHT_MAX The largest height that can be storedh]h:MAPLE_HEIGHT_MAX The largest height that can be stored}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singleMTREE_INIT (C macro) c.MTREE_INIThNtauh1jhjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h MTREE_INITh]hdesc_signature_line)}(h MTREE_INITh]h desc_name)}(h MTREE_INITh]h desc_sig_name)}(hjh]h MTREE_INIT}(hhhj 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:220: ./include/linux/maple_tree.hhKubah}(h]h ]h"]h$]h&]hh add_permalinkuh1jsphinx_line_type declaratorhjhhhj# hKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multilineuh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjhhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1j7 hjhhhj# hKubeh}(h]h ](cmacroeh"]h$]h&]domainjE objtypejF desctypejF noindexuh1jhhhjhNhNubh)}(h``MTREE_INIT (name, __flags)``h]jm)}(hjP h]hMTREE_INIT (name, __flags)}(hhhjR hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjN ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjhhubh block_quote)}(hhh]h)}(hInitialize a maple treeh]hInitialize a maple tree}(hjm hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjh ubah}(h]h ]h"]h$]h&]uh1jf hjhhhNhNubh container)}(hR**Parameters** ``name`` The maple tree name ``__flags`` The maple tree flagsh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubj2)}(hhh](j7)}(h``name`` The maple tree name h](j=)}(h``name``h]jm)}(hj h]hname}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj ubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubjM)}(hhh]h)}(hThe maple tree nameh]hThe maple tree name}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jLhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKhj ubj7)}(h ``__flags`` The maple tree flagsh](j=)}(h ``__flags``h]jm)}(hj h]h__flags}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj ubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubjM)}(hhh]h)}(hThe maple tree flagsh]hThe maple tree flags}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubah}(h]h ]h"]h$]h&]uh1jLhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKhj ubeh}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jMTREE_INIT_EXT (C macro)c.MTREE_INIT_EXThNtauh1jhjhhhNhNubj)}(hhh](j)}(hMTREE_INIT_EXTh]j )}(hMTREE_INIT_EXTh]j )}(hMTREE_INIT_EXTh]j )}(hj4 h]hMTREE_INIT_EXT}(hhhj> hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj: ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj6 hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKubah}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj2 hhhjQ hKubah}(h]j- ah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj/ hhubj8 )}(hhh]h}(h]h ]h"]h$]h&]uh1j7 hj/ hhhjQ hKubeh}(h]h ](jE macroeh"]h$]h&]jJ jE jK jk jL jk jM uh1jhhhjhNhNubh)}(h*``MTREE_INIT_EXT (name, __flags, __lock)``h]jm)}(hjq h]h&MTREE_INIT_EXT (name, __flags, __lock)}(hhhjs hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjo ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjhhubjg )}(hhh]h)}(h.Initialize a maple tree with an external lock.h]h.Initialize a maple tree with an external lock.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubah}(h]h ]h"]h$]h&]uh1jf hjhhhNhNubj )}(hl**Parameters** ``name`` The tree name ``__flags`` The maple tree flags ``__lock`` The external lockh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubj2)}(hhh](j7)}(h``name`` The tree name h](j=)}(h``name``h]jm)}(hj h]hname}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj ubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubjM)}(hhh]h)}(h The tree nameh]h The tree name}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jLhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKhj ubj7)}(h!``__flags`` The maple tree flags h](j=)}(h ``__flags``h]jm)}(hj h]h__flags}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj ubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj ubjM)}(hhh]h)}(hThe maple tree flagsh]hThe maple tree flags}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jLhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hKhj ubj7)}(h``__lock`` The external lockh](j=)}(h ``__lock``h]jm)}(hj6 h]h__lock}(hhhj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj4 ubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhj0 ubjM)}(hhh]h)}(hThe external lockh]hThe external lock}(hjQ hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhKhjL ubah}(h]h ]h"]h$]h&]uh1jLhj0 ubeh}(h]h ]h"]h$]h&]uh1j6hjK hKhj ubeh}(h]h ]h"]h$]h&]uh1j1hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_empty (C function) c.mtree_emptyhNtauh1jhjhhhNhNubj)}(hhh](j)}(h.bool mtree_empty (const struct maple_tree *mt)h]j )}(h-bool mtree_empty(const struct maple_tree *mt)h](hdesc_sig_keyword_type)}(hboolh]hbool}(hhhj hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j hj hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMXubhdesc_sig_space)}(h h]h }(hhhj hhhNhNubah}(h]h ]wah"]h$]h&]uh1j hj hhhj hMXubj )}(h mtree_emptyh]j )}(h mtree_emptyh]h mtree_empty}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj hhhj hMXubhdesc_parameterlist)}(h(const struct maple_tree *mt)h]hdesc_parameter)}(hconst struct maple_tree *mth](hdesc_sig_keyword)}(hconsth]hconst}(hhhj hhhNhNubah}(h]h ]kah"]h$]h&]uh1j hj ubj )}(h h]h }(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(hstructh]hstruct}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainjE reftype identifier reftargetj modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j0 ASTIdentifier)}j+ j sb c.mtree_emptyasbuh1hhj ubj )}(h h]h }(hhhj= hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubhdesc_sig_punctuation)}(hjh]h*}(hhhjM hhhNhNubah}(h]h ]pah"]h$]h&]uh1jK hj ubj )}(hmth]hmt}(hhhj[ 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 hMXubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj hhhj hMXubah}(h]j ah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM]hj hhubj8 )}(hhh]h)}(h,Determine if a tree has any present entries.h]h,Determine if a tree has any present entries.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMWhj hhubah}(h]h ]h"]h$]h&]uh1j7 hj hhhj hMXubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j jL j jM uh1jhhhjhNhNubj )}(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}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM[hj ubj2)}(hhh]j7)}(h,``const struct maple_tree *mt`` Maple Tree. h](j=)}(h``const struct maple_tree *mt``h]jm)}(hj h]hconst struct maple_tree *mt}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj ubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMXhj ubjM)}(hhh]h)}(h Maple Tree.h]h Maple Tree.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMXhj ubah}(h]h ]h"]h$]h&]uh1jLhj ubeh}(h]h ]h"]h$]h&]uh1j6hj hMXhj ubah}(h]h ]h"]h$]h&]uh1j1hj ubh)}(h **Context**h]j)}(hj h]hContext}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMZhj ubh)}(h Any context.h]h Any context.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMZhj ubh)}(h **Return**h]j)}(hj) h]hReturn}(hhhj+ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj' ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM\hj ubh)}(h1``true`` if the tree contains only NULL pointers.h](jm)}(h``true``h]htrue}(hhhjC hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj? ubh) if the tree contains only NULL pointers.}(h) if the tree contains only NULL pointers.hj? hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM[hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_reset (C function) c.mas_resethNtauh1jhjhhhNhNubj)}(hhh](j)}(h%void mas_reset (struct ma_state *mas)h]j )}(h$void mas_reset(struct ma_state *mas)h](j )}(hvoidh]hvoid}(hhhj} hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjy hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM)ubj )}(h h]h }(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjy hhhj hM)ubj )}(h mas_reseth]j )}(h mas_reseth]h mas_reset}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubah}(h]h ](j j eh"]h$]h&]hhuh1j hjy hhhj hM)ubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j sb c.mas_resetasbuh1hhj ubj )}(h h]h }(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubjL )}(hjh]h*}(hhhjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj ubj )}(hmash]hmas}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubah}(h]h ]h"]h$]h&]hhuh1j hjy hhhj hM)ubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hju hhhj hM)ubah}(h]jp ah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM1hjr hhubj8 )}(hhh]h)}(h#Reset a Maple Tree operation state.h]h#Reset a Maple Tree operation state.}(hj@hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM(hj;hhubah}(h]h ]h"]h$]h&]uh1j7 hjr hhhj hM)ubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jVjL jVjM uh1jhhhjhNhNubj )}(hX**Parameters** ``struct ma_state *mas`` Maple Tree operation state. **Description** Resets the error or walk state of the **mas** so future walks of the array will start from the root. Use this if you have dropped the lock and want to reuse the ma_state. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj`h]h Parameters}(hhhjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM,hjZubj2)}(hhh]j7)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j=)}(h``struct ma_state *mas``h]jm)}(hjh]hstruct ma_state *mas}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj}ubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM)hjyubjM)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM)hjubah}(h]h ]h"]h$]h&]uh1jLhjyubeh}(h]h ]h"]h$]h&]uh1j6hjhM)hjvubah}(h]h ]h"]h$]h&]uh1j1hjZubh)}(h**Description**h]j)}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM+hjZubh)}(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 }(h&Resets the error or walk state of the hjhhhNhNubj)}(h**mas**h]hmas}(hhhjhhhNhNubah}(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.}(h~ so future walks of the array will start from the root. Use this if you have dropped the lock and want to reuse the ma_state.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM+hjZubh)}(h **Context**h]j)}(hjh]hContext}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM/hjZubh)}(h Any context.h]h Any context.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM/hjZubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_for_each (C macro)c.mas_for_eachhNtauh1jhjhhhNhNubj)}(hhh](j)}(h mas_for_eachh]j )}(h mas_for_eachh]j )}(h mas_for_eachh]j )}(hj4h]h mas_for_each}(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj6hhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMCubah}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj2hhhjQhMCubah}(h]j-ah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMBhj/hhubj8 )}(hhh]h}(h]h ]h"]h$]h&]uh1j7 hj/hhhjQhMCubeh}(h]h ](jE macroeh"]h$]h&]jJ jE jK jkjL jkjM uh1jhhhjhNhNubh)}(h(``mas_for_each (__mas, __entry, __max)``h]jm)}(hjqh]h$mas_for_each (__mas, __entry, __max)}(hhhjshhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjoubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMDhjhhubjg )}(hhh]h)}(h'Iterate over a range of the maple tree.h]h'Iterate over a range of the maple tree.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM8hjubah}(h]h ]h"]h$]h&]uh1jf hjhhhNhNubj )}(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}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM<hjubj2)}(hhh](j7)}(h3``__mas`` Maple Tree operation state (maple_state) h](j=)}(h ``__mas``h]jm)}(hjh]h__mas}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM9hjubjM)}(hhh]h)}(h(Maple Tree operation state (maple_state)h]h(Maple Tree operation state (maple_state)}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM9hjubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hjhM9hjubj7)}(h*``__entry`` Entry retrieved from the tree h](j=)}(h ``__entry``h]jm)}(hjh]h__entry}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM:hjubjM)}(hhh]h)}(hEntry retrieved from the treeh]hEntry retrieved from the tree}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM:hjubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hjhM:hjubj7)}(h2``__max`` maximum index to retrieve from the tree h](j=)}(h ``__max``h]jm)}(hj6h]h__max}(hhhj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj4ubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM;hj0ubjM)}(hhh]h)}(h'maximum index to retrieve from the treeh]h'maximum index to retrieve from the tree}(hjQhjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhM;hjLubah}(h]h ]h"]h$]h&]uh1jLhj0ubeh}(h]h ]h"]h$]h&]uh1j6hjKhM;hjubeh}(h]h ]h"]h$]h&]uh1j1hjubh)}(h**Description**h]j)}(hjqh]h Description}(hhhjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM=hjubh)}(h**Note**h]j)}(hjh]hNote}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM@hjubh)}(hmay return the zero entry.h]hmay return the zero entry.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM@hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](j__mas_set_range (C function)c.__mas_set_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(hTvoid __mas_set_range (struct ma_state *mas, unsigned long start, unsigned long last)h]j )}(hSvoid __mas_set_range(struct ma_state *mas, unsigned long start, unsigned long last)h](j )}(hvoidh]hvoid}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj )}(h__mas_set_rangeh]j )}(h__mas_set_rangeh]h__mas_set_range}(hhhjhhhNhNubah}(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}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j )}(hma_stateh]hma_state}(hhhj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj:modnameN classnameNj/ j2 )}j5 ]j8 )}j+ jsbc.__mas_set_rangeasbuh1hhjubj )}(h h]h }(hhhjXhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjL )}(hjh]h*}(hhhjfhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjubj )}(hmash]hmas}(hhhjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long starth](j )}(hunsignedh]hunsigned}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlongh]hlong}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hstarth]hstart}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long lasth](j )}(hunsignedh]hunsigned}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlongh]hlong}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlasth]hlast}(hhhjhhhNhNubah}(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* uh1jj+ j, hjhhhjhMubah}(h]jah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubj8 )}(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.}(hjBhj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj=hhubah}(h]h ]h"]h$]h&]uh1j7 hjhhhjhMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jXjL jXjM uh1jhhhjhNhNubj )}(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)}(hjbh]h Parameters}(hhhjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj\ubj2)}(hhh](j7)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j=)}(h``struct ma_state *mas``h]jm)}(hjh]hstruct ma_state *mas}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj{ubjM)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jLhj{ubeh}(h]h ]h"]h$]h&]uh1j6hjhMhjxubj7)}(h>``unsigned long start`` New start of range in the Maple Tree. h](j=)}(h``unsigned long start``h]jm)}(hjh]hunsigned long start}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubjM)}(hhh]h)}(h%New start of range in the Maple Tree.h]h%New start of range in the Maple Tree.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hjhMhjxubj7)}(h;``unsigned long last`` New end of range in the Maple Tree. h](j=)}(h``unsigned long last``h]jm)}(hjh]hunsigned long last}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubjM)}(hhh]h)}(h#New end of range in the Maple Tree.h]h#New end of range in the Maple Tree.}(hjhj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhj ubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hjhMhjxubeh}(h]h ]h"]h$]h&]uh1j1hj\ubh)}(h**Description**h]j)}(hj.h]h Description}(hhhj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj\ubh)}(h|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.}(hjFhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj\ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_set_range (C function)c.mas_set_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(hRvoid mas_set_range (struct ma_state *mas, unsigned long start, unsigned long last)h]j )}(hQvoid mas_set_range(struct ma_state *mas, unsigned long start, unsigned long last)h](j )}(hvoidh]hvoid}(hhhjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjohhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjohhhjhMubj )}(h mas_set_rangeh]j )}(h mas_set_rangeh]h mas_set_range}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubah}(h]h ](j j eh"]h$]h&]hhuh1j hjohhhjhMubj )}(h?(struct ma_state *mas, unsigned long start, unsigned long last)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jsbc.mas_set_rangeasbuh1hhjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjL )}(hjh]h*}(hhhjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjubj )}(hmash]hmas}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long starth](j )}(hunsignedh]hunsigned}(hhhj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlongh]hlong}(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hstarth]hstart}(hhhjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hunsigned long lasth](j )}(hunsignedh]hunsigned}(hhhjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj )}(hlongh]hlong}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj )}(hlasth]hlast}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjohhhjhMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjkhhhjhMubah}(h]jfah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhhubj8 )}(hhh]h)}(h8Set up Maple Tree operation state for a different index.h]h8Set up Maple Tree operation state for a different index.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j7 hjhhhhjhMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jjL jjM uh1jhhhjhNhNubj )}(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}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubj2)}(hhh](j7)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j=)}(h``struct ma_state *mas``h]jm)}(hjh]hstruct ma_state *mas}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubjM)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hj2hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hMhj-ubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hj,hMhjubj7)}(h>``unsigned long start`` New start of range in the Maple Tree. h](j=)}(h``unsigned long start``h]jm)}(hjPh]hunsigned long start}(hhhjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjNubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjJubjM)}(hhh]h)}(h%New start of range in the Maple Tree.h]h%New start of range in the Maple Tree.}(hjkhjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMhjfubah}(h]h ]h"]h$]h&]uh1jLhjJubeh}(h]h ]h"]h$]h&]uh1j6hjehMhjubj7)}(h;``unsigned long last`` New end of range in the Maple Tree. h](j=)}(h``unsigned long last``h]jm)}(hjh]hunsigned long last}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubjM)}(hhh]h)}(h#New end of range in the Maple Tree.h]h#New end of range in the Maple Tree.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hjhMhjubeh}(h]h ]h"]h$]h&]uh1j1hjubh)}(h**Description**h]j)}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubh)}(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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_set (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}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj )}(hmas_seth]j )}(hmas_seth]hmas_set}(hhhj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubah}(h]h ](j j eh"]h$]h&]hhuh1j hjhhhjhMubj )}(h+(struct ma_state *mas, unsigned long index)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBubj )}(h h]h }(hhhjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjfmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ j,sb c.mas_setasbuh1hhjBubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBubjL )}(hjh]h*}(hhhjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjBubj )}(hmash]hmas}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj>ubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hlongh]hlong}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hindexh]hindex}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj>ubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjhhhjhMubah}(h]jah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubj8 )}(hhh]h)}(h8Set up Maple Tree operation state for a different index.h]h8Set up Maple Tree operation state for a different index.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j7 hjhhhjhMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j3jL j3jM uh1jhhhjhNhNubj )}(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)}(hj=h]h Parameters}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj7ubj2)}(hhh](j7)}(h5``struct ma_state *mas`` Maple Tree operation state. h](j=)}(h``struct ma_state *mas``h]jm)}(hj\h]hstruct ma_state *mas}(hhhj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjZubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjVubjM)}(hhh]h)}(hMaple Tree operation state.h]hMaple Tree operation state.}(hjwhjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhMhjrubah}(h]h ]h"]h$]h&]uh1jLhjVubeh}(h]h ]h"]h$]h&]uh1j6hjqhMhjSubj7)}(h7``unsigned long index`` New index into the Maple Tree. h](j=)}(h``unsigned long index``h]jm)}(hjh]hunsigned long index}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubjM)}(hhh]h)}(hNew index into the Maple Tree.h]hNew index into the Maple Tree.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hjhMhjSubeh}(h]h ]h"]h$]h&]uh1j1hj7ubh)}(h**Description**h]j)}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj7ubh)}(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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_init_flags (C function)c.mt_init_flagshNtauh1jhjhhhNhNubj)}(hhh](j)}(h>void mt_init_flags (struct maple_tree *mt, unsigned int flags)h]j )}(h=void mt_init_flags(struct maple_tree *mt, unsigned int flags)h](j )}(hvoidh]hvoid}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMubj )}(h h]h }(hhhj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj#hMubj )}(h mt_init_flagsh]j )}(h mt_init_flagsh]h mt_init_flags}(hhhj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubah}(h]h ](j j eh"]h$]h&]hhuh1j hjhhhj#hMubj )}(h+(struct maple_tree *mt, unsigned int flags)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hhhjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNubj )}(h h]h }(hhhj_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjrmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ j8sbc.mt_init_flagsasbuh1hhjNubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNubjL )}(hjh]h*}(hhhjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjNubj )}(hmth]hmt}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjJubj )}(hunsigned int flagsh](j )}(hunsignedh]hunsigned}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hinth]hint}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hflagsh]hflags}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjJubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhj#hMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj hhhj#hMubah}(h]jah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj hhubj8 )}(hhh]h)}(h*Initialise an empty maple tree with flags.h]h*Initialise an empty maple tree with flags.}(hj)hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj$hhubah}(h]h ]h"]h$]h&]uh1j7 hj hhhj#hMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j?jL j?jM uh1jhhhjhNhNubj )}(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)}(hjIh]h Parameters}(hhhjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjCubj2)}(hhh](j7)}(h%``struct maple_tree *mt`` Maple Tree h](j=)}(h``struct maple_tree *mt``h]jm)}(hjhh]hstruct maple_tree *mt}(hhhjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjfubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjbubjM)}(hhh]h)}(h Maple Treeh]h Maple Tree}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hMhj~ubah}(h]h ]h"]h$]h&]uh1jLhjbubeh}(h]h ]h"]h$]h&]uh1j6hj}hMhj_ubj7)}(h)``unsigned int flags`` maple tree flags. h](j=)}(h``unsigned int flags``h]jm)}(hjh]hunsigned int flags}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjubjM)}(hhh]h)}(hmaple tree flags.h]hmaple tree flags.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hjhMhj_ubeh}(h]h ]h"]h$]h&]uh1j1hjCubh)}(h**Description**h]j)}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjCubh)}(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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjCubh)}(h **Context**h]j)}(hjh]hContext}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjCubh)}(h Any context.h]h Any context.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_init (C function) c.mt_inithNtauh1jhjhhhNhNubj)}(hhh](j)}(h$void mt_init (struct maple_tree *mt)h]j )}(h#void mt_init(struct maple_tree *mt)h](j )}(hvoidh]hvoid}(hhhjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMubj )}(h h]h }(hhhjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDhhhjVhMubj )}(hmt_inith]j )}(hmt_inith]hmt_init}(hhhjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubah}(h]h ](j j eh"]h$]h&]hhuh1j hjDhhhjVhMubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jksb c.mt_initasbuh1hhjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjL )}(hjh]h*}(hhhjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjubj )}(hmth]hmt}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj}ubah}(h]h ]h"]h$]h&]hhuh1j hjDhhhjVhMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj@hhhjVhMubah}(h]j;ah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj=hhubj8 )}(hhh]h)}(hInitialise an empty maple tree.h]hInitialise an empty maple tree.}(hj hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM hjhhubah}(h]h ]h"]h$]h&]uh1j7 hj=hhhjVhMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j!jL j!jM uh1jhhhjhNhNubj )}(hx**Parameters** ``struct maple_tree *mt`` Maple Tree **Description** An empty Maple Tree. **Context** Any context.h](h)}(h**Parameters**h]j)}(hj+h]h Parameters}(hhhj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj%ubj2)}(hhh]j7)}(h%``struct maple_tree *mt`` Maple Tree h](j=)}(h``struct maple_tree *mt``h]jm)}(hjJh]hstruct maple_tree *mt}(hhhjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjHubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhjDubjM)}(hhh]h)}(h Maple Treeh]h Maple Tree}(hjehjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hMhj`ubah}(h]h ]h"]h$]h&]uh1jLhjDubeh}(h]h ]h"]h$]h&]uh1j6hj_hMhjAubah}(h]h ]h"]h$]h&]uh1j1hj%ubh)}(h**Description**h]j)}(hjh]h Description}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj%ubh)}(hAn empty Maple Tree.h]hAn empty Maple Tree.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj%ubh)}(h **Context**h]j)}(hjh]hContext}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj%ubh)}(h Any context.h]h Any context.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_clear_in_rcu (C function)c.mt_clear_in_rcuhNtauh1jhjhhhNhNubj)}(hhh](j)}(h,void mt_clear_in_rcu (struct maple_tree *mt)h]j )}(h+void mt_clear_in_rcu(struct maple_tree *mt)h](j )}(hvoidh]hvoid}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM#ubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM#ubj )}(hmt_clear_in_rcuh]j )}(hmt_clear_in_rcuh]hmt_clear_in_rcu}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubah}(h]h ](j j eh"]h$]h&]hhuh1j hjhhhjhM#ubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hhhj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ubj )}(h h]h }(hhhj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjIubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjNmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jsbc.mt_clear_in_rcuasbuh1hhj*ubj )}(h h]h }(hhhjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ubjL )}(hjh]h*}(hhhjzhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj*ubj )}(hmth]hmt}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj&ubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhM#ubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjhhhjhM#ubah}(h]jah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM%hjhhubj8 )}(hhh]h)}(h Switch the tree to non-RCU mode.h]h Switch the tree to non-RCU mode.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM"hjhhubah}(h]h ]h"]h$]h&]uh1j7 hjhhhjhM#ubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jjL jjM uh1jhhhjhNhNubj )}(h:**Parameters** ``struct maple_tree *mt`` The Maple Treeh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM&hjubj2)}(hhh]j7)}(h(``struct maple_tree *mt`` The Maple Treeh](j=)}(h``struct maple_tree *mt``h]jm)}(hjh]hstruct maple_tree *mt}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM(hjubjM)}(hhh]h)}(hThe Maple Treeh]hThe Maple Tree}(hjhj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM#hj ubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hjhM(hjubah}(h]h ]h"]h$]h&]uh1j1hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_set_in_rcu (C function)c.mt_set_in_rcuhNtauh1jhjhhhNhNubj)}(hhh](j)}(h*void mt_set_in_rcu (struct maple_tree *mt)h]j )}(h)void mt_set_in_rcu(struct maple_tree *mt)h](j )}(hvoidh]hvoid}(hhhjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjIhhh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM6ubj )}(h h]h }(hhhj\hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjIhhhj[hM6ubj )}(h mt_set_in_rcuh]j )}(h mt_set_in_rcuh]h mt_set_in_rcu}(hhhjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjubah}(h]h ](j j eh"]h$]h&]hhuh1j hjIhhhj[hM6ubj )}(h(struct maple_tree *mt)h]j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jpsbc.mt_set_in_rcuasbuh1hhjubj )}(h h]h }(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjL )}(hjh]h*}(hhhjhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjubj )}(hmth]hmt}(hhhjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hjIhhhj[hM6ubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjEhhhj[hM6ubah}(h]j@ah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM8hjBhhubj8 )}(hhh]h)}(h!Switch the tree to RCU safe mode.h]h!Switch the tree to RCU safe mode.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM5hj hhubah}(h]h ]h"]h$]h&]uh1j7 hjBhhhj[hM6ubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j&jL j&jM uh1jhhhjhNhNubj )}(h:**Parameters** ``struct maple_tree *mt`` The Maple Treeh](h)}(h**Parameters**h]j)}(hj0h]h Parameters}(hhhj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM9hj*ubj2)}(hhh]j7)}(h(``struct maple_tree *mt`` The Maple Treeh](j=)}(h``struct maple_tree *mt``h]jm)}(hjOh]hstruct maple_tree *mt}(hhhjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjMubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM;hjIubjM)}(hhh]h)}(hThe Maple Treeh]hThe Maple Tree}(hjjhjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM6hjeubah}(h]h ]h"]h$]h&]uh1jLhjIubeh}(h]h ]h"]h$]h&]uh1j6hjdhM;hjFubah}(h]h ]h"]h$]h&]uh1j1hj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_for_each (C macro) c.mt_for_eachhNtauh1jhjhhhNhNubj)}(hhh](j)}(h mt_for_eachh]j )}(h mt_for_eachh]j )}(h mt_for_eachh]j )}(hjh]h mt_for_each}(hhhjhhhNhNubah}(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:220: ./include/linux/maple_tree.hhM]ubah}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjhhhjhM]ubah}(h]jah ](j0 j1 eh"]h$]h&]j5 uh1jh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM\hjhhubj8 )}(hhh]h}(h]h ]h"]h$]h&]uh1j7 hjhhhjhM]ubeh}(h]h ](jE macroeh"]h$]h&]jJ jE jK jjL jjM uh1jhhhjhNhNubh)}(h1``mt_for_each (__tree, __entry, __index, __max)``h]jm)}(hjh]h-mt_for_each (__tree, __entry, __index, __max)}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhM^hjhhubjg )}(hhh]h)}(h4Iterate over each entry starting at index until max.h]h4Iterate over each entry starting at index until max.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMShjubah}(h]h ]h"]h$]h&]uh1jf hjhhhNhNubj )}(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)}(hjh]h Parameters}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMWhjubj2)}(hhh](j7)}(h``__tree`` The Maple Tree h](j=)}(h ``__tree``h]jm)}(hj3h]h__tree}(hhhj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj1ubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMThj-ubjM)}(hhh]h)}(hThe Maple Treeh]hThe Maple Tree}(hjNhjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhMThjIubah}(h]h ]h"]h$]h&]uh1jLhj-ubeh}(h]h ]h"]h$]h&]uh1j6hjHhMThj*ubj7)}(h``__entry`` The current entry h](j=)}(h ``__entry``h]jm)}(hjlh]h__entry}(hhhjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMUhjfubjM)}(hhh]h)}(hThe current entryh]hThe current entry}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMUhjubah}(h]h ]h"]h$]h&]uh1jLhjfubeh}(h]h ]h"]h$]h&]uh1j6hjhMUhj*ubj7)}(hO``__index`` The index to start the search from. Subsequently used as iterator. h](j=)}(h ``__index``h]jm)}(hjh]h__index}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMVhjubjM)}(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.}(hjhjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMVhjubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hjhMVhj*ubj7)}(h*``__max`` The maximum limit for **index** h](j=)}(h ``__max``h]jm)}(hjh]h__max}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubah}(h]h ]h"]h$]h&]uh1j<h_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMWhjubjM)}(hhh]h)}(hThe maximum limit for **index**h](hThe maximum limit for }(hThe maximum limit for hjhhhNhNubj)}(h **index**h]hindex}(hhhj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhMWhjubah}(h]h ]h"]h$]h&]uh1jLhjubeh}(h]h ]h"]h$]h&]uh1j6hjhMWhj*ubeh}(h]h ]h"]h$]h&]uh1j1hjubh)}(h**Description**h]j)}(hj( h]h Description}(hhhj* hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj& ubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMYhjubh)}(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@ hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1hh_/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:220: ./include/linux/maple_tree.hhMYhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_insert (C function) c.mas_inserthNtauh1jhjhhhNhNubj)}(hhh](j)}(h5void * mas_insert (struct ma_state *mas, void *entry)h]j )}(h3void *mas_insert(struct ma_state *mas, void *entry)h](j )}(hvoidh]hvoid}(hhhjm hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hji hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhj| hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hji hhhj{ hMubjL )}(hjh]h*}(hhhj hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hji hhhj{ hMubj )}(h mas_inserth]j )}(h mas_inserth]h mas_insert}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubah}(h]h ](j j eh"]h$]h&]hhuh1j hji hhhj{ hMubj )}(h#(struct ma_state *mas, void *entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j sb c.mas_insertasbuh1hhj ubj )}(h h]h }(hhhj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubjL )}(hjh]h*}(hhhj!hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj ubj )}(hmash]hmas}(hhhj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hhhj)!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%!ubj )}(h h]h }(hhhj7!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%!ubjL )}(hjh]h*}(hhhjE!hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj%!ubj )}(hentryh]hentry}(hhhjR!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%!ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubeh}(h]h ]h"]h$]h&]hhuh1j hji hhhj{ hMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hje hhhj{ hMubah}(h]j` ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjb hhubj8 )}(hhh]h)}(hInternal call to insert a valueh]hInternal call to insert a value}(hj!hj}!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjz!hhubah}(h]h ]h"]h$]h&]uh1j7 hjb hhhj{ hMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j!jL j!jM uh1jhhhjhNhNubj )}(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}(hhhj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj!ubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hj!h]hstruct ma_state *mas}(hhhj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj!ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj!ubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj!hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMhj!ubah}(h]h ]h"]h$]h&]uh1jLhj!ubeh}(h]h ]h"]h$]h&]uh1j6hj!hMhj!ubj7)}(h#``void *entry`` The entry to store h](j=)}(h``void *entry``h]jm)}(hj!h]h void *entry}(hhhj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj!ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj!ubjM)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hj"hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj "hMhj "ubah}(h]h ]h"]h$]h&]uh1jLhj!ubeh}(h]h ]h"]h$]h&]uh1j6hj "hMhj!ubeh}(h]h ]h"]h$]h&]uh1j1hj!ubh)}(h **Return**h]j)}(hj2"h]hReturn}(hhhj4"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0"ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj!ubh)}(h``NULL`` or the contents that already exists at the requested index otherwise. The maple state needs to be checked for error conditions.h](jm)}(h``NULL``h]hNULL}(hhhjL"hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjH"ubh or the contents that already exists at the requested index otherwise. The maple state needs to be checked for error conditions.}(h or the contents that already exists at the requested index otherwise. The maple state needs to be checked for error conditions.hjH"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_alloc_cyclic (C function)c.mas_alloc_cyclichNtauh1jhjhhhNhNubj)}(hhh](j)}(hint mas_alloc_cyclic (struct ma_state *mas, unsigned long *startp, void *entry, unsigned long range_lo, unsigned long range_hi, unsigned long *next, gfp_t gfp)h]j )}(hint mas_alloc_cyclic(struct ma_state *mas, unsigned long *startp, void *entry, unsigned long range_lo, unsigned long range_hi, unsigned long *next, gfp_t gfp)h](j )}(hinth]hint}(hhhj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"hhhj"hMubj )}(hmas_alloc_cyclich]j )}(hmas_alloc_cyclich]hmas_alloc_cyclic}(hhhj"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}(hhhj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj )}(h h]h }(hhhj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj"modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j"sbc.mas_alloc_cyclicasbuh1hhj"ubj )}(h h]h }(hhhj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubjL )}(hjh]h*}(hhhj#hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj"ubj )}(hmash]hmas}(hhhj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubj )}(hunsigned long *startph](j )}(hunsignedh]hunsigned}(hhhj5#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1#ubj )}(h h]h }(hhhjC#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1#ubj )}(hlongh]hlong}(hhhjQ#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1#ubj )}(h h]h }(hhhj_#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1#ubjL )}(hjh]h*}(hhhjm#hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj1#ubj )}(hstartph]hstartp}(hhhjz#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hhhj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj )}(h h]h }(hhhj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubjL )}(hjh]h*}(hhhj#hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj#ubj )}(hentryh]hentry}(hhhj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubj )}(hunsigned long range_loh](j )}(hunsignedh]hunsigned}(hhhj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj )}(h h]h }(hhhj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj )}(hlongh]hlong}(hhhj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj )}(h h]h }(hhhj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj )}(hrange_loh]hrange_lo}(hhhj $hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubj )}(hunsigned long range_hih](j )}(hunsignedh]hunsigned}(hhhj&$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"$ubj )}(h h]h }(hhhj4$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"$ubj )}(hlongh]hlong}(hhhjB$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"$ubj )}(h h]h }(hhhjP$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"$ubj )}(hrange_hih]hrange_hi}(hhhj^$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubj )}(hunsigned long *nexth](j )}(hunsignedh]hunsigned}(hhhjw$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjs$ubj )}(h h]h }(hhhj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjs$ubj )}(hlongh]hlong}(hhhj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjs$ubj )}(h h]h }(hhhj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjs$ubjL )}(hjh]h*}(hhhj$hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjs$ubj )}(hnexth]hnext}(hhhj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjs$ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj"ubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hhhj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj$modnameN classnameNj/ j2 )}j5 ]j"c.mas_alloc_cyclicasbuh1hhj$ubj )}(h h]h }(hhhj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj )}(hgfph]hgfp}(hhhj%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* uh1jj+ j, hj~"hhhj"hMubah}(h]jy"ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj{"hhubj8 )}(hhh]h)}(h1Internal call to find somewhere to store an entryh]h1Internal call to find somewhere to store an entry}(hj1%hj/%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj,%hhubah}(h]h ]h"]h$]h&]uh1j7 hj{"hhhj"hMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jG%jL jG%jM uh1jhhhjhNhNubj )}(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)}(hjQ%h]h Parameters}(hhhjS%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjO%ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjK%ubj2)}(hhh](j7)}(h*``struct ma_state *mas`` The maple state. h](j=)}(h``struct ma_state *mas``h]jm)}(hjp%h]hstruct ma_state *mas}(hhhjr%hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjn%ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjj%ubjM)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj%hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj%ubah}(h]h ]h"]h$]h&]uh1jLhjj%ubeh}(h]h ]h"]h$]h&]uh1j6hj%hMhjg%ubj7)}(h)``unsigned long *startp`` Pointer to ID. h](j=)}(h``unsigned long *startp``h]jm)}(hj%h]hunsigned long *startp}(hhhj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj%ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj%ubjM)}(hhh]h)}(hPointer to ID.h]hPointer to ID.}(hj%hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj%ubah}(h]h ]h"]h$]h&]uh1jLhj%ubeh}(h]h ]h"]h$]h&]uh1j6hj%hMhjg%ubj7)}(h$``void *entry`` The entry to store. h](j=)}(h``void *entry``h]jm)}(hj%h]h void *entry}(hhhj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj%ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj%ubjM)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hj%hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj%ubah}(h]h ]h"]h$]h&]uh1jLhj%ubeh}(h]h ]h"]h$]h&]uh1j6hj%hMhjg%ubj7)}(h;``unsigned long range_lo`` Lower bound of range to search. h](j=)}(h``unsigned long range_lo``h]jm)}(hj&h]hunsigned long range_lo}(hhhj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj&ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj&ubjM)}(hhh]h)}(hLower bound of range to search.h]hLower bound of range to search.}(hj6&hj4&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0&hMhj1&ubah}(h]h ]h"]h$]h&]uh1jLhj&ubeh}(h]h ]h"]h$]h&]uh1j6hj0&hMhjg%ubj7)}(h;``unsigned long range_hi`` Upper bound of range to search. h](j=)}(h``unsigned long range_hi``h]jm)}(hjT&h]hunsigned long range_hi}(hhhjV&hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjR&ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjN&ubjM)}(hhh]h)}(hUpper bound of range to search.h]hUpper bound of range to search.}(hjo&hjm&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhji&hMhjj&ubah}(h]h ]h"]h$]h&]uh1jLhjN&ubeh}(h]h ]h"]h$]h&]uh1j6hji&hMhjg%ubj7)}(h8``unsigned long *next`` Pointer to next ID to allocate. h](j=)}(h``unsigned long *next``h]jm)}(hj&h]hunsigned long *next}(hhhj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj&ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj&ubjM)}(hhh]h)}(hPointer to next ID to allocate.h]hPointer to next ID to allocate.}(hj&hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1jLhj&ubeh}(h]h ]h"]h$]h&]uh1j6hj&hMhjg%ubj7)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j=)}(h ``gfp_t gfp``h]jm)}(hj&h]h gfp_t gfp}(hhhj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj&ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj&ubjM)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hj&hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1jLhj&ubeh}(h]h ]h"]h$]h&]uh1j6hj&hMhjg%ubeh}(h]h ]h"]h$]h&]uh1j1hjK%ubh)}(h **Return**h]j)}(hj'h]hReturn}(hhhj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjK%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'hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjK%ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_walk (C function) c.mas_walkhNtauh1jhjhhhNhNubj)}(hhh](j)}(h&void * mas_walk (struct ma_state *mas)h]j )}(h$void *mas_walk(struct ma_state *mas)h](j )}(hvoidh]hvoid}(hhhjF'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjB'hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhjU'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjB'hhhjT'hMubjL )}(hjh]h*}(hhhjc'hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjB'hhhjT'hMubj )}(hmas_walkh]j )}(hmas_walkh]hmas_walk}(hhhjt'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjp'ubah}(h]h ](j j eh"]h$]h&]hhuh1j hjB'hhhjT'hMubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubj )}(h h]h }(hhhj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj'modnameN classnameNj/ j2 )}j5 ]j8 )}j+ jv'sb c.mas_walkasbuh1hhj'ubj )}(h h]h }(hhhj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubjL )}(hjh]h*}(hhhj'hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj'ubj )}(hmash]hmas}(hhhj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj'ubah}(h]h ]h"]h$]h&]hhuh1j hjB'hhhjT'hMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj>'hhhjT'hMubah}(h]j9'ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM&hj;'hhubj8 )}(hhh]h)}(h&Search for **mas->index** in the tree.h](h Search for }(h Search for hj(hhhNhNubj)}(h**mas->index**h]h mas->index}(hhhj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubh in the tree.}(h in the tree.hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj(hhubah}(h]h ]h"]h$]h&]uh1j7 hj;'hhhjT'hMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j@(jL j@(jM uh1jhhhjhNhNubj )}(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)}(hjJ(h]h Parameters}(hhhjL(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjH(ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM"hjD(ubj2)}(hhh]j7)}(h*``struct ma_state *mas`` The maple state. h](j=)}(h``struct ma_state *mas``h]jm)}(hji(h]hstruct ma_state *mas}(hhhjk(hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjg(ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjc(ubjM)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hj(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~(hMhj(ubah}(h]h ]h"]h$]h&]uh1jLhjc(ubeh}(h]h ]h"]h$]h&]uh1j6hj~(hMhj`(ubah}(h]h ]h"]h$]h&]uh1j1hjD(ubh)}(h**Description**h]j)}(hj(h]h Description}(hhhj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM!hjD(ubh)}(htmas->index and mas->last will be set to the range if there is a value. If mas->status is ma_none, reset to ma_starth]htmas->index and mas->last will be set to the range if there is a value. If mas->status is ma_none, reset to ma_start}(hj(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM!hjD(ubh)}(h **Return**h]j)}(hj(h]hReturn}(hhhj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM$hjD(ubh)}(h&the entry at the location or ``NULL``.h](hthe entry at the location or }(hthe entry at the location or hj(hhhNhNubjm)}(h``NULL``h]hNULL}(hhhj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj(ubh.}(h.hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM$hjD(ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmte_dead_walk (C function)c.mte_dead_walkhNtauh1jhjhhhNhNubj)}(hhh](j)}(hNvoid __rcu ** mte_dead_walk (struct maple_enode **enode, unsigned char offset)h]j )}(hLvoid __rcu **mte_dead_walk(struct maple_enode **enode, unsigned char offset)h](j )}(hvoidh]hvoid}(hhhj$)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj )hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMGubj )}(h h]h }(hhhj3)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj )hhhj2)hMGubh__rcu}(hhhj )hhhNhNubj )}(h h]h }(hhhjE)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj )hhhj2)hMGubjL )}(hjh]h*}(hhhjS)hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj )hhhj2)hMGubjL )}(hjh]h*}(hhhj`)hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj )hhhj2)hMGubj )}(h mte_dead_walkh]j )}(h mte_dead_walkh]h mte_dead_walk}(hhhjq)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm)ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj )hhhj2)hMGubj )}(h2(struct maple_enode **enode, unsigned char offset)h](j )}(hstruct maple_enode **enodeh](j )}(hj h]hstruct}(hhhj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj )}(h h]h }(hhhj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubh)}(hhh]j )}(h maple_enodeh]h maple_enode}(hhhj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj)modnameN classnameNj/ j2 )}j5 ]j8 )}j+ js)sbc.mte_dead_walkasbuh1hhj)ubj )}(h h]h }(hhhj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubjL )}(hjh]h*}(hhhj)hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj)ubjL )}(hjh]h*}(hhhj)hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj)ubj )}(henodeh]henode}(hhhj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj)ubj )}(hunsigned char offseth](j )}(hunsignedh]hunsigned}(hhhj *hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ubj )}(h h]h }(hhhj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ubj )}(hcharh]hchar}(hhhj(*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ubj )}(h h]h }(hhhj6*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*ubj )}(hoffseth]hoffset}(hhhjD*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 )hhhj2)hMGubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj)hhhj2)hMGubah}(h]j)ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMLhj)hhubj8 )}(hhh]h)}(h/Walk down a dead tree to just before the leavesh]h/Walk down a dead tree to just before the leaves}(hjq*hjo*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMFhjl*hhubah}(h]h ]h"]h$]h&]uh1j7 hj)hhhj2)hMGubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j*jL j*jM uh1jhhhjhNhNubj )}(h**Parameters** ``struct maple_enode **enode`` The maple encoded node ``unsigned char offset`` The starting offset **Note** This can only be used from the RCU callback context.h](h)}(h**Parameters**h]j)}(hj*h]h Parameters}(hhhj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMJhj*ubj2)}(hhh](j7)}(h6``struct maple_enode **enode`` The maple encoded node h](j=)}(h``struct maple_enode **enode``h]jm)}(hj*h]hstruct maple_enode **enode}(hhhj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj*ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMGhj*ubjM)}(hhh]h)}(hThe maple encoded nodeh]hThe maple encoded node}(hj*hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMGhj*ubah}(h]h ]h"]h$]h&]uh1jLhj*ubeh}(h]h ]h"]h$]h&]uh1j6hj*hMGhj*ubj7)}(h-``unsigned char offset`` The starting offset h](j=)}(h``unsigned char offset``h]jm)}(hj*h]hunsigned char offset}(hhhj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj*ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMHhj*ubjM)}(hhh]h)}(hThe starting offseth]hThe starting offset}(hj+hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMHhj*ubah}(h]h ]h"]h$]h&]uh1jLhj*ubeh}(h]h ]h"]h$]h&]uh1j6hj*hMHhj*ubeh}(h]h ]h"]h$]h&]uh1j1hj*ubh)}(h**Note**h]j)}(hj$+h]hNote}(hhhj&+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"+ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMJhj*ubh)}(h4This can only be used from the RCU callback context.h]h4This can only be used from the RCU callback context.}(hj<+hj:+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMJhj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_free_walk (C function)c.mt_free_walkhNtauh1jhjhhhNhNubj)}(hhh](j)}(h)void mt_free_walk (struct rcu_head *head)h]j )}(h(void mt_free_walk(struct rcu_head *head)h](j )}(hvoidh]hvoid}(hhhji+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hje+hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM`ubj )}(h h]h }(hhhjx+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hje+hhhjw+hM`ubj )}(h mt_free_walkh]j )}(h mt_free_walkh]h mt_free_walk}(hhhj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+ubah}(h]h ](j j eh"]h$]h&]hhuh1j hje+hhhjw+hM`ubj )}(h(struct rcu_head *head)h]j )}(hstruct rcu_head *headh](j )}(hj h]hstruct}(hhhj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+ubj )}(h h]h }(hhhj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+ubh)}(hhh]j )}(hrcu_headh]hrcu_head}(hhhj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj+modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j+sbc.mt_free_walkasbuh1hhj+ubj )}(h h]h }(hhhj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+ubjL )}(hjh]h*}(hhhj+hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj+ubj )}(hheadh]hhead}(hhhj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj+ubah}(h]h ]h"]h$]h&]hhuh1j hje+hhhjw+hM`ubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hja+hhhjw+hM`ubah}(h]j\+ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMdhj^+hhubj8 )}(hhh]h)}(h.Walk & free a tree in the RCU callback contexth]h.Walk & free a tree in the RCU callback context}(hj,,hj*,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM_hj',hhubah}(h]h ]h"]h$]h&]uh1j7 hj^+hhhjw+hM`ubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jB,jL jB,jM uh1jhhhjhNhNubj )}(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)}(hjL,h]h Parameters}(hhhjN,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ,ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMchjF,ubj2)}(hhh]j7)}(h?``struct rcu_head *head`` The RCU head that's within the node. h](j=)}(h``struct rcu_head *head``h]jm)}(hjk,h]hstruct rcu_head *head}(hhhjm,hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhji,ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM`hje,ubjM)}(hhh]h)}(h$The RCU head that's within the node.h]h&The RCU head that’s within the node.}(hj,hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hM`hj,ubah}(h]h ]h"]h$]h&]uh1jLhje,ubeh}(h]h ]h"]h$]h&]uh1j6hj,hM`hjb,ubah}(h]h ]h"]h$]h&]uh1j1hjF,ubh)}(h**Note**h]j)}(hj,h]hNote}(hhhj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbhjF,ubh)}(h4This can only be used from the RCU callback context.h]h4This can only be used from the RCU callback context.}(hj,hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbhjF,ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_store (C function) c.mas_storehNtauh1jhjhhhNhNubj)}(hhh](j)}(h4void * mas_store (struct ma_state *mas, void *entry)h]j )}(h2void *mas_store(struct ma_state *mas, void *entry)h](j )}(hvoidh]hvoid}(hhhj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM!ubj )}(h h]h }(hhhj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,hhhj,hM!ubjL )}(hjh]h*}(hhhj-hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj,hhhj,hM!ubj )}(h mas_storeh]j )}(h mas_storeh]h mas_store}(hhhj-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, void *entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj5-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1-ubj )}(h h]h }(hhhjB-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1-ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjS-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjP-ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjU-modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j-sb c.mas_storeasbuh1hhj1-ubj )}(h h]h }(hhhjs-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1-ubjL )}(hjh]h*}(hhhj-hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj1-ubj )}(hmash]hmas}(hhhj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1-ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj--ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hhhj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-ubj )}(h h]h }(hhhj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-ubjL )}(hjh]h*}(hhhj-hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj-ubj )}(hentryh]hentry}(hhhj-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,hM!ubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj,hhhj,hM!ubah}(h]j,ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM*hj,hhubj8 )}(hhh]h)}(hStore an **entry**.h](h Store an }(h Store an hj-hhhNhNubj)}(h **entry**h]hentry}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubh.}(hj(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hj-hhubah}(h]h ]h"]h$]h&]uh1j7 hj,hhhj,hM!ubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j&.jL j&.jM uh1jhhhjhNhNubj )}(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**. **Note** The **mas** should have pre-allocated entries to ensure there is memory to store the entry. Please see mas_expected_entries()/mas_destroy() for more details. **Return** the first entry between mas->index and mas->last or ``NULL``.h](h)}(h**Parameters**h]j)}(hj0.h]h Parameters}(hhhj2.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj..ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM$hj*.ubj2)}(hhh](j7)}(h*``struct ma_state *mas`` The maple state. h](j=)}(h``struct ma_state *mas``h]jm)}(hjO.h]hstruct ma_state *mas}(hhhjQ.hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjM.ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM!hjI.ubjM)}(hhh]h)}(hThe maple state.h]hThe maple state.}(hjj.hjh.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd.hM!hje.ubah}(h]h ]h"]h$]h&]uh1jLhjI.ubeh}(h]h ]h"]h$]h&]uh1j6hjd.hM!hjF.ubj7)}(h$``void *entry`` The entry to store. h](j=)}(h``void *entry``h]jm)}(hj.h]h void *entry}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj.ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM"hj.ubjM)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hj.hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hM"hj.ubah}(h]h ]h"]h$]h&]uh1jLhj.ubeh}(h]h ]h"]h$]h&]uh1j6hj.hM"hjF.ubeh}(h]h ]h"]h$]h&]uh1j1hj*.ubh)}(h**Description**h]j)}(hj.h]h Description}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM$hj*.ubh)}(hPThe **mas->index** and **mas->last** is used to set the range for the **entry**.h](hThe }(hThe hj.hhhNhNubj)}(h**mas->index**h]h mas->index}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh and }(h and hj.hhhNhNubj)}(h **mas->last**h]h mas->last}(hhhj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh" is used to set the range for the }(h" is used to set the range for the hj.hhhNhNubj)}(h **entry**h]hentry}(hhhj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh.}(hj(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM$hj*.ubh)}(h**Note**h]j)}(hj#/h]hNote}(hhhj%/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!/ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM&hj*.ubh)}(hThe **mas** should have pre-allocated entries to ensure there is memory to store the entry. Please see mas_expected_entries()/mas_destroy() for more details.h](hThe }(hThe hj9/hhhNhNubj)}(h**mas**h]hmas}(hhhjB/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9/ubh should have pre-allocated entries to ensure there is memory to store the entry. Please see mas_expected_entries()/mas_destroy() for more details.}(h should have pre-allocated entries to ensure there is memory to store the entry. Please see mas_expected_entries()/mas_destroy() for more details.hj9/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM%hj*.ubh)}(h **Return**h]j)}(hj^/h]hReturn}(hhhj`/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\/ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM(hj*.ubh)}(h=the first entry between mas->index and mas->last or ``NULL``.h](h4the first entry between mas->index and mas->last or }(h4the first entry between mas->index and mas->last or hjt/hhhNhNubjm)}(h``NULL``h]hNULL}(hhhj}/hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjt/ubh.}(hj(hjt/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM(hj*.ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_store_gfp (C function)c.mas_store_gfphNtauh1jhjhhhNhNubj)}(hhh](j)}(h@int mas_store_gfp (struct ma_state *mas, void *entry, gfp_t gfp)h]j )}(h?int mas_store_gfp(struct ma_state *mas, void *entry, gfp_t gfp)h](j )}(hinth]hint}(hhhj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMHubj )}(h h]h }(hhhj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/hhhj/hMHubj )}(h mas_store_gfph]j )}(h mas_store_gfph]h mas_store_gfp}(hhhj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj/hhhj/hMHubj )}(h.(struct ma_state *mas, void *entry, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/ubj )}(h h]h }(hhhj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj0modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j/sbc.mas_store_gfpasbuh1hhj/ubj )}(h h]h }(hhhj10hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/ubjL )}(hjh]h*}(hhhj?0hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj/ubj )}(hmash]hmas}(hhhjL0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj/ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hhhje0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hja0ubj )}(h h]h }(hhhjs0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hja0ubjL )}(hjh]h*}(hhhj0hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hja0ubj )}(hentryh]hentry}(hhhj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hja0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj/ubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hhhj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj0modnameN classnameNj/ j2 )}j5 ]j-0c.mas_store_gfpasbuh1hhj0ubj )}(h h]h }(hhhj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj )}(hgfph]hgfp}(hhhj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj/ubeh}(h]h ]h"]h$]h&]hhuh1j hj/hhhj/hMHubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj/hhhj/hMHubah}(h]j/ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMOhj/hhubj8 )}(hhh]h)}(hStore a value into the tree.h]hStore a value into the tree.}(hj1hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMGhj0hhubah}(h]h ]h"]h$]h&]uh1j7 hj/hhhj/hMHubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j1jL j1jM uh1jhhhjhNhNubj )}(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)}(hj#1h]h Parameters}(hhhj%1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!1ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMKhj1ubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hjB1h]hstruct ma_state *mas}(hhhjD1hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj@1ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMHhj<1ubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj]1hj[1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjW1hMHhjX1ubah}(h]h ]h"]h$]h&]uh1jLhj<1ubeh}(h]h ]h"]h$]h&]uh1j6hjW1hMHhj91ubj7)}(h#``void *entry`` The entry to store h](j=)}(h``void *entry``h]jm)}(hj{1h]h void *entry}(hhhj}1hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjy1ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMIhju1ubjM)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hj1hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMIhj1ubah}(h]h ]h"]h$]h&]uh1jLhju1ubeh}(h]h ]h"]h$]h&]uh1j6hj1hMIhj91ubj7)}(hA``gfp_t gfp`` The GFP_FLAGS to use for allocations if necessary. h](j=)}(h ``gfp_t gfp``h]jm)}(hj1h]h gfp_t gfp}(hhhj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj1ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMJhj1ubjM)}(hhh]h)}(h2The GFP_FLAGS to use for allocations if necessary.h]h2The GFP_FLAGS to use for allocations if necessary.}(hj1hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMJhj1ubah}(h]h ]h"]h$]h&]uh1jLhj1ubeh}(h]h ]h"]h$]h&]uh1j6hj1hMJhj91ubeh}(h]h ]h"]h$]h&]uh1j1hj1ubh)}(h **Return**h]j)}(hj1h]hReturn}(hhhj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMLhj1ubh)}(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.}(hj2hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMLhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_store_prealloc (C function)c.mas_store_preallochNtauh1jhjhhhNhNubj)}(hhh](j)}(h;void mas_store_prealloc (struct ma_state *mas, void *entry)h]j )}(h:void mas_store_prealloc(struct ma_state *mas, void *entry)h](j )}(hvoidh]hvoid}(hhhj42hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj02hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMcubj )}(h h]h }(hhhjC2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj02hhhjB2hMcubj )}(hmas_store_prealloch]j )}(hmas_store_prealloch]hmas_store_prealloc}(hhhjU2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQ2ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj02hhhjB2hMcubj )}(h#(struct ma_state *mas, void *entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhjq2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm2ubj )}(h h]h }(hhhj~2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm2ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj2modnameN classnameNj/ j2 )}j5 ]j8 )}j+ jW2sbc.mas_store_preallocasbuh1hhjm2ubj )}(h h]h }(hhhj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm2ubjL )}(hjh]h*}(hhhj2hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjm2ubj )}(hmash]hmas}(hhhj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjm2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hji2ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hhhj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubj )}(h h]h }(hhhj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubjL )}(hjh]h*}(hhhj2hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj2ubj )}(hentryh]hentry}(hhhj 3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hji2ubeh}(h]h ]h"]h$]h&]hhuh1j hj02hhhjB2hMcubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj,2hhhjB2hMcubah}(h]j'2ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMghj)2hhubj8 )}(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.}(hj93hj73hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbhj43hhubah}(h]h ]h"]h$]h&]uh1j7 hj)2hhhjB2hMcubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jO3jL jO3jM uh1jhhhjhNhNubj )}(ha**Parameters** ``struct ma_state *mas`` The maple state ``void *entry`` The entry to store.h](h)}(h**Parameters**h]j)}(hjY3h]h Parameters}(hhhj[3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjW3ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMfhjS3ubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hjx3h]hstruct ma_state *mas}(hhhjz3hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjv3ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMdhjr3ubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj3hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMdhj3ubah}(h]h ]h"]h$]h&]uh1jLhjr3ubeh}(h]h ]h"]h$]h&]uh1j6hj3hMdhjo3ubj7)}(h#``void *entry`` The entry to store.h](j=)}(h``void *entry``h]jm)}(hj3h]h void *entry}(hhhj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj3ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMfhj3ubjM)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hj3hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMehj3ubah}(h]h ]h"]h$]h&]uh1jLhj3ubeh}(h]h ]h"]h$]h&]uh1j6hj3hMfhjo3ubeh}(h]h ]h"]h$]h&]uh1j1hjS3ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_preallocate (C function)c.mas_preallocatehNtauh1jhjhhhNhNubj)}(hhh](j)}(hBint mas_preallocate (struct ma_state *mas, void *entry, gfp_t gfp)h]j )}(hAint mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp)h](j )}(hinth]hint}(hhhj 4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMuubj )}(h h]h }(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4hhhj4hMuubj )}(hmas_preallocateh]j )}(hmas_preallocateh]hmas_preallocate}(hhhj,4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(4ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj4hhhj4hMuubj )}(h.(struct ma_state *mas, void *entry, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhjH4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjD4ubj )}(h h]h }(hhhjU4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjD4ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjf4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjc4ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjh4modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j.4sbc.mas_preallocateasbuh1hhjD4ubj )}(h h]h }(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjD4ubjL )}(hjh]h*}(hhhj4hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjD4ubj )}(hmash]hmas}(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjD4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@4ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubj )}(h h]h }(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubjL )}(hjh]h*}(hhhj4hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj4ubj )}(hentryh]hentry}(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@4ubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hhhj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj5modnameN classnameNj/ j2 )}j5 ]j4c.mas_preallocateasbuh1hhj4ubj )}(h h]h }(hhhj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubj )}(hgfph]hgfp}(hhhj+5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj@4ubeh}(h]h ]h"]h$]h&]hhuh1j hj4hhhj4hMuubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj4hhhj4hMuubah}(h]j3ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM{hj4hhubj8 )}(hhh]h)}(h.Preallocate enough nodes for a store operationh]h.Preallocate enough nodes for a store operation}(hjX5hjV5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMthjS5hhubah}(h]h ]h"]h$]h&]uh1j7 hj4hhhj4hMuubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jn5jL jn5jM uh1jhhhjhNhNubj )}(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)}(hjx5h]h Parameters}(hhhjz5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv5ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMxhjr5ubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hj5h]hstruct ma_state *mas}(hhhj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj5ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMuhj5ubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj5hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMuhj5ubah}(h]h ]h"]h$]h&]uh1jLhj5ubeh}(h]h ]h"]h$]h&]uh1j6hj5hMuhj5ubj7)}(h.``void *entry`` The entry that will be stored h](j=)}(h``void *entry``h]jm)}(hj5h]h void *entry}(hhhj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj5ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMvhj5ubjM)}(hhh]h)}(hThe entry that will be storedh]hThe entry that will be stored}(hj5hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMvhj5ubah}(h]h ]h"]h$]h&]uh1jLhj5ubeh}(h]h ]h"]h$]h&]uh1j6hj5hMvhj5ubj7)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j=)}(h ``gfp_t gfp``h]jm)}(hj 6h]h gfp_t gfp}(hhhj 6hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj6ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMwhj6ubjM)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hj$6hj"6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hMwhj6ubah}(h]h ]h"]h$]h&]uh1jLhj6ubeh}(h]h ]h"]h$]h&]uh1j6hj6hMwhj5ubeh}(h]h ]h"]h$]h&]uh1j1hjr5ubh)}(h **Return**h]j)}(hjD6h]hReturn}(hhhjF6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB6ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMyhjr5ubh)}(h70 on success, -ENOMEM if memory could not be allocated.h]h70 on success, -ENOMEM if memory could not be allocated.}(hj\6hjZ6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMyhjr5ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_next (C function) c.mas_nexthNtauh1jhjhhhNhNubj)}(hhh](j)}(h9void * mas_next (struct ma_state *mas, unsigned long max)h]j )}(h7void *mas_next(struct ma_state *mas, unsigned long max)h](j )}(hvoidh]hvoid}(hhhj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMoubj )}(h h]h }(hhhj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6hhhj6hMoubjL )}(hjh]h*}(hhhj6hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj6hhhj6hMoubj )}(hmas_nexth]j )}(hmas_nexth]hmas_next}(hhhj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj6hhhj6hMoubj )}(h)(struct ma_state *mas, unsigned long max)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubj )}(h h]h }(hhhj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj6modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j6sb c.mas_nextasbuh1hhj6ubj )}(h h]h }(hhhj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubjL )}(hjh]h*}(hhhj7hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj6ubj )}(hmash]hmas}(hhhj,7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj6ubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hhhjE7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjA7ubj )}(h h]h }(hhhjS7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjA7ubj )}(hlongh]hlong}(hhhja7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjA7ubj )}(h h]h }(hhhjo7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjA7ubj )}(hmaxh]hmax}(hhhj}7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjA7ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj6ubeh}(h]h ]h"]h$]h&]hhuh1j hj6hhhj6hMoubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj6hhhj6hMoubah}(h]j|6ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMxhj~6hhubj8 )}(hhh]h)}(hGet the next entry.h]hGet the next entry.}(hj7hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMnhj7hhubah}(h]h ]h"]h$]h&]uh1j7 hj~6hhhj6hMoubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j7jL j7jM uh1jhhhjhNhNubj )}(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)}(hj7h]h Parameters}(hhhj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMrhj7ubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hj7h]hstruct ma_state *mas}(hhhj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj7ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMohj7ubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj8hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMohj7ubah}(h]h ]h"]h$]h&]uh1jLhj7ubeh}(h]h ]h"]h$]h&]uh1j6hj7hMohj7ubj7)}(h2``unsigned long max`` The maximum index to check. h](j=)}(h``unsigned long max``h]jm)}(hj"8h]hunsigned long max}(hhhj$8hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj 8ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMphj8ubjM)}(hhh]h)}(hThe maximum index to check.h]hThe maximum index to check.}(hj=8hj;8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj78hMphj88ubah}(h]h ]h"]h$]h&]uh1jLhj8ubeh}(h]h ]h"]h$]h&]uh1j6hj78hMphj7ubeh}(h]h ]h"]h$]h&]uh1j1hj7ubh)}(h**Description**h]j)}(hj]8h]h Description}(hhhj_8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[8ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMrhj7ubh)}(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 }(hReturns the next entry after hjs8hhhNhNubj)}(h**mas->index**h]h mas->index}(hhhj|8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs8ubhG. Must hold rcu_read_lock or the write lock. Can return the zero entry.}(hG. Must hold rcu_read_lock or the write lock. Can return the zero entry.hjs8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMrhj7ubh)}(h **Return**h]j)}(hj8h]hReturn}(hhhj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMvhj7ubh)}(hThe next entry or ``NULL``h](hThe next entry or }(hThe next entry or hj8hhhNhNubjm)}(h``NULL``h]hNULL}(hhhj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj8ubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMvhj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_next_range (C function)c.mas_next_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(h?void * mas_next_range (struct ma_state *mas, unsigned long max)h]j )}(h=void *mas_next_range(struct ma_state *mas, unsigned long max)h](j )}(hvoidh]hvoid}(hhhj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj8hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj8hhhj8hMubjL )}(hjh]h*}(hhhj 9hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj8hhhj8hMubj )}(hmas_next_rangeh]j )}(hmas_next_rangeh]hmas_next_range}(hhhj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj8hhhj8hMubj )}(h)(struct ma_state *mas, unsigned long max)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj69hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj29ubj )}(h h]h }(hhhjC9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj29ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjT9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQ9ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjV9modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j9sbc.mas_next_rangeasbuh1hhj29ubj )}(h h]h }(hhhjt9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj29ubjL )}(hjh]h*}(hhhj9hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj29ubj )}(hmash]hmas}(hhhj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj29ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj.9ubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hhhj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9ubj )}(h h]h }(hhhj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9ubj )}(hlongh]hlong}(hhhj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9ubj )}(h h]h }(hhhj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9ubj )}(hmaxh]hmax}(hhhj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj9ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj.9ubeh}(h]h ]h"]h$]h&]hhuh1j hj8hhhj8hMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj8hhhj8hMubah}(h]j8ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj8hhubj8 )}(hhh]h)}(h)Advance the maple state to the next rangeh]h)Advance the maple state to the next range}(hj :hj :hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj:hhubah}(h]h ]h"]h$]h&]uh1j7 hj8hhhj8hMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j#:jL j#:jM uh1jhhhjhNhNubj )}(hX#**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long max`` The maximum index to check. **Description** Sets **mas->index** and **mas->last** to the range. Must hold rcu_read_lock or the write lock. Can return the zero entry. **Return** The next entry or ``NULL``h](h)}(h**Parameters**h]j)}(hj-:h]h Parameters}(hhhj/:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+:ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj':ubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hjL:h]hstruct ma_state *mas}(hhhjN:hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjJ:ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjF:ubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjg:hje:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhja:hMhjb:ubah}(h]h ]h"]h$]h&]uh1jLhjF:ubeh}(h]h ]h"]h$]h&]uh1j6hja:hMhjC:ubj7)}(h2``unsigned long max`` The maximum index to check. h](j=)}(h``unsigned long max``h]jm)}(hj:h]hunsigned long max}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj:ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj:ubjM)}(hhh]h)}(hThe maximum index to check.h]hThe maximum index to check.}(hj:hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMhj:ubah}(h]h ]h"]h$]h&]uh1jLhj:ubeh}(h]h ]h"]h$]h&]uh1j6hj:hMhjC:ubeh}(h]h ]h"]h$]h&]uh1j1hj':ubh)}(h**Description**h]j)}(hj:h]h Description}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj':ubh)}(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 }(hSets hj:hhhNhNubj)}(h**mas->index**h]h mas->index}(hhhj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubh and }(h and hj:hhhNhNubj)}(h **mas->last**h]h mas->last}(hhhj: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.}(hT to the range. Must hold rcu_read_lock or the write lock. Can return the zero entry.hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj':ubh)}(h **Return**h]j)}(hj;h]hReturn}(hhhj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ;ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj':ubh)}(hThe next entry or ``NULL``h](hThe next entry or }(hThe next entry or hj$;hhhNhNubjm)}(h``NULL``h]hNULL}(hhhj-;hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj$;ubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj':ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_next (C function) c.mt_nexthNtauh1jhjhhhNhNubj)}(hhh](j)}(hNvoid * mt_next (struct maple_tree *mt, unsigned long index, unsigned long max)h]j )}(hLvoid *mt_next(struct maple_tree *mt, unsigned long index, unsigned long max)h](j )}(hvoidh]hvoid}(hhhjb;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj^;hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhjq;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj^;hhhjp;hMubjL )}(hjh]h*}(hhhj;hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj^;hhhjp;hMubj )}(hmt_nexth]j )}(hmt_nexth]hmt_next}(hhhj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj^;hhhjp;hMubj )}(h?(struct maple_tree *mt, unsigned long index, unsigned long max)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hhhj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubj )}(h h]h }(hhhj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj;modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j;sb c.mt_nextasbuh1hhj;ubj )}(h h]h }(hhhj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubjL )}(hjh]h*}(hhhj;hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj;ubj )}(hmth]hmt}(hhhj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;ubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hhhj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<ubj )}(h h]h }(hhhj,<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<ubj )}(hlongh]hlong}(hhhj:<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<ubj )}(h h]h }(hhhjH<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<ubj )}(hindexh]hindex}(hhhjV<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;ubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hhhjo<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjk<ubj )}(h h]h }(hhhj}<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjk<ubj )}(hlongh]hlong}(hhhj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjk<ubj )}(h h]h }(hhhj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjk<ubj )}(hmaxh]hmax}(hhhj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjk<ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;ubeh}(h]h ]h"]h$]h&]hhuh1j hj^;hhhjp;hMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjZ;hhhjp;hMubah}(h]jU;ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjW;hhubj8 )}(hhh]h)}(h$get the next value in the maple treeh]h$get the next value in the maple tree}(hj<hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj<hhubah}(h]h ]h"]h$]h&]uh1j7 hjW;hhhjp;hMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j<jL j<jM uh1jhhhjhNhNubj )}(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)}(hj<h]h Parameters}(hhhj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj<ubj2)}(hhh](j7)}(h)``struct maple_tree *mt`` The maple tree h](j=)}(h``struct maple_tree *mt``h]jm)}(hj=h]hstruct maple_tree *mt}(hhhj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj=ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj =ubjM)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hj.=hj,=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(=hMhj)=ubah}(h]h ]h"]h$]h&]uh1jLhj =ubeh}(h]h ]h"]h$]h&]uh1j6hj(=hMhj =ubj7)}(h(``unsigned long index`` The start index h](j=)}(h``unsigned long index``h]jm)}(hjL=h]hunsigned long index}(hhhjN=hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjJ=ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjF=ubjM)}(hhh]h)}(hThe start indexh]hThe start index}(hjg=hje=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhja=hMhjb=ubah}(h]h ]h"]h$]h&]uh1jLhjF=ubeh}(h]h ]h"]h$]h&]uh1j6hja=hMhj =ubj7)}(h1``unsigned long max`` The maximum index to check Ah](j=)}(h``unsigned long max``h]jm)}(hj=h]hunsigned long max}(hhhj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj=ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj=ubjM)}(hhh]h)}(hThe maximum index to checkh]hThe maximum index to check}(hj=hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hMhj=ubah}(h]h ]h"]h$]h&]uh1jLhj=ubeh}(h]h ]h"]h$]h&]uh1j6hj=hMhj =ubeh}(h]h ]h"]h$]h&]uh1j1hj<ubh)}(h**Description**h]j)}(hj=h]h Description}(hhhj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj<ubh)}(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}(hj=hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj<ubh)}(h **Return**h]j)}(hj=h]hReturn}(hhhj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj<ubh)}(h@The entry higher than **index** or ``NULL`` if nothing is found.h](hThe entry higher than }(hThe entry higher than hj=hhhNhNubj)}(h **index**h]hindex}(hhhj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubh or }(h or hj=hhhNhNubjm)}(h``NULL``h]hNULL}(hhhj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj=ubh if nothing is found.}(h if nothing is found.hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_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}(hhhjS>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjO>hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhjb>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjO>hhhja>hMubjL )}(hjh]h*}(hhhjp>hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjO>hhhja>hMubj )}(hmas_prevh]j )}(hmas_prevh]hmas_prev}(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj}>ubah}(h]h ](j j eh"]h$]h&]hhuh1j hjO>hhhja>hMubj )}(h)(struct ma_state *mas, unsigned long min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubj )}(h h]h }(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj>modnameN classnameNj/ j2 )}j5 ]j8 )}j+ j>sb c.mas_prevasbuh1hhj>ubj )}(h h]h }(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubjL )}(hjh]h*}(hhhj>hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj>ubj )}(hmash]hmas}(hhhj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj>ubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hhhj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ?ubj )}(h h]h }(hhhj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ?ubj )}(hlongh]hlong}(hhhj+?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ?ubj )}(h h]h }(hhhj9?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ?ubj )}(hminh]hmin}(hhhjG?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ?ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj>ubeh}(h]h ]h"]h$]h&]hhuh1j hjO>hhhja>hMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjK>hhhja>hMubah}(h]jF>ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjH>hhubj8 )}(hhh]h)}(hGet the previous entryh]hGet the previous entry}(hjt?hjr?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjo?hhubah}(h]h ]h"]h$]h&]uh1j7 hjH>hhhja>hMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j?jL j?jM uh1jhhhjhNhNubj )}(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)}(hj?h]h Parameters}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj?ubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hj?h]hstruct ma_state *mas}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj?ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj?ubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj?hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jLhj?ubeh}(h]h ]h"]h$]h&]uh1j6hj?hMhj?ubj7)}(h2``unsigned long min`` The minimum value to check. h](j=)}(h``unsigned long min``h]jm)}(hj?h]hunsigned long min}(hhhj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj?ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj?ubjM)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hj@hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hMhj@ubah}(h]h ]h"]h$]h&]uh1jLhj?ubeh}(h]h ]h"]h$]h&]uh1j6hj@hMhj?ubeh}(h]h ]h"]h$]h&]uh1j1hj?ubh)}(h**Description**h]j)}(hj'@h]h Description}(hhhj)@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%@ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj?ubh)}(hMust hold 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?@hj=@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj?ubh)}(h **Return**h]j)}(hjN@h]hReturn}(hhhjP@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL@ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj?ubh)}(hthe previous value or ``NULL``.h](hthe previous value or }(hthe previous value or hjd@hhhNhNubjm)}(h``NULL``h]hNULL}(hhhjm@hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjd@ubh.}(hj(hjd@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_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}(hhhj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@hhhj@hMubjL )}(hjh]h*}(hhhj@hhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj@hhhj@hMubj )}(hmas_prev_rangeh]j )}(hmas_prev_rangeh]hmas_prev_range}(hhhj@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 min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@ubj )}(h h]h }(hhhj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@ubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Aubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjAmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ j@sbc.mas_prev_rangeasbuh1hhj@ubj )}(h h]h }(hhhj.AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@ubjL )}(hjh]h*}(hhhjindex** 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)}(hjAh]h Parameters}(hhhjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjAubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hjBh]hstruct ma_state *mas}(hhhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjBubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjBubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hj!BhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMhjBubah}(h]h ]h"]h$]h&]uh1jLhjBubeh}(h]h ]h"]h$]h&]uh1j6hjBhMhjAubj7)}(h2``unsigned long min`` The minimum value to check. h](j=)}(h``unsigned long min``h]jm)}(hj?Bh]hunsigned long min}(hhhjABhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj=Bubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hj9BubjM)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hjZBhjXBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjTBhM hjUBubah}(h]h ]h"]h$]h&]uh1jLhj9Bubeh}(h]h ]h"]h$]h&]uh1j6hjTBhM hjAubeh}(h]h ]h"]h$]h&]uh1j1hjAubh)}(h**Description**h]j)}(hjzBh]h Description}(hhhj|BhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxBubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjAubh)}(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 }(hSets hjBhhhNhNubj)}(h**mas->index**h]h mas->index}(hhhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh and }(h and hjBhhhNhNubj)}(h **mas->last**h]h mas->last}(hhhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh 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 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.hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjAubh)}(h **Return**h]j)}(hjBh]hReturn}(hhhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjAubh)}(hthe previous value or ``NULL``.h](hthe previous value or }(hthe previous value or hjBhhhNhNubjm)}(h``NULL``h]hNULL}(hhhjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjBubh.}(hj(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjAubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmt_prev (C function) c.mt_prevhNtauh1jhjhhhNhNubj)}(hhh](j)}(hNvoid * mt_prev (struct maple_tree *mt, unsigned long index, unsigned long min)h]j )}(hLvoid *mt_prev(struct maple_tree *mt, unsigned long index, unsigned long min)h](j )}(hvoidh]hvoid}(hhhj ChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjChhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhj/ChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjChhhj.ChMubjL )}(hjh]h*}(hhhj=ChhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjChhhj.ChMubj )}(hmt_prevh]j )}(hmt_prevh]hmt_prev}(hhhjNChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJCubah}(h]h ](j j eh"]h$]h&]hhuh1j hjChhhj.ChMubj )}(h?(struct maple_tree *mt, unsigned long index, unsigned long min)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hhhjjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfCubj )}(h h]h }(hhhjwChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfCubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjCmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jPCsb c.mt_prevasbuh1hhjfCubj )}(h h]h }(hhhjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfCubjL )}(hjh]h*}(hhhjChhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjfCubj )}(hmth]hmt}(hhhjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfCubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjbCubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hhhjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubj )}(h h]h }(hhhjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubj )}(hlongh]hlong}(hhhjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubj )}(h h]h }(hhhjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubj )}(hindexh]hindex}(hhhjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjbCubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hhhj-DhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)Dubj )}(h h]h }(hhhj;DhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)Dubj )}(hlongh]hlong}(hhhjIDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)Dubj )}(h h]h }(hhhjWDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)Dubj )}(hminh]hmin}(hhhjeDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)Dubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjbCubeh}(h]h ]h"]h$]h&]hhuh1j hjChhhj.ChMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjChhhj.ChMubah}(h]jCah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM)hjChhubj8 )}(hhh]h)}(h(get the previous value in the maple treeh]h(get the previous value in the maple tree}(hjDhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjDhhubah}(h]h ]h"]h$]h&]uh1j7 hjChhhj.ChMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jDjL jDjM uh1jhhhjhNhNubj )}(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)}(hjDh]h Parameters}(hhhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM"hjDubj2)}(hhh](j7)}(h)``struct maple_tree *mt`` The maple tree h](j=)}(h``struct maple_tree *mt``h]jm)}(hjDh]hstruct maple_tree *mt}(hhhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjDubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjDubjM)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjDhjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjDubah}(h]h ]h"]h$]h&]uh1jLhjDubeh}(h]h ]h"]h$]h&]uh1j6hjDhMhjDubj7)}(h(``unsigned long index`` The start index h](j=)}(h``unsigned long index``h]jm)}(hj Eh]hunsigned long index}(hhhj EhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjEubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjEubjM)}(hhh]h)}(hThe start indexh]hThe start index}(hj%Ehj#EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhM hj Eubah}(h]h ]h"]h$]h&]uh1jLhjEubeh}(h]h ]h"]h$]h&]uh1j6hjEhM hjDubj7)}(h1``unsigned long min`` The minimum index to check h](j=)}(h``unsigned long min``h]jm)}(hjCEh]hunsigned long min}(hhhjEEhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjAEubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM!hj=EubjM)}(hhh]h)}(hThe minimum index to checkh]hThe minimum index to check}(hj^Ehj\EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXEhM!hjYEubah}(h]h ]h"]h$]h&]uh1jLhj=Eubeh}(h]h ]h"]h$]h&]uh1j6hjXEhM!hjDubeh}(h]h ]h"]h$]h&]uh1j1hjDubh)}(h**Description**h]j)}(hj~Eh]h Description}(hhhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|Eubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM#hjDubh)}(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}(hjEhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM#hjDubh)}(h **Return**h]j)}(hjEh]hReturn}(hhhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM'hjDubh)}(h;The entry before **index** or ``NULL`` if nothing is found.h](hThe entry before }(hThe entry before hjEhhhNhNubj)}(h **index**h]hindex}(hhhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubh or }(h or hjEhhhNhNubjm)}(h``NULL``h]hNULL}(hhhjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjEubh if nothing is found.}(h if nothing is found.hjEhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM'hjDubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_pause (C function) c.mas_pausehNtauh1jhjhhhNhNubj)}(hhh](j)}(h%void mas_pause (struct ma_state *mas)h]j )}(h$void mas_pause(struct ma_state *mas)h](j )}(hvoidh]hvoid}(hhhjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj FhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM7ubj )}(h h]h }(hhhj FhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj FhhhjFhM7ubj )}(h mas_pauseh]j )}(h mas_pauseh]h mas_pause}(hhhj2FhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.Fubah}(h]h ](j j eh"]h$]h&]hhuh1j hj FhhhjFhM7ubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhjNFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJFubj )}(h h]h }(hhhj[FhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJFubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjlFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiFubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjnFmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ j4Fsb c.mas_pauseasbuh1hhjJFubj )}(h h]h }(hhhjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJFubjL )}(hjh]h*}(hhhjFhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjJFubj )}(hmash]hmas}(hhhjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJFubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjFFubah}(h]h ]h"]h$]h&]hhuh1j hj FhhhjFhM7ubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj FhhhjFhM7ubah}(h]jFah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMBhjFhhubj8 )}(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.}(hjFhjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM6hjFhhubah}(h]h ]h"]h$]h&]uh1j7 hjFhhhjFhM7ubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jFjL jFjM uh1jhhhjhNhNubj )}(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)}(hjFh]h Parameters}(hhhjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM:hjFubj2)}(hhh]j7)}(h2``struct ma_state *mas`` The maple state to pause h](j=)}(h``struct ma_state *mas``h]jm)}(hjGh]hstruct ma_state *mas}(hhhjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjGubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM7hj GubjM)}(hhh]h)}(hThe maple state to pauseh]hThe maple state to pause}(hj.Ghj,GhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(GhM7hj)Gubah}(h]h ]h"]h$]h&]uh1jLhj Gubeh}(h]h ]h"]h$]h&]uh1j6hj(GhM7hj Gubah}(h]h ]h"]h$]h&]uh1j1hjFubh)}(h**Description**h]j)}(hjNGh]h Description}(hhhjPGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLGubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM9hjFubh)}(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 }(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 hjdGhhhNhNubj)}(h**mas**h]hmas}(hhhjmGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdGubh 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 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.hjdGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM9hjFubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_find_setup (C function)c.mas_find_setuphNtauh1jhjhhhNhNubj)}(hhh](j)}(hKbool mas_find_setup (struct ma_state *mas, unsigned long max, void **entry)h]j )}(hJbool mas_find_setup(struct ma_state *mas, unsigned long max, void **entry)h](j )}(hj h]hbool}(hhhjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMKubj )}(h h]h }(hhhjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGhhhjGhMKubj )}(hmas_find_setuph]j )}(hmas_find_setuph]hmas_find_setup}(hhhjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubah}(h]h ](j j eh"]h$]h&]hhuh1j hjGhhhjGhMKubj )}(h7(struct ma_state *mas, unsigned long max, void **entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubj )}(h h]h }(hhhjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjHmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jGsbc.mas_find_setupasbuh1hhjGubj )}(h h]h }(hhhj!HhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubjL )}(hjh]h*}(hhhj/HhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjGubj )}(hmash]hmas}(hhhjindex 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 }(h?On the first call, find the entry at or after mas->index up to hjYKhhhNhNubjm)}(h``max``h]hmax}(hhhjbKhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjYKubh-. Otherwise, find the entry after mas->index.}(h-. Otherwise, find the entry after mas->index.hjYKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjVKhhubah}(h]h ]h"]h$]h&]uh1j7 hj/JhhhjHJhMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jKjL jKjM uh1jhhhjhNhNubj )}(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)}(hjKh]h Parameters}(hhhjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hjKh]hstruct ma_state *mas}(hhhjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjKubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjKhjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhMhjKubah}(h]h ]h"]h$]h&]uh1jLhjKubeh}(h]h ]h"]h$]h&]uh1j6hjKhMhjKubj7)}(h2``unsigned long max`` The maximum value to check. h](j=)}(h``unsigned long max``h]jm)}(hjKh]hunsigned long max}(hhhjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjKubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubjM)}(hhh]h)}(hThe maximum value to check.h]hThe maximum value to check.}(hjLhjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhMhjKubah}(h]h ]h"]h$]h&]uh1jLhjKubeh}(h]h ]h"]h$]h&]uh1j6hjKhMhjKubeh}(h]h ]h"]h$]h&]uh1j1hjKubh)}(h**Description**h]j)}(hj"Lh]h Description}(hhhj$LhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Lubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubh)}(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 }(hoMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set hj8LhhhNhNubj)}(h**mas->status**h]h mas->status}(hhhjALhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8Lubh to ma_overflow.}(h to ma_overflow.hj8LhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubh)}(h **Return**h]j)}(hj]Lh]hReturn}(hhhj_LhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[Lubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubh)}(hThe entry or ``NULL``.h](h The entry or }(h The entry or hjsLhhhNhNubjm)}(h``NULL``h]hNULL}(hhhj|LhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjsLubh.}(hj(hjsLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjKubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_find_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}(hhhjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLhhhjLhMubjL )}(hjh]h*}(hhhjLhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjLhhhjLhMubj )}(hmas_find_rangeh]j )}(hmas_find_rangeh]hmas_find_range}(hhhjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubah}(h]h ](j j eh"]h$]h&]hhuh1j hjLhhhjLhMubj )}(h)(struct ma_state *mas, unsigned long max)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubj )}(h h]h }(hhhj MhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjMubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjMmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jLsbc.mas_find_rangeasbuh1hhjLubj )}(h h]h }(hhhj=MhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubjL )}(hjh]h*}(hhhjKMhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjLubj )}(hmash]hmas}(hhhjXMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjLubj )}(hunsigned long maxh](j )}(hunsignedh]hunsigned}(hhhjqMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmMubj )}(h h]h }(hhhjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmMubj )}(hlongh]hlong}(hhhjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmMubj )}(h h]h }(hhhjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmMubj )}(hmaxh]hmax}(hhhjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmMubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjLubeh}(h]h ]h"]h$]h&]hhuh1j hjLhhhjLhMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjLhhhjLhMubah}(h]jLah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjLhhubj8 )}(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 }(h?On the first call, find the entry at or after mas->index up to hjMhhhNhNubjm)}(h``max``h]hmax}(hhhjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjMubh1. Otherwise, advance to the next slot mas->index.}(h1. Otherwise, advance to the next slot mas->index.hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjMhhubah}(h]h ]h"]h$]h&]uh1j7 hjLhhhjLhMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jNjL jNjM uh1jhhhjhNhNubj )}(hX4**Parameters** ``struct ma_state *mas`` The maple state ``unsigned long max`` The maximum value to check. **Description** Must hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set **mas->status** to ma_overflow. **Return** The entry or ``NULL``.h](h)}(h**Parameters**h]j)}(hj Nh]h Parameters}(hhhj NhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjNubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hj)Nh]hstruct ma_state *mas}(hhhj+NhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj'Nubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj#NubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjDNhjBNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>NhMhj?Nubah}(h]h ]h"]h$]h&]uh1jLhj#Nubeh}(h]h ]h"]h$]h&]uh1j6hj>NhMhj Nubj7)}(h2``unsigned long max`` The maximum value to check. h](j=)}(h``unsigned long max``h]jm)}(hjbNh]hunsigned long max}(hhhjdNhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj`Nubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj\NubjM)}(hhh]h)}(hThe maximum value to check.h]hThe maximum value to check.}(hj}Nhj{NhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwNhMhjxNubah}(h]h ]h"]h$]h&]uh1jLhj\Nubeh}(h]h ]h"]h$]h&]uh1j6hjwNhMhj Nubeh}(h]h ]h"]h$]h&]uh1j1hjNubh)}(h**Description**h]j)}(hjNh]h Description}(hhhjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjNubh)}(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 }(hoMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set hjNhhhNhNubj)}(h**mas->status**h]h mas->status}(hhhjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubh to ma_overflow.}(h to ma_overflow.hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjNubh)}(h **Return**h]j)}(hjNh]hReturn}(hhhjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjNubh)}(hThe entry or ``NULL``.h](h The entry or }(h The entry or hjNhhhNhNubjm)}(h``NULL``h]hNULL}(hhhjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjNubh.}(hj(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_find_rev_setup (C function)c.mas_find_rev_setuphNtauh1jhjhhhNhNubj)}(hhh](j)}(hObool mas_find_rev_setup (struct ma_state *mas, unsigned long min, void **entry)h]j )}(hNbool mas_find_rev_setup(struct ma_state *mas, unsigned long min, void **entry)h](j )}(hj h]hbool}(hhhj0OhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,OhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhj>OhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,Ohhhj=OhMubj )}(hmas_find_rev_setuph]j )}(hmas_find_rev_setuph]hmas_find_rev_setup}(hhhjPOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLOubah}(h]h ](j j eh"]h$]h&]hhuh1j hj,Ohhhj=OhMubj )}(h7(struct ma_state *mas, unsigned long min, void **entry)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhjlOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhOubj )}(h h]h }(hhhjyOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhOubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjOmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jROsbc.mas_find_rev_setupasbuh1hhjhOubj )}(h h]h }(hhhjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhOubjL )}(hjh]h*}(hhhjOhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjhOubj )}(hmash]hmas}(hhhjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhOubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjdOubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hhhjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubj )}(h h]h }(hhhjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubj )}(hlongh]hlong}(hhhjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubj )}(h h]h }(hhhjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubj )}(hminh]hmin}(hhhjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjdOubj )}(h void **entryh](j )}(hvoidh]hvoid}(hhhj/PhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+Pubj )}(h h]h }(hhhj=PhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+PubjL )}(hjh]h*}(hhhjKPhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj+PubjL )}(hjh]h*}(hhhjXPhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj+Pubj )}(hentryh]hentry}(hhhjePhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+Pubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjdOubeh}(h]h ]h"]h$]h&]hhuh1j hj,Ohhhj=OhMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj(Ohhhj=OhMubah}(h]j#Oah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj%Ohhubj8 )}(hhh]h)}(h,Internal function to set up mas_find_*_rev()h]h,Internal function to set up mas_find_*_rev()}(hjPhjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjPhhubah}(h]h ]h"]h$]h&]uh1j7 hj%Ohhhj=OhMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jPjL jPjM uh1jhhhjhNhNubj )}(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)}(hjPh]h Parameters}(hhhjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjPubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hjPh]hstruct ma_state *mas}(hhhjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjPubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjPubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjPhjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhMhjPubah}(h]h ]h"]h$]h&]uh1jLhjPubeh}(h]h ]h"]h$]h&]uh1j6hjPhMhjPubj7)}(h(``unsigned long min`` The minimum index h](j=)}(h``unsigned long min``h]jm)}(hj Qh]hunsigned long min}(hhhj QhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjQubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjQubjM)}(hhh]h)}(hThe minimum indexh]hThe minimum index}(hj%Qhj#QhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhMhj Qubah}(h]h ]h"]h$]h&]uh1jLhjQubeh}(h]h ]h"]h$]h&]uh1j6hjQhMhjPubj7)}(h&``void **entry`` Pointer to the entry h](j=)}(h``void **entry``h]jm)}(hjCQh]h void **entry}(hhhjEQhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjAQubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj=QubjM)}(hhh]h)}(hPointer to the entryh]hPointer to the entry}(hj^Qhj\QhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXQhMhjYQubah}(h]h ]h"]h$]h&]uh1jLhj=Qubeh}(h]h ]h"]h$]h&]uh1j6hjXQhMhjPubeh}(h]h ]h"]h$]h&]uh1j1hjPubh)}(h **Return**h]j)}(hj~Qh]hReturn}(hhhjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|Qubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjPubh)}(h-True if entry is the answer, false otherwise.h]h-True if entry is the answer, false otherwise.}(hjQhjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjPubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_find_rev (C function)c.mas_find_revhNtauh1jhjhhhNhNubj)}(hhh](j)}(h=void * mas_find_rev (struct ma_state *mas, unsigned long min)h]j )}(h;void *mas_find_rev(struct ma_state *mas, unsigned long min)h](j )}(hvoidh]hvoid}(hhhjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM,ubj )}(h h]h }(hhhjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQhhhjQhM,ubjL )}(hjh]h*}(hhhjQhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjQhhhjQhM,ubj )}(h mas_find_revh]j )}(h mas_find_revh]h mas_find_rev}(hhhjQhhhNhNubah}(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 min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj RhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Rubj )}(h h]h }(hhhjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Rubh)}(hhh]j )}(hma_stateh]hma_state}(hhhj+RhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(Rubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj-RmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jQsbc.mas_find_revasbuh1hhj Rubj )}(h h]h }(hhhjKRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj RubjL )}(hjh]h*}(hhhjYRhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj Rubj )}(hmash]hmas}(hhhjfRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Rubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjRubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hhhjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj{Rubj )}(h h]h }(hhhjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj{Rubj )}(hlongh]hlong}(hhhjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj{Rubj )}(h h]h }(hhhjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj{Rubj )}(hminh]hmin}(hhhjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj{Rubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjRubeh}(h]h ]h"]h$]h&]hhuh1j hjQhhhjQhM,ubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjQhhhjQhM,ubah}(h]jQah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM7hjQhhubj8 )}(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 }(hPOn the first call, find the first non-null entry at or below mas->index down to hjRhhhNhNubjm)}(h``min``h]hmin}(hhhjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjRubhC. Otherwise find the first non-null entry below mas->index down to }(hC. Otherwise find the first non-null entry below mas->index down to hjRhhhNhNubjm)}(h``min``h]hmin}(hhhjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjRubh.}(hj(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM+hjRhhubah}(h]h ]h"]h$]h&]uh1j7 hjQhhhjQhM,ubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j SjL j SjM uh1jhhhjhNhNubj )}(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*Sh]h Parameters}(hhhj,ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(Subah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM/hj$Subj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hjISh]hstruct ma_state *mas}(hhhjKShhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjGSubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.cahM.hjCSubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjdShjbShhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^ShM.hj_Subah}(h]h ]h"]h$]h&]uh1jLhjCSubeh}(h]h ]h"]h$]h&]uh1j6hj^ShM.hj@Subj7)}(h2``unsigned long min`` The minimum value to check. h](j=)}(h``unsigned long min``h]jm)}(hjSh]hunsigned long min}(hhhjShhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjSubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM/hj|SubjM)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hjShjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShM/hjSubah}(h]h ]h"]h$]h&]uh1jLhj|Subeh}(h]h ]h"]h$]h&]uh1j6hjShM/hj@Subeh}(h]h ]h"]h$]h&]uh1j1hj$Subh)}(h**Description**h]j)}(hjSh]h Description}(hhhjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM1hj$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_underflow.h](hoMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set }(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}(hhhjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh to ma_underflow.}(h to ma_underflow.hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM1hj$Subh)}(h **Return**h]j)}(hjSh]hReturn}(hhhjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM5hj$Subh)}(hThe entry or ``NULL``.h](h The entry or }(h The entry or hjThhhNhNubjm)}(h``NULL``h]hNULL}(hhhjThhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjTubh.}(hj(hjThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM5hj$Subeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_find_range_rev (C function)c.mas_find_range_revhNtauh1jhjhhhNhNubj)}(hhh](j)}(hCvoid * mas_find_range_rev (struct ma_state *mas, unsigned long min)h]j )}(hAvoid *mas_find_range_rev(struct ma_state *mas, unsigned long min)h](j )}(hvoidh]hvoid}(hhhjPThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLThhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMFubj )}(h h]h }(hhhj_ThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLThhhj^ThMFubjL )}(hjh]h*}(hhhjmThhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjLThhhj^ThMFubj )}(hmas_find_range_revh]j )}(hmas_find_range_revh]hmas_find_range_rev}(hhhj~ThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzTubah}(h]h ](j j eh"]h$]h&]hhuh1j hjLThhhj^ThMFubj )}(h)(struct ma_state *mas, unsigned long min)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj )}(h h]h }(hhhjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjTmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jTsbc.mas_find_range_revasbuh1hhjTubj )}(h h]h }(hhhjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubjL )}(hjh]h*}(hhhjThhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjTubj )}(hmash]hmas}(hhhjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjTubj )}(hunsigned long minh](j )}(hunsignedh]hunsigned}(hhhj UhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjUubj )}(h h]h }(hhhjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjUubj )}(hlongh]hlong}(hhhj(UhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjUubj )}(h h]h }(hhhj6UhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjUubj )}(hminh]hmin}(hhhjDUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjUubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjTubeh}(h]h ]h"]h$]h&]hhuh1j hjLThhhj^ThMFubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjHThhhj^ThMFubah}(h]jCTah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMQhjEThhubj8 )}(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 }(hPOn the first call, find the first non-null entry at or below mas->index down to hjoUhhhNhNubjm)}(h``min``h]hmin}(hhhjxUhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjoUubhB. Otherwise advance to the previous slot after mas->index down to }(hB. Otherwise advance to the previous slot after mas->index down to hjoUhhhNhNubjm)}(h``min``h]hmin}(hhhjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjoUubh.}(hj(hjoUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMEhjlUhhubah}(h]h ]h"]h$]h&]uh1j7 hjEThhhj^ThMFubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jUjL jUjM uh1jhhhjhNhNubj )}(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)}(hjUh]h Parameters}(hhhjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMIhjUubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hjUh]hstruct ma_state *mas}(hhhjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjUubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMHhjUubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjUhjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhMHhjUubah}(h]h ]h"]h$]h&]uh1jLhjUubeh}(h]h ]h"]h$]h&]uh1j6hjUhMHhjUubj7)}(h2``unsigned long min`` The minimum value to check. h](j=)}(h``unsigned long min``h]jm)}(hjVh]hunsigned long min}(hhhjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj Vubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMIhj VubjM)}(hhh]h)}(hThe minimum value to check.h]hThe minimum value to check.}(hj*Vhj(VhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$VhMIhj%Vubah}(h]h ]h"]h$]h&]uh1jLhj Vubeh}(h]h ]h"]h$]h&]uh1j6hj$VhMIhjUubeh}(h]h ]h"]h$]h&]uh1j1hjUubh)}(h**Description**h]j)}(hjJVh]h Description}(hhhjLVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHVubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMKhjUubh)}(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 }(hoMust hold rcu_read_lock or the write lock. If an entry exists, last and index are updated accordingly. May set hj`VhhhNhNubj)}(h**mas->status**h]h mas->status}(hhhjiVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`Vubh to ma_underflow.}(h to ma_underflow.hj`VhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMKhjUubh)}(h **Return**h]j)}(hjVh]hReturn}(hhhjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMOhjUubh)}(hThe entry or ``NULL``.h](h The entry or }(h The entry or hjVhhhNhNubjm)}(h``NULL``h]hNULL}(hhhjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjVubh.}(hj(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMOhjUubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_erase (C function) c.mas_erasehNtauh1jhjhhhNhNubj)}(hhh](j)}(h'void * mas_erase (struct ma_state *mas)h]j )}(h%void *mas_erase(struct ma_state *mas)h](j )}(hvoidh]hvoid}(hhhjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjVhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM_ubj )}(h h]h }(hhhjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjVhhhjVhM_ubjL )}(hjh]h*}(hhhjVhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjVhhhjVhM_ubj )}(h mas_eraseh]j )}(h mas_eraseh]h mas_erase}(hhhj WhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWubah}(h]h ](j j eh"]h$]h&]hhuh1j hjVhhhjVhM_ubj )}(h(struct ma_state *mas)h]j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhj'WhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#Wubj )}(h h]h }(hhhj4WhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#Wubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjEWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBWubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjGWmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ j Wsb c.mas_eraseasbuh1hhj#Wubj )}(h h]h }(hhhjeWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#WubjL )}(hjh]h*}(hhhjsWhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj#Wubj )}(hmash]hmas}(hhhjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#Wubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjWubah}(h]h ]h"]h$]h&]hhuh1j hjVhhhjVhM_ubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjVhhhjVhM_ubah}(h]jVah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhhjVhhubj8 )}(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.}(hjWhjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM^hjWhhubah}(h]h ]h"]h$]h&]uh1j7 hjVhhhjVhM_ubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jWjL jWjM uh1jhhhjhNhNubj )}(hX/**Parameters** ``struct ma_state *mas`` The maple state **Description** Must hold the write lock. Searches for **mas->index**, sets **mas->index** and **mas->last** to the range and erases that range. **Return** the entry that was erased or ``NULL``, **mas->index** and **mas->last** are updated.h](h)}(h**Parameters**h]j)}(hjWh]h Parameters}(hhhjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbhjWubj2)}(hhh]j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hjWh]hstruct ma_state *mas}(hhhjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjWubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM`hjWubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjXhjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhM`hjXubah}(h]h ]h"]h$]h&]uh1jLhjWubeh}(h]h ]h"]h$]h&]uh1j6hjXhM`hjWubah}(h]h ]h"]h$]h&]uh1j1hjWubh)}(h**Description**h]j)}(hj'Xh]h Description}(hhhj)XhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%Xubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbhjWubh)}(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 }(h'Must hold the write lock. Searches for hj=XhhhNhNubj)}(h**mas->index**h]h mas->index}(hhhjFXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=Xubh, sets }(h, sets hj=XhhhNhNubj)}(h**mas->index**h]h mas->index}(hhhjYXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=Xubh and }(h and hj=XhhhNhNubj)}(h **mas->last**h]h mas->last}(hhhjlXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=Xubh$ to the range and erases that range.}(h$ to the range and erases that range.hj=XhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbhjWubh)}(h **Return**h]j)}(hjXh]hReturn}(hhhjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMfhjWubh)}(hTthe entry that was erased or ``NULL``, **mas->index** and **mas->last** are updated.h](hthe entry that was erased or }(hthe entry that was erased or hjXhhhNhNubjm)}(h``NULL``h]hNULL}(hhhjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjXubh, }(h, hjXhhhNhNubj)}(h**mas->index**h]h mas->index}(hhhjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh and }(h and hjXhhhNhNubj)}(h **mas->last**h]h mas->last}(hhhjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh are updated.}(h are updated.hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMfhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmas_nomem (C function) c.mas_nomemhNtauh1jhjhhhNhNubj)}(hhh](j)}(h0bool mas_nomem (struct ma_state *mas, gfp_t gfp)h]j )}(h/bool mas_nomem(struct ma_state *mas, gfp_t gfp)h](j )}(hj h]hbool}(hhhjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYhhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYhhhjYhMubj )}(h mas_nomemh]j )}(h mas_nomemh]h mas_nomem}(hhhj'YhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#Yubah}(h]h ](j j eh"]h$]h&]hhuh1j hjYhhhjYhMubj )}(h!(struct ma_state *mas, gfp_t gfp)h](j )}(hstruct ma_state *mash](j )}(hj h]hstruct}(hhhjCYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?Yubj )}(h h]h }(hhhjPYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?Yubh)}(hhh]j )}(hma_stateh]hma_state}(hhhjaYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj^Yubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjcYmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ j)Ysb c.mas_nomemasbuh1hhj?Yubj )}(h h]h }(hhhjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?YubjL )}(hjh]h*}(hhhjYhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj?Yubj )}(hmash]hmas}(hhhjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?Yubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;Yubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hhhjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjYmodnameN classnameNj/ j2 )}j5 ]j}Y c.mas_nomemasbuh1hhjYubj )}(h h]h }(hhhjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubj )}(hgfph]hgfp}(hhhjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj;Yubeh}(h]h ]h"]h$]h&]hhuh1j hjYhhhjYhMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjXhhhjYhMubah}(h]jXah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjXhhubj8 )}(hhh]h)}(hsCheck if there was an error allocating and do the allocation if necessary If there are allocations, then free them.h]hsCheck if there was an error allocating and do the allocation if necessary If there are allocations, then free them.}(hjZhjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj Zhhubah}(h]h ]h"]h$]h&]uh1j7 hjXhhhjYhMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j'ZjL j'ZjM uh1jhhhjhNhNubj )}(h**Parameters** ``struct ma_state *mas`` The maple state ``gfp_t gfp`` The GFP_FLAGS to use for allocations **Return** true on allocation, false otherwise.h](h)}(h**Parameters**h]j)}(hj1Zh]h Parameters}(hhhj3ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/Zubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj+Zubj2)}(hhh](j7)}(h)``struct ma_state *mas`` The maple state h](j=)}(h``struct ma_state *mas``h]jm)}(hjPZh]hstruct ma_state *mas}(hhhjRZhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjNZubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjJZubjM)}(hhh]h)}(hThe maple stateh]hThe maple state}(hjkZhjiZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjeZhMhjfZubah}(h]h ]h"]h$]h&]uh1jLhjJZubeh}(h]h ]h"]h$]h&]uh1j6hjeZhMhjGZubj7)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j=)}(h ``gfp_t gfp``h]jm)}(hjZh]h gfp_t gfp}(hhhjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjZubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjZubjM)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hjZhjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhjZubah}(h]h ]h"]h$]h&]uh1jLhjZubeh}(h]h ]h"]h$]h&]uh1j6hjZhMhjGZubeh}(h]h ]h"]h$]h&]uh1j1hj+Zubh)}(h **Return**h]j)}(hjZh]hReturn}(hhhjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj+Zubh)}(h$true on allocation, false otherwise.h]h$true on allocation, false otherwise.}(hjZhjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj+Zubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_load (C function) c.mtree_loadhNtauh1jhjhhhNhNubj)}(hhh](j)}(h>void * mtree_load (struct maple_tree *mt, unsigned long index)h]j )}(h_ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj:_ubj2)}(hhh](j7)}(h)``struct maple_tree *mt`` The maple tree h](j=)}(h``struct maple_tree *mt``h]jm)}(hj__h]hstruct maple_tree *mt}(hhhja_hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj]_ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjY_ubjM)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjz_hjx_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjt_hMhju_ubah}(h]h ]h"]h$]h&]uh1jLhjY_ubeh}(h]h ]h"]h$]h&]uh1j6hjt_hMhjV_ubj7)}(h/``unsigned long index`` The start of the range h](j=)}(h``unsigned long index``h]jm)}(hj_h]hunsigned long index}(hhhj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj_ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj_ubjM)}(hhh]h)}(hThe start of the rangeh]hThe start of the range}(hj_hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hMhj_ubah}(h]h ]h"]h$]h&]uh1jLhj_ubeh}(h]h ]h"]h$]h&]uh1j6hj_hMhjV_ubj7)}(h,``unsigned long last`` The end of the range h](j=)}(h``unsigned long last``h]jm)}(hj_h]hunsigned long last}(hhhj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj_ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj_ubjM)}(hhh]h)}(hThe end of the rangeh]hThe end of the range}(hj_hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hMhj_ubah}(h]h ]h"]h$]h&]uh1jLhj_ubeh}(h]h ]h"]h$]h&]uh1j6hj_hMhjV_ubj7)}(h#``void *entry`` The entry to store h](j=)}(h``void *entry``h]jm)}(hj `h]h void *entry}(hhhj `hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj`ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj`ubjM)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hj%`hj#`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hMhj `ubah}(h]h ]h"]h$]h&]uh1jLhj`ubeh}(h]h ]h"]h$]h&]uh1j6hj`hMhjV_ubj7)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j=)}(h ``gfp_t gfp``h]jm)}(hjC`h]h gfp_t gfp}(hhhjE`hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjA`ubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj=`ubjM)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hj^`hj\`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjX`hMhjY`ubah}(h]h ]h"]h$]h&]uh1jLhj=`ubeh}(h]h ]h"]h$]h&]uh1j6hjX`hMhjV_ubeh}(h]h ]h"]h$]h&]uh1j1hj:_ubh)}(h **Return**h]j)}(hj~`h]hReturn}(hhhj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|`ubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj:_ubh)}(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`hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj:_ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_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}(hhhj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`hhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`hhhj`hMubj )}(h mtree_storeh]j )}(h mtree_storeh]h mtree_store}(hhhj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`ubah}(h]h ](j j eh"]h$]h&]hhuh1j hj`hhhj`hMubj )}(hD(struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hhhjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`ubj )}(h h]h }(hhhj ahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`ubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj amodnameN classnameNj/ j2 )}j5 ]j8 )}j+ j`sb c.mtree_storeasbuh1hhj`ubj )}(h h]h }(hhhj>ahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`ubjL )}(hjh]h*}(hhhjLahhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hj`ubj )}(hmth]hmt}(hhhjYahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj`ubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hhhjrahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnaubj )}(h h]h }(hhhjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnaubj )}(hlongh]hlong}(hhhjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnaubj )}(h h]h }(hhhjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnaubj )}(hindexh]hindex}(hhhjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnaubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj`ubj )}(h void *entryh](j )}(hvoidh]hvoid}(hhhjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaubj )}(h h]h }(hhhjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaubjL )}(hjh]h*}(hhhjahhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjaubj )}(hentryh]hentry}(hhhjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjaubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj`ubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hhhjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj bmodnameN classnameNj/ j2 )}j5 ]j:a c.mtree_storeasbuh1hhjbubj )}(h h]h }(hhhj&bhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubj )}(hgfph]hgfp}(hhhj4bhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj`ubeh}(h]h ]h"]h$]h&]hhuh1j hj`hhhj`hMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj`hhhj`hMubah}(h]j`ah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj`hhubj8 )}(hhh]h)}(h Store an entry at a given index.h]h Store an entry at a given index.}(hjabhj_bhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj\bhhubah}(h]h ]h"]h$]h&]uh1j7 hj`hhhj`hMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jwbjL jwbjM uh1jhhhjhNhNubj )}(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)}(hjbh]h Parameters}(hhhjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj{bubj2)}(hhh](j7)}(h)``struct maple_tree *mt`` The maple tree h](j=)}(h``struct maple_tree *mt``h]jm)}(hjbh]hstruct maple_tree *mt}(hhhjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjbubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjbubjM)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjbhjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMhjbubah}(h]h ]h"]h$]h&]uh1jLhjbubeh}(h]h ]h"]h$]h&]uh1j6hjbhMhjbubj7)}(h5``unsigned long index`` The index to store the value h](j=)}(h``unsigned long index``h]jm)}(hjbh]hunsigned long index}(hhhjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjbubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjbubjM)}(hhh]h)}(hThe index to store the valueh]hThe index to store the value}(hjbhjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMhjbubah}(h]h ]h"]h$]h&]uh1jLhjbubeh}(h]h ]h"]h$]h&]uh1j6hjbhMhjbubj7)}(h#``void *entry`` The entry to store h](j=)}(h``void *entry``h]jm)}(hjch]h void *entry}(hhhjchhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjcubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj cubjM)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hj-chj+chhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'chMhj(cubah}(h]h ]h"]h$]h&]uh1jLhj cubeh}(h]h ]h"]h$]h&]uh1j6hj'chMhjbubj7)}(h3``gfp_t gfp`` The GFP_FLAGS to use for allocations h](j=)}(h ``gfp_t gfp``h]jm)}(hjKch]h gfp_t gfp}(hhhjMchhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjIcubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjEcubjM)}(hhh]h)}(h$The GFP_FLAGS to use for allocationsh]h$The GFP_FLAGS to use for allocations}(hjfchjdchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`chMhjacubah}(h]h ]h"]h$]h&]uh1jLhjEcubeh}(h]h ]h"]h$]h&]uh1j6hj`chMhjbubeh}(h]h ]h"]h$]h&]uh1j1hj{bubh)}(h **Return**h]j)}(hjch]hReturn}(hhhjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj{bubh)}(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.}(hjchjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj{bubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_insert_range (C function)c.mtree_insert_rangehNtauh1jhjhhhNhNubj)}(hhh](j)}(hoint mtree_insert_range (struct maple_tree *mt, unsigned long first, unsigned long last, void *entry, gfp_t gfp)h]j )}(hnint mtree_insert_range(struct maple_tree *mt, unsigned long first, unsigned long last, void *entry, gfp_t gfp)h](j )}(hinth]hint}(hhhjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjchhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjchhhjchMubj )}(hmtree_insert_rangeh]j )}(hmtree_insert_rangeh]hmtree_insert_range}(hhhjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjcubah}(h]h ](j j eh"]h$]h&]hhuh1j hjchhhjchMubj )}(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}(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubj )}(h h]h }(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhj&dhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#dubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetj(dmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jcsbc.mtree_insert_rangeasbuh1hhjdubj )}(h h]h }(hhhjFdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubjL )}(hjh]h*}(hhhjTdhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjdubj )}(hmth]hmt}(hhhjadhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjdubj )}(hunsigned long firsth](j )}(hunsignedh]hunsigned}(hhhjzdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvdubj )}(h h]h }(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvdubj )}(hlongh]hlong}(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvdubj )}(h h]h }(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvdubj )}(hfirsth]hfirst}(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvdubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjdubj )}(hunsigned long lasth](j )}(hunsignedh]hunsigned}(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubj )}(h h]h }(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubj )}(hlongh]hlong}(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubj )}(h h]h }(hhhjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubj )}(hlasth]hlast}(hhhjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjdubj )}(h void *entryh](j )}(hvoidh]hvoid}(hhhjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(h h]h }(hhhj*ehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubjL )}(hjh]h*}(hhhj8ehhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjeubj )}(hentryh]hentry}(hhhjEehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjdubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hhhjaehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj^eubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjcemodnameN classnameNj/ j2 )}j5 ]jBdc.mtree_insert_rangeasbuh1hhjZeubj )}(h h]h }(hhhjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZeubj )}(hgfph]hgfp}(hhhjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZeubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjdubeh}(h]h ]h"]h$]h&]hhuh1j hjchhhjchMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjchhhjchMubah}(h]jcah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjchhubj8 )}(hhh]h)}(h6Insert an entry at a given range if there is no value.h]h6Insert an entry at a given range if there is no value.}(hjehjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjehhubah}(h]h ]h"]h$]h&]uh1j7 hjchhhjchMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jejL jejM uh1jhhhjhNhNubj )}(hX|**Parameters** ``struct maple_tree *mt`` The maple tree ``unsigned long first`` The start of the range ``unsigned long last`` The end of the range ``void *entry`` The entry to store ``gfp_t gfp`` The GFP_FLAGS to use for allocations. **Return** 0 on success, -EEXISTS if the range is occupied, -EINVAL on invalid request, -ENOMEM if memory could not be allocated.h](h)}(h**Parameters**h]j)}(hjeh]h Parameters}(hhhjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjeubj2)}(hhh](j7)}(h)``struct maple_tree *mt`` The maple tree h](j=)}(h``struct maple_tree *mt``h]jm)}(hjeh]hstruct maple_tree *mt}(hhhjehhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjeubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjeubjM)}(hhh]h)}(hThe maple treeh]hThe maple tree}(hjfhjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMhjfubah}(h]h ]h"]h$]h&]uh1jLhjeubeh}(h]h ]h"]h$]h&]uh1j6hjfhMhjeubj7)}(h/``unsigned long first`` The start of the range h](j=)}(h``unsigned long first``h]jm)}(hj2fh]hunsigned long first}(hhhj4fhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj0fubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj,fubjM)}(hhh]h)}(hThe start of the rangeh]hThe start of the range}(hjMfhjKfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGfhMhjHfubah}(h]h ]h"]h$]h&]uh1jLhj,fubeh}(h]h ]h"]h$]h&]uh1j6hjGfhMhjeubj7)}(h,``unsigned long last`` The end of the range h](j=)}(h``unsigned long last``h]jm)}(hjkfh]hunsigned long last}(hhhjmfhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjifubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjefubjM)}(hhh]h)}(hThe end of the rangeh]hThe end of the range}(hjfhjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMhjfubah}(h]h ]h"]h$]h&]uh1jLhjefubeh}(h]h ]h"]h$]h&]uh1j6hjfhMhjeubj7)}(h#``void *entry`` The entry to store h](j=)}(h``void *entry``h]jm)}(hjfh]h void *entry}(hhhjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjfubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjfubjM)}(hhh]h)}(hThe entry to storeh]hThe entry to store}(hjfhjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMhjfubah}(h]h ]h"]h$]h&]uh1jLhjfubeh}(h]h ]h"]h$]h&]uh1j6hjfhMhjeubj7)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j=)}(h ``gfp_t gfp``h]jm)}(hjfh]h gfp_t gfp}(hhhjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjfubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjfubjM)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjfhjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhM hjfubah}(h]h ]h"]h$]h&]uh1jLhjfubeh}(h]h ]h"]h$]h&]uh1j6hjfhM hjeubeh}(h]h ]h"]h$]h&]uh1j1hjeubh)}(h **Return**h]j)}(hjgh]hReturn}(hhhjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjeubh)}(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.}(hj0ghj.ghhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM hjeubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_insert (C function)c.mtree_inserthNtauh1jhjhhhNhNubj)}(hhh](j)}(hUint mtree_insert (struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h]j )}(hTint mtree_insert(struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h](j )}(hinth]hint}(hhhj]ghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYghhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM)ubj )}(h h]h }(hhhjlghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYghhhjkghM)ubj )}(h mtree_inserth]j )}(h mtree_inserth]h mtree_insert}(hhhj~ghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzgubah}(h]h ](j j eh"]h$]h&]hhuh1j hjYghhhjkghM)ubj )}(hD(struct maple_tree *mt, unsigned long index, void *entry, gfp_t gfp)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hhhjghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjgubj )}(h h]h }(hhhjghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjgubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhjghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjgubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjgmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ jgsbc.mtree_insertasbuh1hhjgubj )}(h h]h }(hhhjghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjgubjL )}(hjh]h*}(hhhjghhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjgubj )}(hmth]hmt}(hhhjghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjgubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjgubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hhhj hhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj )}(h h]h }(hhhjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj )}(hlongh]hlong}(hhhj(hhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj )}(h h]h }(hhhj6hhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj )}(hindexh]hindex}(hhhjDhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjgubj )}(h void *entryh](j )}(hvoidh]hvoid}(hhhj]hhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYhubj )}(h h]h }(hhhjkhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYhubjL )}(hjh]h*}(hhhjyhhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjYhubj )}(hentryh]hentry}(hhhjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYhubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjgubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hhhjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjhmodnameN classnameNj/ j2 )}j5 ]jgc.mtree_insertasbuh1hhjhubj )}(h h]h }(hhhjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj )}(hgfph]hgfp}(hhhjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjgubeh}(h]h ]h"]h$]h&]hhuh1j hjYghhhjkghM)ubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjUghhhjkghM)ubah}(h]jPgah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM1hjRghhubj8 )}(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.}(hjhhjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM(hjhhhubah}(h]h ]h"]h$]h&]uh1j7 hjRghhhjkghM)ubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jijL jijM uh1jhhhjhNhNubj )}(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)}(hjih]h Parameters}(hhhjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM,hjiubj2)}(hhh](j7)}(h)``struct maple_tree *mt`` The maple tree h](j=)}(h``struct maple_tree *mt``h]jm)}(hj:ih]hstruct maple_tree *mt}(hhhjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubjL )}(hjh]h*}(hhhjLkhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjkubj )}(hstartph]hstartp}(hhhjYkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjjubj )}(h void *entryh](j )}(hvoidh]hvoid}(hhhjrkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnkubj )}(h h]h }(hhhjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnkubjL )}(hjh]h*}(hhhjkhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjnkubj )}(hentryh]hentry}(hhhjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnkubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjjubj )}(hunsigned long range_loh](j )}(hunsignedh]hunsigned}(hhhjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj )}(h h]h }(hhhjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj )}(hlongh]hlong}(hhhjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj )}(h h]h }(hhhjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj )}(hrange_loh]hrange_lo}(hhhjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjjubj )}(hunsigned long range_hih](j )}(hunsignedh]hunsigned}(hhhjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(h h]h }(hhhjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(hlongh]hlong}(hhhj!lhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(h h]h }(hhhj/lhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(hrange_hih]hrange_hi}(hhhj=lhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjjubj )}(hunsigned long *nexth](j )}(hunsignedh]hunsigned}(hhhjVlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRlubj )}(h h]h }(hhhjdlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRlubj )}(hlongh]hlong}(hhhjrlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRlubj )}(h h]h }(hhhjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRlubjL )}(hjh]h*}(hhhjlhhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjRlubj )}(hnexth]hnext}(hhhjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRlubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjjubj )}(h gfp_t gfph](h)}(hhh]j )}(hgfp_th]hgfp_t}(hhhjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjlmodnameN classnameNj/ j2 )}j5 ]jjc.mtree_alloc_cyclicasbuh1hhjlubj )}(h h]h }(hhhjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(hgfph]hgfp}(hhhjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjjubeh}(h]h ]h"]h$]h&]hhuh1j hjajhhhjsjhM`ubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hj]jhhhjsjhM`ubah}(h]jXjah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMuhjZjhhubj8 )}(hhh]h)}(h/Find somewhere to store this entry in the tree.h]h/Find somewhere to store this entry in the tree.}(hjmhjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM_hj mhhubah}(h]h ]h"]h$]h&]uh1j7 hjZjhhhjsjhM`ubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK j&mjL j&mjM uh1jhhhjhNhNubj )}(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)}(hj0mh]h Parameters}(hhhj2mhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.mubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMchj*mubj2)}(hhh](j7)}(h*``struct maple_tree *mt`` The maple tree. h](j=)}(h``struct maple_tree *mt``h]jm)}(hjOmh]hstruct maple_tree *mt}(hhhjQmhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjMmubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM`hjImubjM)}(hhh]h)}(hThe maple tree.h]hThe maple tree.}(hjjmhjhmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdmhM`hjemubah}(h]h ]h"]h$]h&]uh1jLhjImubeh}(h]h ]h"]h$]h&]uh1j6hjdmhM`hjFmubj7)}(h)``unsigned long *startp`` Pointer to ID. h](j=)}(h``unsigned long *startp``h]jm)}(hjmh]hunsigned long *startp}(hhhjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjmubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMahjmubjM)}(hhh]h)}(hPointer to ID.h]hPointer to ID.}(hjmhjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhMahjmubah}(h]h ]h"]h$]h&]uh1jLhjmubeh}(h]h ]h"]h$]h&]uh1j6hjmhMahjFmubj7)}(h$``void *entry`` The entry to store. h](j=)}(h``void *entry``h]jm)}(hjmh]h void *entry}(hhhjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjmubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMdhjmubjM)}(hhh]h)}(hThe entry to store.h]hThe entry to store.}(hjmhjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhMdhjmubah}(h]h ]h"]h$]h&]uh1jLhjmubeh}(h]h ]h"]h$]h&]uh1j6hjmhMdhjFmubj7)}(h;``unsigned long range_lo`` Lower bound of range to search. h](j=)}(h``unsigned long range_lo``h]jm)}(hjmh]hunsigned long range_lo}(hhhjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjmubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMbhjmubjM)}(hhh]h)}(hLower bound of range to search.h]hLower bound of range to search.}(hjnhjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMbhjnubah}(h]h ]h"]h$]h&]uh1jLhjmubeh}(h]h ]h"]h$]h&]uh1j6hjnhMbhjFmubj7)}(h;``unsigned long range_hi`` Upper bound of range to search. h](j=)}(h``unsigned long range_hi``h]jm)}(hj3nh]hunsigned long range_hi}(hhhj5nhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhj1nubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMchj-nubjM)}(hhh]h)}(hUpper bound of range to search.h]hUpper bound of range to search.}(hjNnhjLnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHnhMchjInubah}(h]h ]h"]h$]h&]uh1jLhj-nubeh}(h]h ]h"]h$]h&]uh1j6hjHnhMchjFmubj7)}(h8``unsigned long *next`` Pointer to next ID to allocate. h](j=)}(h``unsigned long *next``h]jm)}(hjlnh]hunsigned long *next}(hhhjnnhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjjnubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMehjfnubjM)}(hhh]h)}(hPointer to next ID to allocate.h]hPointer to next ID to allocate.}(hjnhjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMehjnubah}(h]h ]h"]h$]h&]uh1jLhjfnubeh}(h]h ]h"]h$]h&]uh1j6hjnhMehjFmubj7)}(h4``gfp_t gfp`` The GFP_FLAGS to use for allocations. h](j=)}(h ``gfp_t gfp``h]jm)}(hjnh]h gfp_t gfp}(hhhjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjnubah}(h]h ]h"]h$]h&]uh1j<hU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMfhjnubjM)}(hhh]h)}(h%The GFP_FLAGS to use for allocations.h]h%The GFP_FLAGS to use for allocations.}(hjnhjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMfhjnubah}(h]h ]h"]h$]h&]uh1jLhjnubeh}(h]h ]h"]h$]h&]uh1j6hjnhMfhjFmubeh}(h]h ]h"]h$]h&]uh1j1hj*mubh)}(h**Description**h]j)}(hjnh]h Description}(hhhjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhhj*mubh)}(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 }(hFinds an empty entry in hjnhhhNhNubj)}(h**mt**h]hmt}(hhhjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh after }(h after hjnhhhNhNubj)}(h**next**h]hnext}(hhhjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh , stores the new index into the }(h , stores the new index into the hjnhhhNhNubj)}(h**id**h]hid}(hhhj%ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh7 pointer, stores the entry at that index, then updates }(h7 pointer, stores the entry at that index, then updates hjnhhhNhNubj)}(h**next**h]hnext}(hhhj8ohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh.}(hj(hjnhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhhj*mubh)}(h>**mt** must be initialized with the MT_FLAGS_ALLOC_RANGE flag.h](j)}(h**mt**h]hmt}(hhhjUohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQoubh8 must be initialized with the MT_FLAGS_ALLOC_RANGE flag.}(h8 must be initialized with the MT_FLAGS_ALLOC_RANGE flag.hjQohhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMkhj*mubh)}(h **Context**h]j)}(hjqoh]hContext}(hhhjsohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjooubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMmhj*mubh)}(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 }(h@Any context. Takes and releases the mt.lock. May sleep if the hjohhhNhNubj)}(h**gfp**h]hgfp}(hhhjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubh flags permit.}(h flags permit.hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMmhj*mubh)}(h **Return**h]j)}(hjoh]hReturn}(hhhjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMphj*mubh)}(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 }(h0 if the allocation succeeded without wrapping, 1 if the allocation succeeded after wrapping, -ENOMEM if memory could not be allocated, -EINVAL if hjohhhNhNubj)}(h**mt**h]hmt}(hhhjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubh8 cannot be used, or -EBUSY if there are no free entries.}(h8 cannot be used, or -EBUSY if there are no free entries.hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMphj*mubeh}(h]h ] kernelindentah"]h$]h&]uh1j hjhhhNhNubj)}(hhh]h}(h]h ]h"]h$]h&]entries](jmtree_erase (C function) c.mtree_erasehNtauh1jhjhhhNhNubj)}(hhh](j)}(h?void * mtree_erase (struct maple_tree *mt, unsigned long index)h]j )}(h=void *mtree_erase(struct maple_tree *mt, unsigned long index)h](j )}(hvoidh]hvoid}(hhhjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjphhhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMubj )}(h h]h }(hhhjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjphhhjphMubjL )}(hjh]h*}(hhhj"phhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjphhhjphMubj )}(h mtree_eraseh]j )}(h mtree_eraseh]h mtree_erase}(hhhj3phhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/pubah}(h]h ](j j eh"]h$]h&]hhuh1j hjphhhjphMubj )}(h,(struct maple_tree *mt, unsigned long index)h](j )}(hstruct maple_tree *mth](j )}(hj h]hstruct}(hhhjOphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjKpubj )}(h h]h }(hhhj\phhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjKpubh)}(hhh]j )}(h maple_treeh]h maple_tree}(hhhjmphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjpubah}(h]h ]h"]h$]h&] refdomainjE reftypej+ reftargetjopmodnameN classnameNj/ j2 )}j5 ]j8 )}j+ j5psb c.mtree_eraseasbuh1hhjKpubj )}(h h]h }(hhhjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjKpubjL )}(hjh]h*}(hhhjphhhNhNubah}(h]h ]jW ah"]h$]h&]uh1jK hjKpubj )}(hmth]hmt}(hhhjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjKpubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjGpubj )}(hunsigned long indexh](j )}(hunsignedh]hunsigned}(hhhjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubj )}(h h]h }(hhhjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubj )}(hlongh]hlong}(hhhjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubj )}(h h]h }(hhhjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubj )}(hindexh]hindex}(hhhjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjGpubeh}(h]h ]h"]h$]h&]hhuh1j hjphhhjphMubeh}(h]h ]h"]h$]h&]hhj* uh1jj+ j, hjohhhjphMubah}(h]joah ](j0 j1 eh"]h$]h&]j5 uh1jhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhjohhubj8 )}(hhh]h)}(h)Find an index and erase the entire range.h]h)Find an index and erase the entire range.}(hj&qhj$qhhhNhNubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMhj!qhhubah}(h]h ]h"]h$]h&]uh1j7 hjohhhjphMubeh}(h]h ](jE functioneh"]h$]h&]jJ jE jK jhjubh)}(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 }(h(Same as mt_find() except that it checks hjhhhNhNubj)}(h **index**h]hindex}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh for 0 before searching. If }(h for 0 before searching. If hjhhhNhNubj)}(h **index**h]hindex}(hhhjʀhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh; == 0, the search is aborted. This covers a wrap around of }(h; == 0, the search is aborted. This covers a wrap around of hjhhhNhNubj)}(h **index**h]hindex}(hhhj݀hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh to 0 in an iterator loop.}(h to 0 in an iterator loop.hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chM>hjubh)}(h **Return**h]j)}(hjh]hReturn}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMBhjubh)}(h/The entry at or after the **index** or ``NULL``h](hThe entry at or after the }(hThe entry at or after the hjhhhNhNubj)}(h **index**h]hindex}(hhhjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }(h or hjhhhNhNubjm)}(h``NULL``h]hNULL}(hhhj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jlhjubeh}(h]h ]h"]h$]h&]uh1hhU/var/lib/git/docbuild/linux/Documentation/core-api/maple_tree:221: ./lib/maple_tree.chMBhjubeh}(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_handlerjzerror_encodingUTF-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confapep_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_spacefile_insertion_enabled raw_enabledKline_length_limitM'syntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_link embed_imagesenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}(j]jaj]jajR]jHaj|]jraj]jaunameids}(jTjQjjjjjjjjjjjjjjjjRjjjj|jjjLjIjju nametypes}(jTNjNjjNjNjNjjNjjNjjNjLNjuh}(jQhjj jjjjjjjjjjjjjRjSjjSj|jjjjIjjjjjj- j2 j j jp ju j-j2jjjfjkjjjj j;j@jjj@jEjjj` je jy"j~"j9'j>'j)j)j\+ja+j,j,j/j/j'2j,2j3j4j|6j6j8j8jU;jZ;jF>jK>j@j@jCjCjFj FjGjGj-Jj2JjLjLj#Oj(OjQjQjCTjHTjVjVjXjXjZj[j$]j)]j`j`jcjcjPgjUgjXjj]jjojojZrj_rj-uj2ujxjxjyjyj{j {j ~j%~u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages](hsystem_message)}(hhh]h)}(hhh]h;Hyperlink target "maple-tree-normal-api" is not referenced.}(hhhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineK-uh1jubj)}(hhh]h)}(hhh]h=Hyperlink target "maple-tree-advanced-api" is not referenced.}(hhhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1jubj)}(hhh]h)}(hhh]h?Hyperlink target "maple-tree-advanced-alloc" is not referenced.}(hhhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1jubj)}(hhh]h)}(hhh]h?Hyperlink target "maple-tree-advanced-locks" is not referenced.}(hhhj8ubah}(h]h ]h"]h$]h&]uh1hhj5ubah}(h]h ]h"]h$]h&]levelKtypejsourcehlineKuh1jubj)}(hhh]h)}(hhh]h6Hyperlink target "maple-tree-flags" is not referenced.}(hhhjRubah}(h]h ]h"]h$]h&]uh1hhjOubah}(h]h ]h"]h$]h&]levelKtypejlineKsourcehuh1jube transformerN include_log] decorationNhhub.