5`sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/translations/zh_CN/mm/slabmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/zh_TW/mm/slabmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/it_IT/mm/slabmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ja_JP/mm/slabmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ko_KR/mm/slabmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/sp_SP/mm/slabmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh5/var/lib/git/docbuild/linux/Documentation/mm/slab.rsthKubhsection)}(hhh](htitle)}(hSlab Allocationh]hSlab Allocation}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hFunctions and structuresh]hFunctions and structures}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlefolio_slab (C macro) c.folio_slabhNtauh1hhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(h folio_slabh]hdesc_signature_line)}(h folio_slabh]h desc_name)}(h folio_slabh]h desc_sig_name)}(hhh]h folio_slab}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhhubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1hhhhhhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKuubah}(h]h ]h"]h$]h&]hh add_permalinkuh1hsphinx_line_type declaratorhhhhhjhKuubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1hhjhKuhhhhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1j/hhhhhjhKuubeh}(h]h ](cmacroeh"]h$]h&]domainj=objtypej>desctypej>noindex noindexentrynocontentsentryuh1hhhhhhNhNubh paragraph)}(h``folio_slab (folio)``h]hliteral)}(hjLh]hfolio_slab (folio)}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jNhjJubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKwhhhhubh block_quote)}(hConverts from folio to slab. h]jI)}(hConverts from folio to slab.h]hConverts from folio to slab.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKuhjfubah}(h]h ]h"]h$]h&]uh1jdhjxhKuhhhhubh container)}(h**Parameters** ``folio`` The folio. **Description** Currently struct slab is a different representation of a folio where folio_test_slab() is true. **Return** The slab which contains this folio.h](jI)}(h**Parameters**h]hstrong)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKyhjubhdefinition_list)}(hhh]hdefinition_list_item)}(h``folio`` The folio. h](hterm)}(h ``folio``h]jO)}(hjh]hfolio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&]uh1jhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKvhjubh definition)}(hhh]jI)}(h The folio.h]h The folio.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhjhKvhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKvhjubah}(h]h ]h"]h$]h&]uh1jhjubjI)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKxhjubjI)}(h_Currently struct slab is a different representation of a folio where folio_test_slab() is true.h]h_Currently struct slab is a different representation of a folio where folio_test_slab() is true.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKwhjubjI)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKzhjubjI)}(h#The slab which contains this folio.h]h#The slab which contains this folio.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhK{hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hslab_folio (C macro) c.slab_foliohNtauh1hhhhhhNhNubh)}(hhh](h)}(h slab_folioh]h)}(h slab_folioh]h)}(h slab_folioh]j)}(hjQh]h slab_folio}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubah}(h]h ](jjeh"]h$]h&]hhuh1hhjShhhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKubah}(h]h ]h"]h$]h&]hhj!uh1hj"j#hjOhhhjnhKubah}(h]jJah ](j'j(eh"]h$]h&]j,j-)j.huh1hhjnhKhjLhhubj0)}(hhh]h}(h]h ]h"]h$]h&]uh1j/hjLhhhjnhKubeh}(h]h ](j=macroeh"]h$]h&]jBj=jCjjDjjEjFjGuh1hhhhhhNhNubjI)}(h``slab_folio (s)``h]jO)}(hjh]hslab_folio (s)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhhhhubje)}(hThe folio allocated for a slab h]jI)}(hThe folio allocated for a slabh]hThe folio allocated for a slab}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubah}(h]h ]h"]h$]h&]uh1jdhjhKhhhhubj)}(hX**Parameters** ``s`` The slab. **Description** Slabs are allocated as folios that contain the individual objects and are using some fields in the first struct page of the folio - those fields are now accessed by struct slab. It is occasionally necessary to convert back to a folio in order to communicate with the rest of the mm. Please use this helper function instead of casting yourself, as the implementation may change in the future.h](jI)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubj)}(hhh]j)}(h``s`` The slab. h](j)}(h``s``h]jO)}(hjh]hs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&]uh1jhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubj)}(hhh]jI)}(h The slab.h]h The slab.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubjI)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubjI)}(hXSlabs are allocated as folios that contain the individual objects and are using some fields in the first struct page of the folio - those fields are now accessed by struct slab. It is occasionally necessary to convert back to a folio in order to communicate with the rest of the mm. Please use this helper function instead of casting yourself, as the implementation may change in the future.h]hXSlabs are allocated as folios that contain the individual objects and are using some fields in the first struct page of the folio - those fields are now accessed by struct slab. It is occasionally necessary to convert back to a folio in order to communicate with the rest of the mm. Please use this helper function instead of casting yourself, as the implementation may change in the future.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hpage_slab (C macro) c.page_slabhNtauh1hhhhhhNhNubh)}(hhh](h)}(h page_slabh]h)}(h page_slabh]h)}(h page_slabh]j)}(hj[h]h page_slab}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubah}(h]h ](jjeh"]h$]h&]hhuh1hhj]hhhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKubah}(h]h ]h"]h$]h&]hhj!uh1hj"j#hjYhhhjxhKubah}(h]jTah ](j'j(eh"]h$]h&]j,j-)j.huh1hhjxhKhjVhhubj0)}(hhh]h}(h]h ]h"]h$]h&]uh1j/hjVhhhjxhKubeh}(h]h ](j=macroeh"]h$]h&]jBj=jCjjDjjEjFjGuh1hhhhhhNhNubjI)}(h``page_slab (p)``h]jO)}(hjh]h page_slab (p)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhhhhubje)}(h)Converts from first struct page to slab. h]jI)}(h(Converts from first struct page to slab.h]h(Converts from first struct page to slab.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubah}(h]h ]h"]h$]h&]uh1jdhjhKhhhhubj)}(hX**Parameters** ``p`` The first (either head of compound or single) page of slab. **Description** A temporary wrapper to convert struct page to struct slab in situations where we know the page is the compound head, or single order-0 page. Long-term ideally everything would work with struct slab directly or go through folio to struct slab. **Return** The slab which contains this pageh](jI)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubj)}(hhh]j)}(hB``p`` The first (either head of compound or single) page of slab. h](j)}(h``p``h]jO)}(hjh]hp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&]uh1jhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubj)}(hhh]jI)}(h;The first (either head of compound or single) page of slab.h]h;The first (either head of compound or single) page of slab.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubjI)}(h**Description**h]j)}(hj&h]h Description}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubjI)}(hA temporary wrapper to convert struct page to struct slab in situations where we know the page is the compound head, or single order-0 page.h]hA temporary wrapper to convert struct page to struct slab in situations where we know the page is the compound head, or single order-0 page.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubjI)}(heLong-term ideally everything would work with struct slab directly or go through folio to struct slab.h]heLong-term ideally everything would work with struct slab directly or go through folio to struct slab.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubjI)}(h **Return**h]j)}(hj\h]hReturn}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubjI)}(h!The slab which contains this pageh]h!The slab which contains this page}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hslab_page (C macro) c.slab_pagehNtauh1hhhhhhNhNubh)}(hhh](h)}(h slab_pageh]h)}(h slab_pageh]h)}(h slab_pageh]j)}(hjh]h slab_page}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1hhjhhhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKubah}(h]h ]h"]h$]h&]hhj!uh1hj"j#hjhhhjhKubah}(h]jah ](j'j(eh"]h$]h&]j,j-)j.huh1hhjhKhjhhubj0)}(hhh]h}(h]h ]h"]h$]h&]uh1j/hjhhhjhKubeh}(h]h ](j=macroeh"]h$]h&]jBj=jCjjDjjEjFjGuh1hhhhhhNhNubjI)}(h``slab_page (s)``h]jO)}(hjh]h slab_page (s)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhhhhubje)}(h+The first struct page allocated for a slab h]jI)}(h*The first struct page allocated for a slabh]h*The first struct page allocated for a slab}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubah}(h]h ]h"]h$]h&]uh1jdhjhKhhhhubj)}(h**Parameters** ``s`` The slab. **Description** A convenience wrapper for converting slab to the first struct page of the underlying folio, to communicate with code not yet converted to folio or struct slab.h](jI)}(h**Parameters**h]j)}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubj)}(hhh]j)}(h``s`` The slab. h](j)}(h``s``h]jO)}(hj+h]hs}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jNhj)ubah}(h]h ]h"]h$]h&]uh1jhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhj%ubj)}(hhh]jI)}(h The slab.h]h The slab.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhj@hKhjAubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hKhj"ubah}(h]h ]h"]h$]h&]uh1jhjubjI)}(h**Description**h]j)}(hjfh]h Description}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubjI)}(hA convenience wrapper for converting slab to the first struct page of the underlying folio, to communicate with code not yet converted to folio or struct slab.h]hA convenience wrapper for converting slab to the first struct page of the underlying folio, to communicate with code not yet converted to folio or struct slab.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:10: ./mm/slab.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hslab_flags (C enum) c.slab_flagshNtauh1hhhhhhA/var/lib/git/docbuild/linux/Documentation/mm/slab:11: ./mm/slub.chNubh)}(hhh](h)}(h slab_flagsh]h)}(henum slab_flagsh](hdesc_sig_keyword)}(henumh]henum}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjhhhA/var/lib/git/docbuild/linux/Documentation/mm/slab:11: ./mm/slub.chKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhKubh)}(h slab_flagsh]j)}(hjh]h slab_flags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1hhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj!uh1hj"j#hjhhhjhKubah}(h]jah ](j'j(eh"]h$]h&]j,j-)j.huh1hhjhKhjhhubj0)}(hhh]jI)}(h!How the slab flags bits are used.h]h!How the slab flags bits are used.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:11: ./mm/slub.chKhjhhubah}(h]h ]h"]h$]h&]uh1j/hjhhhjhKubeh}(h]h ](j=enumeh"]h$]h&]jBj=jCj jDj jEjFjGuh1hhhhhhjhNubj)}(h**Constants** ``SL_locked`` Is locked with slab_lock() ``SL_partial`` On the per-node partial list ``SL_pfmemalloc`` Was allocated from PF_MEMALLOC reservesh](jI)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:11: ./mm/slub.chKhjubj)}(hhh](j)}(h)``SL_locked`` Is locked with slab_lock() h](j)}(h ``SL_locked``h]jO)}(hj6h]h SL_locked}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jNhj4ubah}(h]h ]h"]h$]h&]uh1jhA/var/lib/git/docbuild/linux/Documentation/mm/slab:11: ./mm/slub.chKhj0ubj)}(hhh]jI)}(hIs locked with slab_lock()h]hIs locked with slab_lock()}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhjKhKhjLubah}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]uh1jhjKhKhj-ubj)}(h,``SL_partial`` On the per-node partial list h](j)}(h``SL_partial``h]jO)}(hjoh]h SL_partial}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jNhjmubah}(h]h ]h"]h$]h&]uh1jhA/var/lib/git/docbuild/linux/Documentation/mm/slab:11: ./mm/slub.chKhjiubj)}(hhh]jI)}(hOn the per-node partial listh]hOn the per-node partial list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjiubeh}(h]h ]h"]h$]h&]uh1jhjhKhj-ubj)}(h9``SL_pfmemalloc`` Was allocated from PF_MEMALLOC reservesh](j)}(h``SL_pfmemalloc``h]jO)}(hjh]h SL_pfmemalloc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jNhjubah}(h]h ]h"]h$]h&]uh1jhA/var/lib/git/docbuild/linux/Documentation/mm/slab:11: ./mm/slub.chKhjubj)}(hhh]jI)}(h'Was allocated from PF_MEMALLOC reservesh]h'Was allocated from PF_MEMALLOC reserves}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:11: ./mm/slub.chKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj-ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhjhNubjI)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:11: ./mm/slub.chKhhhhubjI)}(hThe slab flags share space with the page flags but some bits have different interpretations. The high bits are used for information like zone/node/section.h]hThe slab flags share space with the page flags but some bits have different interpretations. The high bits are used for information like zone/node/section.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jHhA/var/lib/git/docbuild/linux/Documentation/mm/slab:11: ./mm/slub.chKhhhhubeh}(h]functions-and-structuresah ]h"]functions and structuresah$]h&]uh1hhhhhhhhKubeh}(h]slab-allocationah ]h"]slab allocationah$]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_handlerjCerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjju nametypes}(jjuh}(jhjhhhjJjOjTjYjjjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.