sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget#/translations/zh_CN/core-api/cgroupmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/zh_TW/core-api/cgroupmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/it_IT/core-api/cgroupmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/ja_JP/core-api/cgroupmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/ko_KR/core-api/cgroupmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/pt_BR/core-api/cgroupmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/sp_SP/core-api/cgroupmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hCgroup Kernel APIsh]hCgroup Kernel APIs}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh=/var/lib/git/docbuild/linux/Documentation/core-api/cgroup.rsthKubh)}(hhh](h)}(h!Device Memory Cgroup API (dmemcg)h]h!Device Memory Cgroup API (dmemcg)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single-dmem_cgroup_state_evict_valuable (C function)"c.dmem_cgroup_state_evict_valuablehNtauh1hhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(hbool dmem_cgroup_state_evict_valuable (struct dmem_cgroup_pool_state *limit_pool, struct dmem_cgroup_pool_state *test_pool, bool ignore_low, bool *ret_hit_low)h]hdesc_signature_line)}(hbool dmem_cgroup_state_evict_valuable(struct dmem_cgroup_pool_state *limit_pool, struct dmem_cgroup_pool_state *test_pool, bool ignore_low, bool *ret_hit_low)h](hdesc_sig_keyword_type)}(hboolh]hbool}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1hhhhhhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMVubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhhhhhjhMVubh desc_name)}(h dmem_cgroup_state_evict_valuableh]h desc_sig_name)}(h dmem_cgroup_state_evict_valuableh]h dmem_cgroup_state_evict_valuable}(hj)hhhNhNubah}(h]h ]nah"]h$]h&]uh1j'hj#ubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1j!hhhhhjhMVubhdesc_parameterlist)}(hy(struct dmem_cgroup_pool_state *limit_pool, struct dmem_cgroup_pool_state *test_pool, bool ignore_low, bool *ret_hit_low)h](hdesc_parameter)}(h)struct dmem_cgroup_pool_state *limit_poolh](hdesc_sig_keyword)}(hstructh]hstruct}(hjPhhhNhNubah}(h]h ]kah"]h$]h&]uh1jNhjJubj)}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hjphhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjmubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetjrmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jj+sb"c.dmem_cgroup_state_evict_valuableasbuh1hhjJubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjJubj()}(h limit_poolh]h limit_pool}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjJubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjDubjI)}(h(struct dmem_cgroup_pool_state *test_poolh](jO)}(hjRh]hstruct}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j"c.dmem_cgroup_state_evict_valuableasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj()}(h test_poolh]h test_pool}(hj(hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjDubjI)}(hbool ignore_lowh](h)}(hjh]hbool}(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj=ubj)}(h h]h }(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj()}(h ignore_lowh]h ignore_low}(hj\hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj=ubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjDubjI)}(hbool *ret_hit_lowh](h)}(hjh]hbool}(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjqubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubj()}(h ret_hit_lowh]h ret_hit_low}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjqubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjDubeh}(h]h ]h"]h$]h&]j@jAuh1jBhhhhhjhMVubeh}(h]h ]h"]h$]h&]j@jA add_permalinkuh1hsphinx_line_type declaratorhhhhhjhMVubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1hhjhMVhhhhubh desc_content)}(hhh]h paragraph)}(h'Check if we should evict from test_poolh]h'Check if we should evict from test_pool}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMVhjhhubah}(h]h ]h"]h$]h&]uh1jhhhhhjhMVubeh}(h]h ](jfunctioneh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1hhhhhhNhNubh container)}(hXS**Parameters** ``struct dmem_cgroup_pool_state *limit_pool`` The pool for which we hit limits ``struct dmem_cgroup_pool_state *test_pool`` The pool for which to test ``bool ignore_low`` Whether we have to respect low watermarks. ``bool *ret_hit_low`` Pointer to whether it makes sense to consider low watermark. **Description** This function returns true if we can evict from **test_pool**, false if not. When returning false and **ignore_low** is false, **ret_hit_low** may be set to true to indicate this function can be retried with **ignore_low** set to true. **Return** boolh](j)}(h**Parameters**h]hstrong)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMZhjubhdefinition_list)}(hhh](hdefinition_list_item)}(hO``struct dmem_cgroup_pool_state *limit_pool`` The pool for which we hit limits h](hterm)}(h-``struct dmem_cgroup_pool_state *limit_pool``h]hliteral)}(hj$h]h)struct dmem_cgroup_pool_state *limit_pool}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj"ubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMWhjubh definition)}(hhh]j)}(h The pool for which we hit limitsh]h The pool for which we hit limits}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;hMWhj>ubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhj;hMWhjubj)}(hH``struct dmem_cgroup_pool_state *test_pool`` The pool for which to test h](j!)}(h,``struct dmem_cgroup_pool_state *test_pool``h]j')}(hjah]h(struct dmem_cgroup_pool_state *test_pool}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj_ubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMXhj[ubj=)}(hhh]j)}(hThe pool for which to testh]hThe pool for which to test}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvhMXhjwubah}(h]h ]h"]h$]h&]uh1j<hj[ubeh}(h]h ]h"]h$]h&]uh1jhjvhMXhjubj)}(h?``bool ignore_low`` Whether we have to respect low watermarks. h](j!)}(h``bool ignore_low``h]j')}(hjh]hbool ignore_low}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMYhjubj=)}(hhh]j)}(h*Whether we have to respect low watermarks.h]h*Whether we have to respect low watermarks.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMYhjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhjhMYhjubj)}(hS``bool *ret_hit_low`` Pointer to whether it makes sense to consider low watermark. h](j!)}(h``bool *ret_hit_low``h]j')}(hjh]hbool *ret_hit_low}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMZhjubj=)}(hhh]j)}(hhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubh is false, }(hj$hhhNhNubj)}(h**ret_hit_low**h]h ret_hit_low}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubhB may be set to true to indicate this function can be retried with }(hj$hhhNhNubj)}(h**ignore_low**h]h ignore_low}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubh set to true.}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM[hjubj)}(h **Return**h]j)}(hj}h]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM`hjubj)}(hboolh]hbool}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMahjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h*dmem_cgroup_unregister_region (C function)c.dmem_cgroup_unregister_regionhNtauh1hhhhhhNhNubh)}(hhh](h)}(hFvoid dmem_cgroup_unregister_region (struct dmem_cgroup_region *region)h]h)}(hEvoid dmem_cgroup_unregister_region(struct dmem_cgroup_region *region)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj")}(hdmem_cgroup_unregister_regionh]j()}(hdmem_cgroup_unregister_regionh]hdmem_cgroup_unregister_region}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ](j;j<eh"]h$]h&]j@jAuh1j!hjhhhjhMubjC)}(h#(struct dmem_cgroup_region *region)h]jI)}(h!struct dmem_cgroup_region *regionh](jO)}(hjRh]hstruct}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j()}(hdmem_cgroup_regionh]hdmem_cgroup_region}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.dmem_cgroup_unregister_regionasbuh1hhjubj)}(h h]h }(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj()}(hregionh]hregion}(hjXhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjubah}(h]h ]h"]h$]h&]j@jAuh1jBhjhhhjhMubeh}(h]h ]h"]h$]h&]j@jAjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(h*Unregister a previously registered region.h]h*Unregister a previously registered region.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hXG**Parameters** ``struct dmem_cgroup_region *region`` The region to unregister. **Description** This function undoes dmem_cgroup_register_region. It drains any in-flight reclaim callbacks before returning, so the caller may safely free the resources pointed to by the **reclaim_priv** that was passed at registration time.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubj)}(hhh]j)}(h@``struct dmem_cgroup_region *region`` The region to unregister. h](j!)}(h%``struct dmem_cgroup_region *region``h]j')}(hjh]h!struct dmem_cgroup_region *region}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubj=)}(hhh]j)}(hThe region to unregister.h]hThe region to unregister.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubj)}(hThis function undoes dmem_cgroup_register_region. It drains any in-flight reclaim callbacks before returning, so the caller may safely free the resources pointed to by the **reclaim_priv** that was passed at registration time.h](hThis function undoes dmem_cgroup_register_region. It drains any in-flight reclaim callbacks before returning, so the caller may safely free the resources pointed to by the }(hjhhhNhNubj)}(h**reclaim_priv**h]h reclaim_priv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh& that was passed at registration time.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h(dmem_cgroup_register_region (C function)c.dmem_cgroup_register_regionhNtauh1hhhhhhNhNubh)}(hhh](h)}(hsstruct dmem_cgroup_region * dmem_cgroup_register_region (const struct dmem_cgroup_init *init, const char *fmt, ...)h]h)}(hqstruct dmem_cgroup_region *dmem_cgroup_register_region(const struct dmem_cgroup_init *init, const char *fmt, ...)h](jO)}(hjRh]hstruct}(hjUhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjQhhhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM-ubj)}(h h]h }(hjchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQhhhjbhM-ubh)}(hhh]j()}(hdmem_cgroup_regionh]hdmem_cgroup_region}(hjthhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]j)}jdmem_cgroup_register_regionsbc.dmem_cgroup_register_regionasbuh1hhjQhhhjbhM-ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQhhhjbhM-ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQhhhjbhM-ubj")}(hdmem_cgroup_register_regionh]j()}(hjh]hdmem_cgroup_register_region}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ](j;j<eh"]h$]h&]j@jAuh1j!hjQhhhjbhM-ubjC)}(h;(const struct dmem_cgroup_init *init, const char *fmt, ...)h](jI)}(h#const struct dmem_cgroup_init *inith](jO)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjO)}(hjRh]hstruct}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j()}(hdmem_cgroup_inith]hdmem_cgroup_init}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.dmem_cgroup_register_regionasbuh1hhjubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj()}(hinith]hinit}(hjBhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjubjI)}(hconst char *fmth](jO)}(hjh]hconst}(hj[hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjWubj)}(h h]h }(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubh)}(hcharh]hchar}(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjWubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWubj()}(hfmth]hfmt}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjWubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjubjI)}(h...h]j)}(h...h]h...}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjubeh}(h]h ]h"]h$]h&]j@jAuh1jBhjQhhhjbhM-ubeh}(h]h ]h"]h$]h&]j@jAjuh1hjjhjMhhhjbhM-ubah}(h]jHah ](jjeh"]h$]h&]jj)jhuh1hhjbhM-hjJhhubj)}(hhh]j)}(h"Register a regions for dev cgroup.h]h"Register a regions for dev cgroup.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM-hjhhubah}(h]h ]h"]h$]h&]uh1jhjJhhhjbhM-ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``const struct dmem_cgroup_init *init`` Initialization parameters for the region. ``const char *fmt`` Region parameters to register ``...`` variable arguments **Description** This function registers a node in the dmem cgroup with the name given. After calling this function, the region can be used for allocations. **Return** NULL or a struct on success, PTR_ERR on failure.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM1hjubj)}(hhh](j)}(hR``const struct dmem_cgroup_init *init`` Initialization parameters for the region. h](j!)}(h'``const struct dmem_cgroup_init *init``h]j')}(hj#h]h#const struct dmem_cgroup_init *init}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj!ubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM.hjubj=)}(hhh]j)}(h)Initialization parameters for the region.h]h)Initialization parameters for the region.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8hM.hj9ubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhj8hM.hjubj)}(h2``const char *fmt`` Region parameters to register h](j!)}(h``const char *fmt``h]j')}(hj\h]hconst char *fmt}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjZubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM/hjVubj=)}(hhh]j)}(hRegion parameters to registerh]hRegion parameters to register}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqhM/hjrubah}(h]h ]h"]h$]h&]uh1j<hjVubeh}(h]h ]h"]h$]h&]uh1jhjqhM/hjubj)}(h``...`` variable arguments h](j!)}(h``...``h]j')}(hjh]h...}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chKhjubj=)}(hhh]j)}(hvariable argumentsh]hvariable arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chKhjubj)}(hThis function registers a node in the dmem cgroup with the name given. After calling this function, the region can be used for allocations.h]hThis function registers a node in the dmem cgroup with the name given. After calling this function, the region can be used for allocations.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM0hjubj)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM4hjubj)}(h0NULL or a struct on success, PTR_ERR on failure.h]h0NULL or a struct on success, PTR_ERR on failure.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM5hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h'dmem_cgroup_pool_state_put (C function)c.dmem_cgroup_pool_state_puthNtauh1hhhhhhNhNubh)}(hhh](h)}(hEvoid dmem_cgroup_pool_state_put (struct dmem_cgroup_pool_state *pool)h]h)}(hDvoid dmem_cgroup_pool_state_put(struct dmem_cgroup_pool_state *pool)h](h)}(hvoidh]hvoid}(hj< hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj8 hhhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMjubj)}(h h]h }(hjK hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8 hhhjJ hMjubj")}(hdmem_cgroup_pool_state_puth]j()}(hdmem_cgroup_pool_state_puth]hdmem_cgroup_pool_state_put}(hj] hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjY ubah}(h]h ](j;j<eh"]h$]h&]j@jAuh1j!hj8 hhhjJ hMjubjC)}(h%(struct dmem_cgroup_pool_state *pool)h]jI)}(h#struct dmem_cgroup_pool_state *poolh](jO)}(hjRh]hstruct}(hjy hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhju ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju ubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj_ sbc.dmem_cgroup_pool_state_putasbuh1hhju ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju ubj()}(hpoolh]hpool}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hju ubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjq ubah}(h]h ]h"]h$]h&]j@jAuh1jBhj8 hhhjJ hMjubeh}(h]h ]h"]h$]h&]j@jAjuh1hjjhj4 hhhjJ hMjubah}(h]j/ ah ](jjeh"]h$]h&]jj)jhuh1hhjJ hMjhj1 hhubj)}(hhh]j)}(h,Drop a reference to a dmem_cgroup_pool_stateh]h,Drop a reference to a dmem_cgroup_pool_state}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMjhj hhubah}(h]h ]h"]h$]h&]uh1jhj1 hhhjJ hMjubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct dmem_cgroup_pool_state *pool`` :c:type:`dmem_cgroup_pool_state` **Description** Called to drop a reference to the limiting pool returned by dmem_cgroup_try_charge().h](j)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMnhj ubj)}(hhh]j)}(hI``struct dmem_cgroup_pool_state *pool`` :c:type:`dmem_cgroup_pool_state` h](j!)}(h'``struct dmem_cgroup_pool_state *pool``h]j')}(hj= h]h#struct dmem_cgroup_pool_state *pool}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj; ubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMkhj7 ubj=)}(hhh]j)}(h :c:type:`dmem_cgroup_pool_state`h]h)}(hjX h]j')}(hjX h]hdmem_cgroup_pool_state}(hj] hhhNhNubah}(h]h ](xrefjc-typeeh"]h$]h&]uh1j&hjZ ubah}(h]h ]h"]h$]h&]refdoccore-api/cgroup refdomainjreftypetype refexplicitrefwarnjj)}j]sb reftargetdmem_cgroup_pool_stateuh1hhjR hMkhjV ubah}(h]h ]h"]h$]h&]uh1jhjR hMkhjS ubah}(h]h ]h"]h$]h&]uh1j<hj7 ubeh}(h]h ]h"]h$]h&]uh1jhjR hMkhj4 ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMmhj ubj)}(hUCalled to drop a reference to the limiting pool returned by dmem_cgroup_try_charge().h]hUCalled to drop a reference to the limiting pool returned by dmem_cgroup_try_charge().}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMlhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!dmem_cgroup_uncharge (C function)c.dmem_cgroup_unchargehNtauh1hhhhhhNhNubh)}(hhh](h)}(hIvoid dmem_cgroup_uncharge (struct dmem_cgroup_pool_state *pool, u64 size)h]h)}(hHvoid dmem_cgroup_uncharge(struct dmem_cgroup_pool_state *pool, u64 size)h](h)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hMubj")}(hdmem_cgroup_unchargeh]j()}(hdmem_cgroup_unchargeh]hdmem_cgroup_uncharge}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj ubah}(h]h ](j;j<eh"]h$]h&]j@jAuh1j!hj hhhj hMubjC)}(h/(struct dmem_cgroup_pool_state *pool, u64 size)h](jI)}(h#struct dmem_cgroup_pool_state *poolh](jO)}(hjRh]hstruct}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubj)}(h h]h }(hj' hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hj8 hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj5 ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj: modnameN classnameNjj)}j]j)}jj sbc.dmem_cgroup_unchargeasbuh1hhj ubj)}(h h]h }(hjX hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hjf hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj()}(hpoolh]hpool}(hjs hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj ubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhj ubjI)}(hu64 sizeh](h)}(hhh]j()}(hu64h]hu64}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jT c.dmem_cgroup_unchargeasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj()}(hsizeh]hsize}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj ubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhj ubeh}(h]h ]h"]h$]h&]j@jAuh1jBhj hhhj hMubeh}(h]h ]h"]h$]h&]j@jAjuh1hjjhj hhhj hMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1hhj hMhj hhubj)}(hhh]j)}(hUncharge a pool.h]hUncharge a pool.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct dmem_cgroup_pool_state *pool`` Pool to uncharge. ``u64 size`` Size to uncharge. **Description** Undoes the effects of dmem_cgroup_try_charge. Must be called with the returned pool as argument, and same **index** and **size**.h](j)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj ubj)}(hhh](j)}(h:``struct dmem_cgroup_pool_state *pool`` Pool to uncharge. h](j!)}(h'``struct dmem_cgroup_pool_state *pool``h]j')}(hj& h]h#struct dmem_cgroup_pool_state *pool}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj$ ubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj ubj=)}(hhh]j)}(hPool to uncharge.h]hPool to uncharge.}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj; hMhj< ubah}(h]h ]h"]h$]h&]uh1j<hj ubeh}(h]h ]h"]h$]h&]uh1jhj; hMhj ubj)}(h``u64 size`` Size to uncharge. h](j!)}(h ``u64 size``h]j')}(hj_ h]hu64 size}(hja hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj] ubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjY ubj=)}(hhh]j)}(hSize to uncharge.h]hSize to uncharge.}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt hMhju ubah}(h]h ]h"]h$]h&]uh1j<hjY ubeh}(h]h ]h"]h$]h&]uh1jhjt hMhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubj)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj ubj)}(hUndoes the effects of dmem_cgroup_try_charge. Must be called with the returned pool as argument, and same **index** and **size**.h](hjUndoes the effects of dmem_cgroup_try_charge. Must be called with the returned pool as argument, and same }(hj hhhNhNubj)}(h **index**h]hindex}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh and }(hj hhhNhNubj)}(h**size**h]hsize}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#dmem_cgroup_try_charge (C function)c.dmem_cgroup_try_chargehNtauh1hhhhhhNhNubh)}(hhh](h)}(hint dmem_cgroup_try_charge (struct dmem_cgroup_region *region, u64 size, struct dmem_cgroup_pool_state **ret_pool, struct dmem_cgroup_pool_state **ret_limit_pool)h]h)}(hint dmem_cgroup_try_charge(struct dmem_cgroup_region *region, u64 size, struct dmem_cgroup_pool_state **ret_pool, struct dmem_cgroup_pool_state **ret_limit_pool)h](h)}(hinth]hint}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hMubj")}(hdmem_cgroup_try_chargeh]j()}(hdmem_cgroup_try_chargeh]hdmem_cgroup_try_charge}(hj$ hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj ubah}(h]h ](j;j<eh"]h$]h&]j@jAuh1j!hj hhhj hMubjC)}(h(struct dmem_cgroup_region *region, u64 size, struct dmem_cgroup_pool_state **ret_pool, struct dmem_cgroup_pool_state **ret_limit_pool)h](jI)}(h!struct dmem_cgroup_region *regionh](jO)}(hjRh]hstruct}(hj@ hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj< ubj)}(h h]h }(hjM hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj< ubh)}(hhh]j()}(hdmem_cgroup_regionh]hdmem_cgroup_region}(hj^ hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj[ ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj` modnameN classnameNjj)}j]j)}jj& sbc.dmem_cgroup_try_chargeasbuh1hhj< ubj)}(h h]h }(hj~ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj< ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj< ubj()}(hregionh]hregion}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj< ubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhj8 ubjI)}(hu64 sizeh](h)}(hhh]j()}(hu64h]hu64}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jz c.dmem_cgroup_try_chargeasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj()}(hsizeh]hsize}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj ubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhj8 ubjI)}(h(struct dmem_cgroup_pool_state **ret_poolh](jO)}(hjRh]hstruct}(hj hhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jz c.dmem_cgroup_try_chargeasbuh1hhj ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj()}(hret_poolh]hret_pool}(hj^hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj ubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhj8 ubjI)}(h.struct dmem_cgroup_pool_state **ret_limit_poolh](jO)}(hjRh]hstruct}(hjwhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjsubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jz c.dmem_cgroup_try_chargeasbuh1hhjsubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubj()}(hret_limit_poolh]hret_limit_pool}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjsubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhj8 ubeh}(h]h ]h"]h$]h&]j@jAuh1jBhj hhhj hMubeh}(h]h ]h"]h$]h&]j@jAjuh1hjjhj hhhj hMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1hhj hMhj hhubj)}(hhh]j)}(h*Try charging a new allocation to a region.h]h*Try charging a new allocation to a region.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct dmem_cgroup_region *region`` dmem region to charge ``u64 size`` Size (in bytes) to charge. ``struct dmem_cgroup_pool_state **ret_pool`` On succesfull allocation, the pool that is charged. ``struct dmem_cgroup_pool_state **ret_limit_pool`` On a failed allocation, the limiting pool. **Description** This function charges the **region** region for a size of **size** bytes. If the function succeeds, **ret_pool** is set, which must be passed to dmem_cgroup_uncharge() when undoing the allocation. When this function fails with -EAGAIN and **ret_limit_pool** is non-null, it will be set to the pool for which the limit is hit. This can be used for eviction as argument to dmem_cgroup_evict_valuable(). This reference must be freed with **dmem_cgroup_pool_state_put\(\)**. **Return** 0 on success, -EAGAIN on hitting a limit, or a negative errno on failure.h](j)}(h**Parameters**h]j)}(hj'h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj!ubj)}(hhh](j)}(h<``struct dmem_cgroup_region *region`` dmem region to charge h](j!)}(h%``struct dmem_cgroup_region *region``h]j')}(hjFh]h!struct dmem_cgroup_region *region}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjDubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj@ubj=)}(hhh]j)}(hdmem region to chargeh]hdmem region to charge}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[hMhj\ubah}(h]h ]h"]h$]h&]uh1j<hj@ubeh}(h]h ]h"]h$]h&]uh1jhj[hMhj=ubj)}(h(``u64 size`` Size (in bytes) to charge. h](j!)}(h ``u64 size``h]j')}(hjh]hu64 size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj}ubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjyubj=)}(hhh]j)}(hSize (in bytes) to charge.h]hSize (in bytes) to charge.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j<hjyubeh}(h]h ]h"]h$]h&]uh1jhjhMhj=ubj)}(ha``struct dmem_cgroup_pool_state **ret_pool`` On succesfull allocation, the pool that is charged. h](j!)}(h,``struct dmem_cgroup_pool_state **ret_pool``h]j')}(hjh]h(struct dmem_cgroup_pool_state **ret_pool}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubj=)}(hhh]j)}(h3On succesfull allocation, the pool that is charged.h]h3On succesfull allocation, the pool that is charged.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj=ubj)}(h^``struct dmem_cgroup_pool_state **ret_limit_pool`` On a failed allocation, the limiting pool. h](j!)}(h2``struct dmem_cgroup_pool_state **ret_limit_pool``h]j')}(hjh]h.struct dmem_cgroup_pool_state **ret_limit_pool}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubj=)}(hhh]j)}(h*On a failed allocation, the limiting pool.h]h*On a failed allocation, the limiting pool.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj=ubeh}(h]h ]h"]h$]h&]uh1jhj!ubj)}(h**Description**h]j)}(hj,h]h Description}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj!ubj)}(hIThis function charges the **region** region for a size of **size** bytes.h](hThis function charges the }(hjBhhhNhNubj)}(h **region**h]hregion}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh region for a size of }(hjBhhhNhNubj)}(h**size**h]hsize}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh bytes.}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj!ubj)}(hzIf the function succeeds, **ret_pool** is set, which must be passed to dmem_cgroup_uncharge() when undoing the allocation.h](hIf the function succeeds, }(hjuhhhNhNubj)}(h **ret_pool**h]hret_pool}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubhT is set, which must be passed to dmem_cgroup_uncharge() when undoing the allocation.}(hjuhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj!ubj)}(hXWhen this function fails with -EAGAIN and **ret_limit_pool** is non-null, it will be set to the pool for which the limit is hit. This can be used for eviction as argument to dmem_cgroup_evict_valuable(). This reference must be freed with **dmem_cgroup_pool_state_put\(\)**.h](h*When this function fails with -EAGAIN and }(hjhhhNhNubj)}(h**ret_limit_pool**h]hret_limit_pool}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is non-null, it will be set to the pool for which the limit is hit. This can be used for eviction as argument to dmem_cgroup_evict_valuable(). This reference must be freed with }(hjhhhNhNubj)}(h"**dmem_cgroup_pool_state_put\(\)**h]hdmem_cgroup_pool_state_put()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj!ubj)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj!ubj)}(hI0 on success, -EAGAIN on hitting a limit, or a negative errno on failure.h]hI0 on success, -EAGAIN on hitting a limit, or a negative errno on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h"dmem_cgroup_below_min (C function)c.dmem_cgroup_below_minhNtauh1hhhhhhNhNubh)}(hhh](h)}(hebool dmem_cgroup_below_min (struct dmem_cgroup_pool_state *root, struct dmem_cgroup_pool_state *test)h]h)}(hdbool dmem_cgroup_below_min(struct dmem_cgroup_pool_state *root, struct dmem_cgroup_pool_state *test)h](h)}(hjh]hbool}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhjhMubj")}(hdmem_cgroup_below_minh]j()}(hdmem_cgroup_below_minh]hdmem_cgroup_below_min}(hj0hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj,ubah}(h]h ](j;j<eh"]h$]h&]j@jAuh1j!hj hhhjhMubjC)}(hJ(struct dmem_cgroup_pool_state *root, struct dmem_cgroup_pool_state *test)h](jI)}(h#struct dmem_cgroup_pool_state *rooth](jO)}(hjRh]hstruct}(hjLhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjHubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hjjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjgubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlmodnameN classnameNjj)}j]j)}jj2sbc.dmem_cgroup_below_minasbuh1hhjHubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj()}(hrooth]hroot}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjHubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjDubjI)}(h#struct dmem_cgroup_pool_state *testh](jO)}(hjRh]hstruct}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.dmem_cgroup_below_minasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj()}(htesth]htest}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjDubeh}(h]h ]h"]h$]h&]j@jAuh1jBhj hhhjhMubeh}(h]h ]h"]h$]h&]j@jAjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(h0Tests whether current usage is within min limit.h]h0Tests whether current usage is within min limit.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj<hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjWjjWjjjuh1hhhhhhNhNubj)}(hX<**Parameters** ``struct dmem_cgroup_pool_state *root`` Root of the subtree to calculate protection for, or NULL to calculate global protection. ``struct dmem_cgroup_pool_state *test`` The pool to test the usage/min limit of. **Return** true if usage is below min and the cgroup is protected, false otherwise.h](j)}(h**Parameters**h]j)}(hjah]h Parameters}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj[ubj)}(hhh](j)}(h``struct dmem_cgroup_pool_state *root`` Root of the subtree to calculate protection for, or NULL to calculate global protection. h](j!)}(h'``struct dmem_cgroup_pool_state *root``h]j')}(hjh]h#struct dmem_cgroup_pool_state *root}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj~ubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjzubj=)}(hhh]j)}(hXRoot of the subtree to calculate protection for, or NULL to calculate global protection.h]hXRoot of the subtree to calculate protection for, or NULL to calculate global protection.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j<hjzubeh}(h]h ]h"]h$]h&]uh1jhjhMhjwubj)}(hQ``struct dmem_cgroup_pool_state *test`` The pool to test the usage/min limit of. h](j!)}(h'``struct dmem_cgroup_pool_state *test``h]j')}(hjh]h#struct dmem_cgroup_pool_state *test}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubj=)}(hhh]j)}(h(The pool to test the usage/min limit of.h]h(The pool to test the usage/min limit of.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjwubeh}(h]h ]h"]h$]h&]uh1jhj[ubj)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj[ubj)}(hHtrue if usage is below min and the cgroup is protected, false otherwise.h]hHtrue if usage is below min and the cgroup is protected, false otherwise.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhj[ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h"dmem_cgroup_below_low (C function)c.dmem_cgroup_below_lowhNtauh1hhhhhhNhNubh)}(hhh](h)}(hebool dmem_cgroup_below_low (struct dmem_cgroup_pool_state *root, struct dmem_cgroup_pool_state *test)h]h)}(hdbool dmem_cgroup_below_low(struct dmem_cgroup_pool_state *root, struct dmem_cgroup_pool_state *test)h](h)}(hjh]hbool}(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj5hhhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMubj)}(h h]h }(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhjFhMubj")}(hdmem_cgroup_below_lowh]j()}(hdmem_cgroup_below_lowh]hdmem_cgroup_below_low}(hjYhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjUubah}(h]h ](j;j<eh"]h$]h&]j@jAuh1j!hj5hhhjFhMubjC)}(hJ(struct dmem_cgroup_pool_state *root, struct dmem_cgroup_pool_state *test)h](jI)}(h#struct dmem_cgroup_pool_state *rooth](jO)}(hjRh]hstruct}(hjuhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjqubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj[sbc.dmem_cgroup_below_lowasbuh1hhjqubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubj()}(hrooth]hroot}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjqubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjmubjI)}(h#struct dmem_cgroup_pool_state *testh](jO)}(hjRh]hstruct}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.dmem_cgroup_below_lowasbuh1hhjubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj()}(htesth]htest}(hj>hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjmubeh}(h]h ]h"]h$]h&]j@jAuh1jBhj5hhhjFhMubeh}(h]h ]h"]h$]h&]j@jAjuh1hjjhj1hhhjFhMubah}(h]j,ah ](jjeh"]h$]h&]jj)jhuh1hhjFhMhj.hhubj)}(hhh]j)}(h0Tests whether current usage is within low limit.h]h0Tests whether current usage is within low limit.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjehhubah}(h]h ]h"]h$]h&]uh1jhj.hhhjFhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX<**Parameters** ``struct dmem_cgroup_pool_state *root`` Root of the subtree to calculate protection for, or NULL to calculate global protection. ``struct dmem_cgroup_pool_state *test`` The pool to test the usage/low limit of. **Return** true if usage is below low and the cgroup is protected, false otherwise.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubj)}(hhh](j)}(h``struct dmem_cgroup_pool_state *root`` Root of the subtree to calculate protection for, or NULL to calculate global protection. h](j!)}(h'``struct dmem_cgroup_pool_state *root``h]j')}(hjh]h#struct dmem_cgroup_pool_state *root}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubj=)}(hhh]j)}(hXRoot of the subtree to calculate protection for, or NULL to calculate global protection.h]hXRoot of the subtree to calculate protection for, or NULL to calculate global protection.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hQ``struct dmem_cgroup_pool_state *test`` The pool to test the usage/low limit of. h](j!)}(h'``struct dmem_cgroup_pool_state *test``h]j')}(hjh]h#struct dmem_cgroup_pool_state *test}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubj=)}(hhh]j)}(h(The pool to test the usage/low limit of.h]h(The pool to test the usage/low limit of.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubj)}(hHtrue if usage is below low and the cgroup is protected, false otherwise.h]hHtrue if usage is below low and the cgroup is protected, false otherwise.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h,dmem_cgroup_get_common_ancestor (C function)!c.dmem_cgroup_get_common_ancestorhNtauh1hhhhhhNhNubh)}(hhh](h)}(hstruct dmem_cgroup_pool_state * dmem_cgroup_get_common_ancestor (struct dmem_cgroup_pool_state *a, struct dmem_cgroup_pool_state *b)h]h)}(hstruct dmem_cgroup_pool_state *dmem_cgroup_get_common_ancestor(struct dmem_cgroup_pool_state *a, struct dmem_cgroup_pool_state *b)h](jO)}(hjRh]hstruct}(hjbhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhj^hhhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM7ubj)}(h h]h }(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^hhhjohM7ubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state%}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hj~ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jdmem_cgroup_get_common_ancestorsb!c.dmem_cgroup_get_common_ancestorasbuh1hhj^hhhjohM7ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^hhhjohM7ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^hhhjohM7ubj")}(hdmem_cgroup_get_common_ancestorh]j()}(hjh]hdmem_cgroup_get_common_ancestor}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ](j;j<eh"]h$]h&]j@jAuh1j!hj^hhhjohM7ubjC)}(hD(struct dmem_cgroup_pool_state *a, struct dmem_cgroup_pool_state *b)h](jI)}(h struct dmem_cgroup_pool_state *ah](jO)}(hjRh]hstruct}(hjhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j!c.dmem_cgroup_get_common_ancestorasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj()}(hah]ha}(hj3hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjubjI)}(h struct dmem_cgroup_pool_state *bh](jO)}(hjRh]hstruct}(hjLhhhNhNubah}(h]h ]j[ah"]h$]h&]uh1jNhjHubj)}(h h]h }(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubh)}(hhh]j()}(hdmem_cgroup_pool_stateh]hdmem_cgroup_pool_state}(hjjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjgubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlmodnameN classnameNjj)}j]j!c.dmem_cgroup_get_common_ancestorasbuh1hhjHubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjHubj()}(hbh]hb}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j'hjHubeh}(h]h ]h"]h$]h&]noemphj@jAuh1jHhjubeh}(h]h ]h"]h$]h&]j@jAuh1jBhj^hhhjohM7ubeh}(h]h ]h"]h$]h&]j@jAjuh1hjjhjZhhhjohM7ubah}(h]jUah ](jjeh"]h$]h&]jj)jhuh1hhjohM7hjWhhubj)}(hhh]j)}(h,Find the first common ancestor of two pools.h]h,Find the first common ancestor of two pools.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM7hjhhubah}(h]h ]h"]h$]h&]uh1jhjWhhhjohM7ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct dmem_cgroup_pool_state *a`` First pool to find the common ancestor of. ``struct dmem_cgroup_pool_state *b`` First pool to find the common ancestor of. **Return** The first pool that is a parent of both **a** and **b**, or NULL if either **a** or **b** are NULL, or if such a pool does not exist. A reference to the returned pool is grabbed and must be released by the caller when it is done using the pool.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM;hjubj)}(hhh](j)}(hP``struct dmem_cgroup_pool_state *a`` First pool to find the common ancestor of. h](j!)}(h$``struct dmem_cgroup_pool_state *a``h]j')}(hjh]h struct dmem_cgroup_pool_state *a}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj ubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM8hjubj=)}(hhh]j)}(h*First pool to find the common ancestor of.h]h*First pool to find the common ancestor of.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#hM8hj$ubah}(h]h ]h"]h$]h&]uh1j<hjubeh}(h]h ]h"]h$]h&]uh1jhj#hM8hjubj)}(hP``struct dmem_cgroup_pool_state *b`` First pool to find the common ancestor of. h](j!)}(h$``struct dmem_cgroup_pool_state *b``h]j')}(hjGh]h struct dmem_cgroup_pool_state *b}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjEubah}(h]h ]h"]h$]h&]uh1j hS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM9hjAubj=)}(hhh]j)}(h*First pool to find the common ancestor of.h]h*First pool to find the common ancestor of.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\hM9hj]ubah}(h]h ]h"]h$]h&]uh1j<hjAubeh}(h]h ]h"]h$]h&]uh1jhj\hM9hjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM;hjubj)}(hThe first pool that is a parent of both **a** and **b**, or NULL if either **a** or **b** are NULL, or if such a pool does not exist. A reference to the returned pool is grabbed and must be released by the caller when it is done using the pool.h](h(The first pool that is a parent of both }(hjhhhNhNubj)}(h**a**h]ha}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h**b**h]hb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, or NULL if either }(hjhhhNhNubj)}(h**a**h]ha}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }(hjhhhNhNubj)}(h**b**h]hb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh are NULL, or if such a pool does not exist. A reference to the returned pool is grabbed and must be released by the caller when it is done using the pool.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/core-api/cgroup:7: ./kernel/cgroup/dmem.chM;hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubeh}(h]device-memory-cgroup-api-dmemcgah ]h"]!device memory cgroup api (dmemcg)ah$]h&]uh1hhhhhhhhKubeh}(h]cgroup-kernel-apisah ]h"]cgroup kernel apisah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj)error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_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}(jhjhhhjjjHjMj/ j4 j j j j jjj,j1jUjZu 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.