€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ0/translations/zh_CN/dev-tools/kunit/api/resource”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/zh_TW/dev-tools/kunit/api/resource”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/it_IT/dev-tools/kunit/api/resource”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/ja_JP/dev-tools/kunit/api/resource”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/ko_KR/dev-tools/kunit/api/resource”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/pt_BR/dev-tools/kunit/api/resource”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ0/translations/sp_SP/dev-tools/kunit/api/resource”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒJ/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ Resource API”h]”hŒ Resource API”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ+This file documents the KUnit resource API.”h]”hŒ+This file documents the KUnit resource API.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒ•Most users won't need to use this API directly, power users can use it to store state on a per-test basis, register custom cleanup actions, and more.”h]”hŒ—Most users won’t need to use this API directly, power users can use it to store state on a per-test basis, register custom cleanup actions, and more.”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhÊh²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œkunit_resource (C struct)”Œc.kunit_resource”hNt”auh1hûhhÊh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒkunit_resource”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct kunit_resource”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jhjh²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j/hjh²hh³j.h´KubhŒ desc_name”“”)�”}”(hŒkunit_resource”h]”hŒ desc_sig_name”“”)�”}”(hjh]”hŒkunit_resource”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jFhjBubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1j@hjh²hh³j.h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jŒsphinx_line_type”Œ declarator”hjh²hh³j.h´Kubah}”(h]”j ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jh³j.h´Khjh²hubhŒ desc_content”“”)�”}”(hhh]”hÞ)�”}”(hŒ$represents a *test managed resource*”h]”(hŒ represents a ”…”�”}”(hjwh²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*test managed resource*”h]”hŒtest managed resource”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Khjth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjh²hh³j.h´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”jŸŒobjtype”j Œdesctype”j Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j h²hhhÊh³Nh´NubhŒ container”“”)�”}”(hX**Definition**:: struct kunit_resource { void *data; const char *name; kunit_resource_free_t free; }; **Members** ``data`` for the user to store arbitrary data. ``name`` optional name ``free`` a user supplied function to free the resource.”h]”(hÞ)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj°ubhŒ:”…”�”}”(hj°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Khj¬ubhŒ literal_block”“”)�”}”(hŒ`struct kunit_resource { void *data; const char *name; kunit_resource_free_t free; };”h]”hŒ`struct kunit_resource { void *data; const char *name; kunit_resource_free_t free; };”…”�”}”hjÑsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÏh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Khj¬ubhÞ)�”}”(hŒ **Members**”h]”jµ)�”}”(hjâh]”hŒMembers”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K%hj¬ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ/``data`` for the user to store arbitrary data. ”h]”(hŒterm”“”)�”}”(hŒ``data``”h]”hŒliteral”“”)�”}”(hjh]”hŒdata”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KhjÿubhŒ definition”“”)�”}”(hhh]”hÞ)�”}”(hŒ%for the user to store arbitrary data.”h]”hŒ%for the user to store arbitrary data.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´Khj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jh´Khjúubjþ)�”}”(hŒ``name`` optional name ”h]”(j)�”}”(hŒ``name``”h]”j )�”}”(hjDh]”hŒname”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Khj>ubj )�”}”(hhh]”hÞ)�”}”(hŒ optional name”h]”hŒ optional name”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jYh´KhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jYh´Khjúubjþ)�”}”(hŒ7``free`` a user supplied function to free the resource.”h]”(j)�”}”(hŒ``free``”h]”j )�”}”(hj}h]”hŒfree”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Khjwubj )�”}”(hhh]”hÞ)�”}”(hŒ.a user supplied function to free the resource.”h]”hŒ.a user supplied function to free the resource.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Khj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j’h´Khjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´NubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hjÀh]”hŒ Description”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K hhÊh²hubhÞ)�”}”(hXRRepresents a *test managed resource*, a resource which will automatically be cleaned up at the end of a test case. This cleanup is performed by the 'free' function. The struct kunit_resource itself is freed automatically with kfree() if it was allocated by KUnit (e.g., by kunit_alloc_resource()), but must be freed by the user otherwise.”h]”(hŒ Represents a ”…”�”}”(hjÖh²hh³Nh´Nubj€)�”}”(hŒ*test managed resource*”h]”hŒtest managed resource”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubhX2, a resource which will automatically be cleaned up at the end of a test case. This cleanup is performed by the ‘free’ function. The struct kunit_resource itself is freed automatically with kfree() if it was allocated by KUnit (e.g., by kunit_alloc_resource()), but must be freed by the user otherwise.”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KhhÊh²hubhÞ)�”}”(hXYResources are reference counted so if a resource is retrieved via kunit_alloc_and_get_resource() or kunit_find_resource(), we need to call kunit_put_resource() to reduce the resource reference count when finished with it. Note that kunit_alloc_resource() does not require a kunit_resource_put() because it does not retrieve the resource itself.”h]”hXYResources are reference counted so if a resource is retrieved via kunit_alloc_and_get_resource() or kunit_find_resource(), we need to call kunit_put_resource() to reduce the resource reference count when finished with it. Note that kunit_alloc_resource() does not require a kunit_resource_put() because it does not retrieve the resource itself.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K#hhÊh²hubhÞ)�”}”(hŒ **Example**”h]”jµ)�”}”(hjh]”hŒExample”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K)hhÊh²hubjÐ)�”}”(hXÅstruct kunit_kmalloc_params { size_t size; gfp_t gfp; }; static int kunit_kmalloc_init(struct kunit_resource *res, void *context) { struct kunit_kmalloc_params *params = context; res->data = kmalloc(params->size, params->gfp); if (!res->data) return -ENOMEM; return 0; } static void kunit_kmalloc_free(struct kunit_resource *res) { kfree(res->data); } void *kunit_kmalloc(struct kunit *test, size_t size, gfp_t gfp) { struct kunit_kmalloc_params params; params.size = size; params.gfp = gfp; return kunit_alloc_resource(test, kunit_kmalloc_init, kunit_kmalloc_free, gfp, ¶ms); }”h]”hXÅstruct kunit_kmalloc_params { size_t size; gfp_t gfp; }; static int kunit_kmalloc_init(struct kunit_resource *res, void *context) { struct kunit_kmalloc_params *params = context; res->data = kmalloc(params->size, params->gfp); if (!res->data) return -ENOMEM; return 0; } static void kunit_kmalloc_free(struct kunit_resource *res) { kfree(res->data); } void *kunit_kmalloc(struct kunit *test, size_t size, gfp_t gfp) { struct kunit_kmalloc_params params; params.size = size; params.gfp = gfp; return kunit_alloc_resource(test, kunit_kmalloc_init, kunit_kmalloc_free, gfp, ¶ms); }”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”jŸŒhighlight_args”}”uh1jÏh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K*hhÊh²hubhÞ)�”}”(hŒáResources can also be named, with lookup/removal done on a name basis also. kunit_add_named_resource(), kunit_find_named_resource() and kunit_destroy_named_resource(). Resource names must be unique within the test instance.”h]”hŒáResources can also be named, with lookup/removal done on a name basis also. kunit_add_named_resource(), kunit_find_named_resource() and kunit_destroy_named_resource(). Resource names must be unique within the test instance.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KLhhÊh²hubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒkunit_get_resource (C function)”Œc.kunit_get_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒ4void kunit_get_resource (struct kunit_resource *res)”h]”j)�”}”(hŒ3void kunit_get_resource(struct kunit_resource *res)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jYhjUh²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K_ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjUh²hh³jjh´K_ubjA)�”}”(hŒkunit_get_resource”h]”jG)�”}”(hŒkunit_get_resource”h]”hŒkunit_get_resource”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjyubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hjUh²hh³jjh´K_ubhŒdesc_parameterlist”“”)�”}”(hŒ(struct kunit_resource *res)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct kunit_resource *res”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj™ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj™ubh)�”}”(hhh]”jG)�”}”(hŒkunit_resource”h]”hŒkunit_resource”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”Œ identifier”Œ reftarget”j½Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jÖŒ ASTIdentifier”“”)�”}”jÑjsbŒc.kunit_get_resource”†”asbuh1hhj™ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj™ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jñhj™ubjG)�”}”(hŒres”h]”hŒres”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj“ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hjUh²hh³jjh´K_ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhjQh²hh³jjh´K_ubah}”(h]”jLah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jjh´K_hjNh²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ†Hold resource for use. Should not need to be used by most users as we automatically get resources retrieved by kunit_find_resource*().”h]”hŒ†Hold resource for use. Should not need to be used by most users as we automatically get resources retrieved by kunit_find_resource*().”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K_hj)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjNh²hh³jjh´K_ubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jDj¦jDj§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hŒ9**Parameters** ``struct kunit_resource *res`` resource”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hjNh]”hŒ Parameters”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KchjHubjù)�”}”(hhh]”jþ)�”}”(hŒ'``struct kunit_resource *res`` resource”h]”(j)�”}”(hŒ``struct kunit_resource *res``”h]”j )�”}”(hjmh]”hŒstruct kunit_resource *res”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Kehjgubj )�”}”(hhh]”hÞ)�”}”(hŒresource”h]”hŒresource”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Kbhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j‚h´Kehjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjHubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒkunit_put_resource (C function)”Œc.kunit_put_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒ4void kunit_put_resource (struct kunit_resource *res)”h]”j)�”}”(hŒ3void kunit_put_resource(struct kunit_resource *res)”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÃh²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K}ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÃh²hh³jÕh´K}ubjA)�”}”(hŒkunit_put_resource”h]”jG)�”}”(hŒkunit_put_resource”h]”hŒkunit_put_resource”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjäubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hjÃh²hh³jÕh´K}ubj’)�”}”(hŒ(struct kunit_resource *res)”h]”j˜)�”}”(hŒstruct kunit_resource *res”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjubh)�”}”(hhh]”jG)�”}”(hŒkunit_resource”h]”hŒkunit_resource”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j$Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑjêsbŒc.kunit_put_resource”†”asbuh1hhjubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjubjG)�”}”(hŒres”h]”hŒres”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjüubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hjÃh²hh³jÕh´K}ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj¿h²hh³jÕh´K}ubah}”(h]”jºah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jÕh´K}hj¼h²hubjs)�”}”(hhh]”hÞ)�”}”(hXuWhen caller is done with retrieved resource, kunit_put_resource() should be called to drop reference count. The resource list maintains a reference count on resources, so if no users are utilizing a resource and it is removed from the resource list, it will be freed via the associated free function (if any). Only needs to be used if we alloc_and_get() or find() resource.”h]”hXuWhen caller is done with retrieved resource, kunit_put_resource() should be called to drop reference count. The resource list maintains a reference count on resources, so if no users are utilizing a resource and it is removed from the resource list, it will be freed via the associated free function (if any). Only needs to be used if we alloc_and_get() or find() resource.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K}hj„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj¼h²hh³jÕh´K}ubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jŸj¦jŸj§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hŒ9**Parameters** ``struct kunit_resource *res`` resource”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj©h]”hŒ Parameters”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K�hj£ubjù)�”}”(hhh]”jþ)�”}”(hŒ'``struct kunit_resource *res`` resource”h]”(j)�”}”(hŒ``struct kunit_resource *res``”h]”j )�”}”(hjÈh]”hŒstruct kunit_resource *res”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KƒhjÂubj )�”}”(hhh]”hÞ)�”}”(hŒresource”h]”hŒresource”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K†hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÝh´Kƒhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhj£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!__kunit_add_resource (C function)”Œc.__kunit_add_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒ�int __kunit_add_resource (struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, struct kunit_resource *res, void *data)”h]”j)�”}”(hŒŒint __kunit_add_resource(struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, struct kunit_resource *res, void *data)”h]”(jZ)�”}”(hŒint”h]”hŒint”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjh²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KŽubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjh²hh³j0h´KŽubjA)�”}”(hŒ__kunit_add_resource”h]”jG)�”}”(hŒ__kunit_add_resource”h]”hŒ__kunit_add_resource”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj?ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hjh²hh³j0h´KŽubj’)�”}”(hŒt(struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, struct kunit_resource *res, void *data)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj[ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj[ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑjEsbŒc.__kunit_add_resource”†”asbuh1hhj[ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj[ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj[ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjWubj˜)�”}”(hŒkunit_resource_init_t init”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_init_t”h]”hŒkunit_resource_init_t”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jÖŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j™Œc.__kunit_add_resource”†”asbuh1hhjÍubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÍubjG)�”}”(hŒinit”h]”hŒinit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjWubj˜)�”}”(hŒkunit_resource_free_t free”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_free_t”h]”hŒkunit_resource_free_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j™Œc.__kunit_add_resource”†”asbuh1hhjubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjubjG)�”}”(hŒfree”h]”hŒfree”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjWubj˜)�”}”(hŒstruct kunit_resource *res”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj]ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj]ubh)�”}”(hhh]”jG)�”}”(hŒkunit_resource”h]”hŒkunit_resource”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j�Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j™Œc.__kunit_add_resource”†”asbuh1hhj]ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj]ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj]ubjG)�”}”(hŒres”h]”hŒres”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjWubj˜)�”}”(hŒ void *data”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÍubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÍubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjÍubjG)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjWubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hjh²hh³j0h´KŽubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhjh²hh³j0h´KŽubah}”(h]”jah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³j0h´KŽhjh²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ"Internal helper to add a resource.”h]”hŒ"Internal helper to add a resource.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KŽhj!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjh²hh³j0h´KŽubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥j<j¦j<j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hXG**Parameters** ``struct kunit *test`` The test context object. ``kunit_resource_init_t init`` a user-supplied function to initialize the result (if needed). If none is supplied, the resource data value is simply set to **data**. If an init function is supplied, **data** is passed to it instead. ``kunit_resource_free_t free`` a user-supplied function to free the resource (if needed). ``struct kunit_resource *res`` The resource. ``void *data`` value to pass to init function or set in resource data field. **Description** res->should_kfree is not initialised.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hjFh]”hŒ Parameters”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K’hj@ubjù)�”}”(hhh]”(jþ)�”}”(hŒ0``struct kunit *test`` The test context object. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjeh]”hŒstruct kunit *test”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K‘hj_ubj )�”}”(hhh]”hÞ)�”}”(hŒThe test context object.”h]”hŒThe test context object.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jzh´K‘hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jzh´K‘hj\ubjþ)�”}”(hŒê``kunit_resource_init_t init`` a user-supplied function to initialize the result (if needed). If none is supplied, the resource data value is simply set to **data**. If an init function is supplied, **data** is passed to it instead. ”h]”(j)�”}”(hŒ``kunit_resource_init_t init``”h]”j )�”}”(hjžh]”hŒkunit_resource_init_t init”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K”hj˜ubj )�”}”(hhh]”hÞ)�”}”(hŒÊa user-supplied function to initialize the result (if needed). If none is supplied, the resource data value is simply set to **data**. If an init function is supplied, **data** is passed to it instead.”h]”(hŒ~a user-supplied function to initialize the result (if needed). If none is supplied, the resource data value is simply set to ”…”�”}”(hj·h²hh³Nh´Nubjµ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj·ubhŒ#. If an init function is supplied, ”…”�”}”(hj·h²hh³Nh´Nubjµ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj·ubhŒ is passed to it instead.”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K’hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j³h´K”hj\ubjþ)�”}”(hŒZ``kunit_resource_free_t free`` a user-supplied function to free the resource (if needed). ”h]”(j)�”}”(hŒ``kunit_resource_free_t free``”h]”j )�”}”(hjüh]”hŒkunit_resource_free_t free”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K•hjöubj )�”}”(hhh]”hÞ)�”}”(hŒ:a user-supplied function to free the resource (if needed).”h]”hŒ:a user-supplied function to free the resource (if needed).”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j h´K•hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j h´K•hj\ubjþ)�”}”(hŒ-``struct kunit_resource *res`` The resource. ”h]”(j)�”}”(hŒ``struct kunit_resource *res``”h]”j )�”}”(hj5 h]”hŒstruct kunit_resource *res”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K–hj/ ubj )�”}”(hhh]”hÞ)�”}”(hŒ The resource.”h]”hŒ The resource.”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jJ h´K–hjK ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jJ h´K–hj\ubjþ)�”}”(hŒM``void *data`` value to pass to init function or set in resource data field. ”h]”(j)�”}”(hŒ``void *data``”h]”j )�”}”(hjn h]”hŒ void *data”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K—hjh ubj )�”}”(hhh]”hÞ)�”}”(hŒ=value to pass to init function or set in resource data field.”h]”hŒ=value to pass to init function or set in resource data field.”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jƒ h´K—hj„ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jƒ h´K—hj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj@ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hj© h]”hŒ Description”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K™hj@ubhÞ)�”}”(hŒ%res->should_kfree is not initialised.”h]”hŒ%res->should_kfree is not initialised.”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K�hj@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒkunit_add_resource (C function)”Œc.kunit_add_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒ‹int kunit_add_resource (struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, struct kunit_resource *res, void *data)”h]”j)�”}”(hŒŠint kunit_add_resource(struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, struct kunit_resource *res, void *data)”h]”(jZ)�”}”(hŒint”h]”hŒint”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjê h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjê h²hh³jü h´K ubjA)�”}”(hŒkunit_add_resource”h]”jG)�”}”(hŒkunit_add_resource”h]”hŒkunit_add_resource”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hjê h²hh³jü h´K ubj’)�”}”(hŒt(struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, struct kunit_resource *res, void *data)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj' ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj' ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjF ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jK Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑj sbŒc.kunit_add_resource”†”asbuh1hhj' ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj' ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj' ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj' ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj# ubj˜)�”}”(hŒkunit_resource_init_t init”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_init_t”h]”hŒkunit_resource_init_t”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj� ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j¢ Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”je Œc.kunit_add_resource”†”asbuh1hhj™ ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj™ ubjG)�”}”(hŒinit”h]”hŒinit”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj™ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj# ubj˜)�”}”(hŒkunit_resource_free_t free”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_free_t”h]”hŒkunit_resource_free_t”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjå ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jê Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”je Œc.kunit_add_resource”†”asbuh1hhjá ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjá ubjG)�”}”(hŒfree”h]”hŒfree”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjá ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj# ubj˜)�”}”(hŒstruct kunit_resource *res”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj) ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj) ubh)�”}”(hhh]”jG)�”}”(hŒkunit_resource”h]”hŒkunit_resource”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjH ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jM Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”je Œc.kunit_add_resource”†”asbuh1hhj) ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj) ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj) ubjG)�”}”(hŒres”h]”hŒres”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj) ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj# ubj˜)�”}”(hŒ void *data”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj™ ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj™ ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj™ ubjG)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj™ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj# ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hjê h²hh³jü h´K ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhjæ h²hh³jü h´K ubah}”(h]”já ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jü h´K hjã h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒAdd a *test managed resource*.”h]”(hŒAdd a ”…”�”}”(hjð h²hh³Nh´Nubj€)�”}”(hŒ*test managed resource*”h]”hŒtest managed resource”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjð ubhŒ.”…”�”}”(hjð h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K hjí h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjã h²hh³jü h´K ubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥j j¦j j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hX**Parameters** ``struct kunit *test`` The test context object. ``kunit_resource_init_t init`` a user-supplied function to initialize the result (if needed). If none is supplied, the resource data value is simply set to **data**. If an init function is supplied, **data** is passed to it instead. ``kunit_resource_free_t free`` a user-supplied function to free the resource (if needed). ``struct kunit_resource *res`` The resource. ``void *data`` value to pass to init function or set in resource data field.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj$ h]”hŒ Parameters”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj" ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¤hj ubjù)�”}”(hhh]”(jþ)�”}”(hŒ0``struct kunit *test`` The test context object. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjC h]”hŒstruct kunit *test”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjA ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¡hj= ubj )�”}”(hhh]”hÞ)�”}”(hŒThe test context object.”h]”hŒThe test context object.”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jX h´K¡hjY ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj= ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jX h´K¡hj: ubjþ)�”}”(hŒê``kunit_resource_init_t init`` a user-supplied function to initialize the result (if needed). If none is supplied, the resource data value is simply set to **data**. If an init function is supplied, **data** is passed to it instead. ”h]”(j)�”}”(hŒ``kunit_resource_init_t init``”h]”j )�”}”(hj| h]”hŒkunit_resource_init_t init”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¤hjv ubj )�”}”(hhh]”hÞ)�”}”(hŒÊa user-supplied function to initialize the result (if needed). If none is supplied, the resource data value is simply set to **data**. If an init function is supplied, **data** is passed to it instead.”h]”(hŒ~a user-supplied function to initialize the result (if needed). If none is supplied, the resource data value is simply set to ”…”�”}”(hj• h²hh³Nh´Nubjµ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj• ubhŒ#. If an init function is supplied, ”…”�”}”(hj• h²hh³Nh´Nubjµ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj• ubhŒ is passed to it instead.”…”�”}”(hj• h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¢hj’ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjv ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j‘ h´K¤hj: ubjþ)�”}”(hŒZ``kunit_resource_free_t free`` a user-supplied function to free the resource (if needed). ”h]”(j)�”}”(hŒ``kunit_resource_free_t free``”h]”j )�”}”(hjÚ h]”hŒkunit_resource_free_t free”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¥hjÔ ubj )�”}”(hhh]”hÞ)�”}”(hŒ:a user-supplied function to free the resource (if needed).”h]”hŒ:a user-supplied function to free the resource (if needed).”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jï h´K¥hjð ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jï h´K¥hj: ubjþ)�”}”(hŒ-``struct kunit_resource *res`` The resource. ”h]”(j)�”}”(hŒ``struct kunit_resource *res``”h]”j )�”}”(hj h]”hŒstruct kunit_resource *res”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¦hj ubj )�”}”(hhh]”hÞ)�”}”(hŒ The resource.”h]”hŒ The resource.”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j( h´K¦hj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j( h´K¦hj: ubjþ)�”}”(hŒL``void *data`` value to pass to init function or set in resource data field.”h]”(j)�”}”(hŒ``void *data``”h]”j )�”}”(hjL h]”hŒ void *data”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjJ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¨hjF ubj )�”}”(hhh]”hÞ)�”}”(hŒ=value to pass to init function or set in resource data field.”h]”hŒ=value to pass to init function or set in resource data field.”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K§hjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjF ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³ja h´K¨hj: ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%kunit_add_named_resource (C function)”Œc.kunit_add_named_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒ£int kunit_add_named_resource (struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, struct kunit_resource *res, const char *name, void *data)”h]”j)�”}”(hŒ¢int kunit_add_named_resource(struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, struct kunit_resource *res, const char *name, void *data)”h]”(jZ)�”}”(hŒint”h]”hŒint”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¢ h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K·ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¢ h²hh³j´ h´K·ubjA)�”}”(hŒkunit_add_named_resource”h]”jG)�”}”(hŒkunit_add_named_resource”h]”hŒkunit_add_named_resource”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjà ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hj¢ h²hh³j´ h´K·ubj’)�”}”(hŒ†(struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, struct kunit_resource *res, const char *name, void *data)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjß ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjß ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjþ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑjÉ sbŒc.kunit_add_named_resource”†”asbuh1hhjß ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjß ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjß ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjß ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjÛ ubj˜)�”}”(hŒkunit_resource_init_t init”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_init_t”h]”hŒkunit_resource_init_t”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jZŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jŒc.kunit_add_named_resource”†”asbuh1hhjQubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjQubjG)�”}”(hŒinit”h]”hŒinit”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjÛ ubj˜)�”}”(hŒkunit_resource_free_t free”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_free_t”h]”hŒkunit_resource_free_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j¢Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jŒc.kunit_add_named_resource”†”asbuh1hhj™ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj™ubjG)�”}”(hŒfree”h]”hŒfree”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjÛ ubj˜)�”}”(hŒstruct kunit_resource *res”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjáubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjáubh)�”}”(hhh]”jG)�”}”(hŒkunit_resource”h]”hŒkunit_resource”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jŒc.kunit_add_named_resource”†”asbuh1hhjáubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjáubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjáubjG)�”}”(hŒres”h]”hŒres”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjÛ ubj˜)�”}”(hŒconst char *name”h]”(j)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjQubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjQubjZ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjQubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjQubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjQubjG)�”}”(hŒname”h]”hŒname”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjÛ ubj˜)�”}”(hŒ void *data”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¯ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¯ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj¯ubjG)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjÛ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hj¢ h²hh³j´ h´K·ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhjž h²hh³j´ h´K·ubah}”(h]”j™ ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³j´ h´K·hj› h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ$Add a named *test managed resource*.”h]”(hŒ Add a named ”…”�”}”(hjh²hh³Nh´Nubj€)�”}”(hŒ*test managed resource*”h]”hŒtest managed resource”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K·hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj› h²hh³j´ h´K·ubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥j0j¦j0j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hX¾**Parameters** ``struct kunit *test`` The test context object. ``kunit_resource_init_t init`` a user-supplied function to initialize the resource data, if needed. ``kunit_resource_free_t free`` a user-supplied function to free the resource data, if needed. ``struct kunit_resource *res`` The resource. ``const char *name`` name to be set for resource. ``void *data`` value to pass to init function or set in resource data field.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj:h]”hŒ Parameters”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K»hj4ubjù)�”}”(hhh]”(jþ)�”}”(hŒ0``struct kunit *test`` The test context object. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjYh]”hŒstruct kunit *test”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¸hjSubj )�”}”(hhh]”hÞ)�”}”(hŒThe test context object.”h]”hŒThe test context object.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jnh´K¸hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jnh´K¸hjPubjþ)�”}”(hŒd``kunit_resource_init_t init`` a user-supplied function to initialize the resource data, if needed. ”h]”(j)�”}”(hŒ``kunit_resource_init_t init``”h]”j )�”}”(hj’h]”hŒkunit_resource_init_t init”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¹hjŒubj )�”}”(hhh]”hÞ)�”}”(hŒDa user-supplied function to initialize the resource data, if needed.”h]”hŒDa user-supplied function to initialize the resource data, if needed.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j§h´K¹hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j§h´K¹hjPubjþ)�”}”(hŒ^``kunit_resource_free_t free`` a user-supplied function to free the resource data, if needed. ”h]”(j)�”}”(hŒ``kunit_resource_free_t free``”h]”j )�”}”(hjËh]”hŒkunit_resource_free_t free”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KºhjÅubj )�”}”(hhh]”hÞ)�”}”(hŒ>a user-supplied function to free the resource data, if needed.”h]”hŒ>a user-supplied function to free the resource data, if needed.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jàh´Kºhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jàh´KºhjPubjþ)�”}”(hŒ-``struct kunit_resource *res`` The resource. ”h]”(j)�”}”(hŒ``struct kunit_resource *res``”h]”j )�”}”(hjh]”hŒstruct kunit_resource *res”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K»hjþubj )�”}”(hhh]”hÞ)�”}”(hŒ The resource.”h]”hŒ The resource.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´K»hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jh´K»hjPubjþ)�”}”(hŒ2``const char *name`` name to be set for resource. ”h]”(j)�”}”(hŒ``const char *name``”h]”j )�”}”(hj=h]”hŒconst char *name”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¼hj7ubj )�”}”(hhh]”hÞ)�”}”(hŒname to be set for resource.”h]”hŒname to be set for resource.”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jRh´K¼hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jRh´K¼hjPubjþ)�”}”(hŒL``void *data`` value to pass to init function or set in resource data field.”h]”(j)�”}”(hŒ``void *data``”h]”j )�”}”(hjvh]”hŒ void *data”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K¾hjpubj )�”}”(hhh]”hÞ)�”}”(hŒ=value to pass to init function or set in resource data field.”h]”hŒ=value to pass to init function or set in resource data field.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´K½hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j‹h´K¾hjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ)kunit_alloc_and_get_resource (C function)”Œc.kunit_alloc_and_get_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒ¤struct kunit_resource * kunit_alloc_and_get_resource (struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, gfp_t internal_gfp, void *context)”h]”j)�”}”(hŒ¢struct kunit_resource *kunit_alloc_and_get_resource(struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, gfp_t internal_gfp, void *context)”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjÌh²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KØubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÌh²hh³jÝh´KØubh)�”}”(hhh]”jG)�”}”(hŒkunit_resource”h]”hŒkunit_resource”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jñŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑŒkunit_alloc_and_get_resource”sbŒc.kunit_alloc_and_get_resource”†”asbuh1hhjÌh²hh³jÝh´KØubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÌh²hh³jÝh´KØubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjÌh²hh³jÝh´KØubjA)�”}”(hŒkunit_alloc_and_get_resource”h]”jG)�”}”(hj h]”hŒkunit_alloc_and_get_resource”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj+ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hjÌh²hh³jÝh´KØubj’)�”}”(hŒo(struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, gfp_t internal_gfp, void *context)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjFubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjFubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jjŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j Œc.kunit_alloc_and_get_resource”†”asbuh1hhjFubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjFubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjFubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjBubj˜)�”}”(hŒkunit_resource_init_t init”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_init_t”h]”hŒkunit_resource_init_t”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j¿Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j Œc.kunit_alloc_and_get_resource”†”asbuh1hhj¶ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¶ubjG)�”}”(hŒinit”h]”hŒinit”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjBubj˜)�”}”(hŒkunit_resource_free_t free”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_free_t”h]”hŒkunit_resource_free_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j Œc.kunit_alloc_and_get_resource”†”asbuh1hhjþubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjþubjG)�”}”(hŒfree”h]”hŒfree”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjBubj˜)�”}”(hŒgfp_t internal_gfp”h]”(h)�”}”(hhh]”jG)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jOŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j Œc.kunit_alloc_and_get_resource”†”asbuh1hhjFubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjFubjG)�”}”(hŒ internal_gfp”h]”hŒ internal_gfp”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjBubj˜)�”}”(hŒ void *context”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjŽubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjŽubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjŽubjG)�”}”(hŒcontext”h]”hŒcontext”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjBubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hjÌh²hh³jÝh´KØubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhjÈh²hh³jÝh´KØubah}”(h]”jÃah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jÝh´KØhjÅh²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ0Allocates and returns a *test managed resource*.”h]”(hŒAllocates and returns a ”…”�”}”(hjåh²hh³Nh´Nubj€)�”}”(hŒ*test managed resource*”h]”hŒtest managed resource”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubhŒ.”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KØhjâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjÅh²hh³jÝh´KØubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jj¦jj§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hX**Parameters** ``struct kunit *test`` The test context object. ``kunit_resource_init_t init`` a user supplied function to initialize the resource. ``kunit_resource_free_t free`` a user supplied function to free the resource (if needed). ``gfp_t internal_gfp`` gfp to use for internal allocations, if unsure, use GFP_KERNEL ``void *context`` for the user to pass in arbitrary data to the init function. **Description** Allocates a *test managed resource*, a resource which will automatically be cleaned up at the end of a test case. See :c:type:`struct kunit_resource ` for an example. This is effectively identical to kunit_alloc_resource, but returns the struct kunit_resource pointer, not just the 'data' pointer. It therefore also increments the resource's refcount, so kunit_put_resource() should be called when you've finished with it. **Note** KUnit needs to allocate memory for a kunit_resource object. You must specify an **internal_gfp** that is compatible with the use context of your resource.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KÜhjubjù)�”}”(hhh]”(jþ)�”}”(hŒ0``struct kunit *test`` The test context object. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hj8h]”hŒstruct kunit *test”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KÙhj2ubj )�”}”(hhh]”hÞ)�”}”(hŒThe test context object.”h]”hŒThe test context object.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jMh´KÙhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jMh´KÙhj/ubjþ)�”}”(hŒT``kunit_resource_init_t init`` a user supplied function to initialize the resource. ”h]”(j)�”}”(hŒ``kunit_resource_init_t init``”h]”j )�”}”(hjqh]”hŒkunit_resource_init_t init”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KÚhjkubj )�”}”(hhh]”hÞ)�”}”(hŒ4a user supplied function to initialize the resource.”h]”hŒ4a user supplied function to initialize the resource.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j†h´KÚhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j†h´KÚhj/ubjþ)�”}”(hŒZ``kunit_resource_free_t free`` a user supplied function to free the resource (if needed). ”h]”(j)�”}”(hŒ``kunit_resource_free_t free``”h]”j )�”}”(hjªh]”hŒkunit_resource_free_t free”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KÛhj¤ubj )�”}”(hhh]”hÞ)�”}”(hŒ:a user supplied function to free the resource (if needed).”h]”hŒ:a user supplied function to free the resource (if needed).”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¿h´KÛhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j¿h´•=KÛhj/ubjþ)�”}”(hŒV``gfp_t internal_gfp`` gfp to use for internal allocations, if unsure, use GFP_KERNEL ”h]”(j)�”}”(hŒ``gfp_t internal_gfp``”h]”j )�”}”(hjãh]”hŒgfp_t internal_gfp”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KÜhjÝubj )�”}”(hhh]”hÞ)�”}”(hŒ>gfp to use for internal allocations, if unsure, use GFP_KERNEL”h]”hŒ>gfp to use for internal allocations, if unsure, use GFP_KERNEL”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jøh´KÜhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jøh´KÜhj/ubjþ)�”}”(hŒO``void *context`` for the user to pass in arbitrary data to the init function. ”h]”(j)�”}”(hŒ``void *context``”h]”j )�”}”(hjh]”hŒ void *context”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KÝhjubj )�”}”(hhh]”hÞ)�”}”(hŒ` for an example.”h]”(hŒ Allocates a ”…”�”}”(hjmh²hh³Nh´Nubj€)�”}”(hŒ*test managed resource*”h]”hŒtest managed resource”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmubhŒS, a resource which will automatically be cleaned up at the end of a test case. See ”…”�”}”(hjmh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct kunit_resource `”h]”j )�”}”(hj‰h]”hŒstruct kunit_resource”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”(Œxref”jŸŒc-type”eh"]”h$]”h&]”uh1j hj‡ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdev-tools/kunit/api/resource”Œ refdomain”jŸŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jÕjØ)�”}”jÛ]”sbŒ reftarget”Œkunit_resource”uh1hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KÞhjmubhŒ for an example.”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¬h´KÞhjubhÞ)�”}”(hŒÿThis is effectively identical to kunit_alloc_resource, but returns the struct kunit_resource pointer, not just the 'data' pointer. It therefore also increments the resource's refcount, so kunit_put_resource() should be called when you've finished with it.”h]”hXThis is effectively identical to kunit_alloc_resource, but returns the struct kunit_resource pointer, not just the ‘data’ pointer. It therefore also increments the resource’s refcount, so kunit_put_resource() should be called when you’ve finished with it.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KâhjubhÞ)�”}”(hŒ**Note**”h]”jµ)�”}”(hjÈh]”hŒNote”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´KçhjubhÞ)�”}”(hŒšKUnit needs to allocate memory for a kunit_resource object. You must specify an **internal_gfp** that is compatible with the use context of your resource.”h]”(hŒPKUnit needs to allocate memory for a kunit_resource object. You must specify an ”…”�”}”(hjÞh²hh³Nh´Nubjµ)�”}”(hŒ**internal_gfp**”h]”hŒ internal_gfp”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjÞubhŒ: that is compatible with the use context of your resource.”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Kèhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!kunit_alloc_resource (C function)”Œc.kunit_alloc_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒ‹void * kunit_alloc_resource (struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, gfp_t internal_gfp, void *context)”h]”j)�”}”(hŒ‰void *kunit_alloc_resource(struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, gfp_t internal_gfp, void *context)”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjh²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjh²hh³j-h´M ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjh²hh³j-h´M ubjA)�”}”(hŒkunit_alloc_resource”h]”jG)�”}”(hŒkunit_alloc_resource”h]”hŒkunit_alloc_resource”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjIubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hjh²hh³j-h´M ubj’)�”}”(hŒo(struct kunit *test, kunit_resource_init_t init, kunit_resource_free_t free, gfp_t internal_gfp, void *context)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjeubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjeubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j‰Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑjOsbŒc.kunit_alloc_resource”†”asbuh1hhjeubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjeubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjeubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjaubj˜)�”}”(hŒkunit_resource_init_t init”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_init_t”h]”hŒkunit_resource_init_t”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jàŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j£Œc.kunit_alloc_resource”†”asbuh1hhj×ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj×ubjG)�”}”(hŒinit”h]”hŒinit”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjaubj˜)�”}”(hŒkunit_resource_free_t free”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_free_t”h]”hŒkunit_resource_free_t”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j(Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j£Œc.kunit_alloc_resource”†”asbuh1hhjubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjubjG)�”}”(hŒfree”h]”hŒfree”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjaubj˜)�”}”(hŒgfp_t internal_gfp”h]”(h)�”}”(hhh]”jG)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jpŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j£Œc.kunit_alloc_resource”†”asbuh1hhjgubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjgubjG)�”}”(hŒ internal_gfp”h]”hŒ internal_gfp”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjaubj˜)�”}”(hŒ void *context”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¯ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¯ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj¯ubjG)�”}”(hŒcontext”h]”hŒcontext”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjaubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hjh²hh³j-h´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhjh²hh³j-h´M ubah}”(h]”jah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³j-h´M hjh²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ$Allocates a *test managed resource*.”h]”(hŒ Allocates a ”…”�”}”(hjh²hh³Nh´Nubj€)�”}”(hŒ*test managed resource*”h]”hŒtest managed resource”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjh²hh³j-h´M ubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥j0j¦j0j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hX**Parameters** ``struct kunit *test`` The test context object. ``kunit_resource_init_t init`` a user supplied function to initialize the resource. ``kunit_resource_free_t free`` a user supplied function to free the resource (if needed). ``gfp_t internal_gfp`` gfp to use for internal allocations, if unsure, use GFP_KERNEL ``void *context`` for the user to pass in arbitrary data to the init function. **Description** Allocates a *test managed resource*, a resource which will automatically be cleaned up at the end of a test case. See :c:type:`struct kunit_resource ` for an example. **Note** KUnit needs to allocate memory for a kunit_resource object. You must specify an **internal_gfp** that is compatible with the use context of your resource.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj:h]”hŒ Parameters”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M hj4ubjù)�”}”(hhh]”(jþ)�”}”(hŒ0``struct kunit *test`` The test context object. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjYh]”hŒstruct kunit *test”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M hjSubj )�”}”(hhh]”hÞ)�”}”(hŒThe test context object.”h]”hŒThe test context object.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jnh´M hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jnh´M hjPubjþ)�”}”(hŒT``kunit_resource_init_t init`` a user supplied function to initialize the resource. ”h]”(j)�”}”(hŒ``kunit_resource_init_t init``”h]”j )�”}”(hj’h]”hŒkunit_resource_init_t init”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M hjŒubj )�”}”(hhh]”hÞ)�”}”(hŒ4a user supplied function to initialize the resource.”h]”hŒ4a user supplied function to initialize the resource.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j§h´M hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j§h´M hjPubjþ)�”}”(hŒZ``kunit_resource_free_t free`` a user supplied function to free the resource (if needed). ”h]”(j)�”}”(hŒ``kunit_resource_free_t free``”h]”j )�”}”(hjËh]”hŒkunit_resource_free_t free”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M hjÅubj )�”}”(hhh]”hÞ)�”}”(hŒ:a user supplied function to free the resource (if needed).”h]”hŒ:a user supplied function to free the resource (if needed).”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jàh´M hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jàh´M hjPubjþ)�”}”(hŒV``gfp_t internal_gfp`` gfp to use for internal allocations, if unsure, use GFP_KERNEL ”h]”(j)�”}”(hŒ``gfp_t internal_gfp``”h]”j )�”}”(hjh]”hŒgfp_t internal_gfp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M hjþubj )�”}”(hhh]”hÞ)�”}”(hŒ>gfp to use for internal allocations, if unsure, use GFP_KERNEL”h]”hŒ>gfp to use for internal allocations, if unsure, use GFP_KERNEL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jh´M hjPubjþ)�”}”(hŒO``void *context`` for the user to pass in arbitrary data to the init function. ”h]”(j)�”}”(hŒ``void *context``”h]”j )�”}”(hj=h]”hŒ void *context”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mhj7ubj )�”}”(hhh]”hÞ)�”}”(hŒ` for an example.”h]”(hŒ Allocates a ”…”�”}”(hjŽh²hh³Nh´Nubj€)�”}”(hŒ*test managed resource*”h]”hŒtest managed resource”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽubhŒS, a resource which will automatically be cleaned up at the end of a test case. See ”…”�”}”(hjŽh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct kunit_resource `”h]”j )�”}”(hjªh]”hŒstruct kunit_resource”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”(j•jŸŒc-type”eh"]”h$]”h&]”uh1j hj¨ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j¡Œ refdomain”jŸŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jÕj§jªŒkunit_resource”uh1hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MhjŽubhŒ for an example.”…”�”}”(hjŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÇh´Mhj4ubhÞ)�”}”(hŒ**Note**”h]”jµ)�”}”(hjÔh]”hŒNote”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mhj4ubhÞ)�”}”(hŒšKUnit needs to allocate memory for a kunit_resource object. You must specify an **internal_gfp** that is compatible with the use context of your resource.”h]”(hŒPKUnit needs to allocate memory for a kunit_resource object. You must specify an ”…”�”}”(hjêh²hh³Nh´Nubjµ)�”}”(hŒ**internal_gfp**”h]”hŒ internal_gfp”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjêubhŒ: that is compatible with the use context of your resource.”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mhj4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&kunit_resource_name_match (C function)”Œc.kunit_resource_name_match”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒabool kunit_resource_name_match (struct kunit *test, struct kunit_resource *res, void *match_name)”h]”j)�”}”(hŒ`bool kunit_resource_name_match(struct kunit *test, struct kunit_resource *res, void *match_name)”h]”(jZ)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj'h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M0ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj'h²hh³j9h´M0ubjA)�”}”(hŒkunit_resource_name_match”h]”jG)�”}”(hŒkunit_resource_name_match”h]”hŒkunit_resource_name_match”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjHubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hj'h²hh³j9h´M0ubj’)�”}”(hŒB(struct kunit *test, struct kunit_resource *res, void *match_name)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjdubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjdubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jˆŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑjNsbŒc.kunit_resource_name_match”†”asbuh1hhjdubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjdubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjdubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj`ubj˜)�”}”(hŒstruct kunit_resource *res”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjÖubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÖubh)�”}”(hhh]”jG)�”}”(hŒkunit_resource”h]”hŒkunit_resource”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjõubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”júŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j¢Œc.kunit_resource_name_match”†”asbuh1hhjÖubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÖubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjÖubjG)�”}”(hŒres”h]”hŒres”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj`ubj˜)�”}”(hŒvoid *match_name”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjFubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjFubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjFubjG)�”}”(hŒ match_name”h]”hŒ match_name”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj`ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hj'h²hh³j9h´M0ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj#h²hh³j9h´M0ubah}”(h]”jah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³j9h´M0hj h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ$Match a resource with the same name.”h]”hŒ$Match a resource with the same name.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M0hjšh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj h²hh³j9h´M0ubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jµj¦jµj§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hŒ´**Parameters** ``struct kunit *test`` Test case to which the resource belongs. ``struct kunit_resource *res`` The resource. ``void *match_name`` The name to match against.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj¿h]”hŒ Parameters”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M4hj¹ubjù)�”}”(hhh]”(jþ)�”}”(hŒ@``struct kunit *test`` Test case to which the resource belongs. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjÞh]”hŒstruct kunit *test”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M1hjØubj )�”}”(hhh]”hÞ)�”}”(hŒ(Test case to which the resource belongs.”h]”hŒ(Test case to which the resource belongs.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jóh´M1hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jóh´M1hjÕubjþ)�”}”(hŒ-``struct kunit_resource *res`` The resource. ”h]”(j)�”}”(hŒ``struct kunit_resource *res``”h]”j )�”}”(hjh]”hŒstruct kunit_resource *res”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M2hjubj )�”}”(hhh]”hÞ)�”}”(hŒ The resource.”h]”hŒ The resource.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j,h´M2hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j,h´M2hjÕubjþ)�”}”(hŒ/``void *match_name`` The name to match against.”h]”(j)�”}”(hŒ``void *match_name``”h]”j )�”}”(hjPh]”hŒvoid *match_name”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M4hjJubj )�”}”(hhh]”hÞ)�”}”(hŒThe name to match against.”h]”hŒThe name to match against.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M3hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jeh´M4hjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ kunit_find_resource (C function)”Œc.kunit_find_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒpstruct kunit_resource * kunit_find_resource (struct kunit *test, kunit_resource_match_t match, void *match_data)”h]”j)�”}”(hŒnstruct kunit_resource *kunit_find_resource(struct kunit *test, kunit_resource_match_t match, void *match_data)”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj¦h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M=ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¦h²hh³j·h´M=ubh)�”}”(hhh]”jG)�”}”(hŒkunit_resource”h]”hŒkunit_resource”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jËŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑŒkunit_find_resource”sbŒc.kunit_find_resource”†”asbuh1hhj¦h²hh³j·h´M=ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¦h²hh³j·h´M=ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj¦h²hh³j·h´M=ubjA)�”}”(hŒkunit_find_resource”h]”jG)�”}”(hjçh]”hŒkunit_find_resource”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hj¦h²hh³j·h´M=ubj’)�”}”(hŒD(struct kunit *test, kunit_resource_match_t match, void *match_data)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jDŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jåŒc.kunit_find_resource”†”asbuh1hhj ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjubj˜)�”}”(hŒkunit_resource_match_t match”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_match_t”h]”hŒkunit_resource_match_t”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j™Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jåŒc.kunit_find_resource”†”asbuh1hhj�ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj�ubjG)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjubj˜)�”}”(hŒvoid *match_data”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjØubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjØubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjØubjG)�”}”(hŒ match_data”h]”hŒ match_data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hj¦h²hh³j·h´M=ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj¢h²hh³j·h´M=ubah}”(h]”j�ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³j·h´M=hjŸh²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ*Find a resource using match function/data.”h]”hŒ*Find a resource using match function/data.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M=hj,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjŸh²hh³j·h´M=ubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jGj¦jGj§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hŒà**Parameters** ``struct kunit *test`` Test case to which the resource belongs. ``kunit_resource_match_t match`` match function to be applied to resources/match data. ``void *match_data`` data to be used in matching.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hjQh]”hŒ Parameters”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MAhjKubjù)�”}”(hhh]”(jþ)�”}”(hŒ@``struct kunit *test`` Test case to which the resource belongs. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjph]”hŒstruct kunit *test”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M>hjjubj )�”}”(hhh]”hÞ)�”}”(hŒ(Test case to which the resource belongs.”h]”hŒ(Test case to which the resource belongs.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j…h´M>hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j…h´M>hjgubjþ)�”}”(hŒW``kunit_resource_match_t match`` match function to be applied to resources/match data. ”h]”(j)�”}”(hŒ ``kunit_resource_match_t match``”h]”j )�”}”(hj©h]”hŒkunit_resource_match_t match”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M?hj£ubj )�”}”(hhh]”hÞ)�”}”(hŒ5match function to be applied to resources/match data.”h]”hŒ5match function to be applied to resources/match data.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¾h´M?hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j¾h´M?hjgubjþ)�”}”(hŒ1``void *match_data`` data to be used in matching.”h]”(j)�”}”(hŒ``void *match_data``”h]”j )�”}”(hjâh]”hŒvoid *match_data”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MAhjÜubj )�”}”(hhh]”hÞ)�”}”(hŒdata to be used in matching.”h]”hŒdata to be used in matching.”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M@hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j÷h´MAhjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhjKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&kunit_find_named_resource (C function)”Œc.kunit_find_named_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒXstruct kunit_resource * kunit_find_named_resource (struct kunit *test, const char *name)”h]”j)�”}”(hŒVstruct kunit_resource *kunit_find_named_resource(struct kunit *test, const char *name)”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj8h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MZubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj8h²hh³jIh´MZubh)�”}”(hhh]”jG)�”}”(hŒkunit_resource”h]”hŒkunit_resource”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j]Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑŒkunit_find_named_resource”sbŒc.kunit_find_named_resource”†”asbuh1hhj8h²hh³jIh´MZubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj8h²hh³jIh´MZubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj8h²hh³jIh´MZubjA)�”}”(hŒkunit_find_named_resource”h]”jG)�”}”(hjyh]”hŒkunit_find_named_resource”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj—ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hj8h²hh³jIh´MZubj’)�”}”(hŒ&(struct kunit *test, const char *name)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj²ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj²ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jÖŒmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jwŒc.kunit_find_named_resource”†”asbuh1hhj²ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj²ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj²ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj®ubj˜)�”}”(hŒconst char *name”h]”(j)�”}”(hjWh]”hŒconst”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj" ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj" ubjZ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj" ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj" ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj" ubjG)�”}”(hŒname”h]”hŒname”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj" ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj®ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hj8h²hh³jIh´MZubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj4h²hh³jIh´MZubah}”(h]”j/ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jIh´MZhj1h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ!Find a resource using match name.”h]”hŒ!Find a resource using match name.”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MZhj‘ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj1h²hh³jIh´MZubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥j¬ j¦j¬ j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hŒu**Parameters** ``struct kunit *test`` Test case to which the resource belongs. ``const char *name`` match name.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj¶ h]”hŒ Parameters”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj´ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M^hj° ubjù)�”}”(hhh]”(jþ)�”}”(hŒ@``struct kunit *test`` Test case to which the resource belongs. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjÕ h]”hŒstruct kunit *test”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M[hjÏ ubj )�”}”(hhh]”hÞ)�”}”(hŒ(Test case to which the resource belongs.”h]”hŒ(Test case to which the resource belongs.”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jê h´M[hjë ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jê h´M[hjÌ ubjþ)�”}”(hŒ ``const char *name`` match name.”h]”(j)�”}”(hŒ``const char *name``”h]”j )�”}”(hj!h]”hŒconst char *name”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj !ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M]hj!ubj )�”}”(hhh]”hÞ)�”}”(hŒ match name.”h]”hŒ match name.”…”�”}”(hj'!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M\hj$!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j#!h´M]hjÌ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj° ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#kunit_destroy_resource (C function)”Œc.kunit_destroy_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒ_int kunit_destroy_resource (struct kunit *test, kunit_resource_match_t match, void *match_data)”h]”j)�”}”(hŒ^int kunit_destroy_resource(struct kunit *test, kunit_resource_match_t match, void *match_data)”h]”(jZ)�”}”(hŒint”h]”hŒint”…”�”}”(hjh!h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjd!h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mgubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw!h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjd!h²hh³jv!h´MgubjA)�”}”(hŒkunit_destroy_resource”h]”jG)�”}”(hŒkunit_destroy_resource”h]”hŒkunit_destroy_resource”…”�”}”(hj‰!h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj…!ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hjd!h²hh³jv!h´Mgubj’)�”}”(hŒD(struct kunit *test, kunit_resource_match_t match, void *match_data)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj¥!h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj¡!ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²!h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¡!ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hjÃ!h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÀ!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jÅ!Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑj‹!sbŒc.kunit_destroy_resource”†”asbuh1hhj¡!ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã!h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¡!ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjñ!h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj¡!ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjþ!h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj¡!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj�!ubj˜)�”}”(hŒkunit_resource_match_t match”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_resource_match_t”h]”hŒkunit_resource_match_t”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j"Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jß!Œc.kunit_destroy_resource”†”asbuh1hhj"ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8"h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj"ubjG)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjF"h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj�!ubj˜)�”}”(hŒvoid *match_data”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_"h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj["ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm"h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj["ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj{"h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj["ubjG)�”}”(hŒ match_data”h]”hŒ match_data”…”�”}”(hjˆ"h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj["ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj�!ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hjd!h²hh³jv!h´Mgubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj`!h²hh³jv!h´Mgubah}”(h]”j[!ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jv!h´Mghj]!h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ%Find a kunit_resource and destroy it.”h]”hŒ%Find a kunit_resource and destroy it.”…”�”}”(hj²"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mghj¯"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj]!h²hh³jv!h´Mgubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jÊ"j¦jÊ"j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hX=**Parameters** ``struct kunit *test`` Test case to which the resource belongs. ``kunit_resource_match_t match`` Match function. Returns whether a given resource matches **match_data**. ``void *match_data`` Data passed into **match**. **Return** 0 if kunit_resource is found and freed, -ENOENT if not found.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hjÔ"h]”hŒ Parameters”…”�”}”(hjÖ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjÒ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MkhjÎ"ubjù)�”}”(hhh]”(jþ)�”}”(hŒ@``struct kunit *test`` Test case to which the resource belongs. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjó"h]”hŒstruct kunit *test”…”�”}”(hjõ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjñ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mhhjí"ubj )�”}”(hhh]”hÞ)�”}”(hŒ(Test case to which the resource belongs.”h]”hŒ(Test case to which the resource belongs.”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j#h´Mhhj #ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjí"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j#h´Mhhjê"ubjþ)�”}”(hŒj``kunit_resource_match_t match`` Match function. Returns whether a given resource matches **match_data**. ”h]”(j)�”}”(hŒ ``kunit_resource_match_t match``”h]”j )�”}”(hj,#h]”hŒkunit_resource_match_t match”…”�”}”(hj.#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mihj&#ubj )�”}”(hhh]”hÞ)�”}”(hŒHMatch function. Returns whether a given resource matches **match_data**.”h]”(hŒ9Match function. Returns whether a given resource matches ”…”�”}”(hjE#h²hh³Nh´Nubjµ)�”}”(hŒ**match_data**”h]”hŒ match_data”…”�”}”(hjM#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjE#ubhŒ.”…”�”}”(hjE#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jA#h´MihjB#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jA#h´Mihjê"ubjþ)�”}”(hŒ1``void *match_data`` Data passed into **match**. ”h]”(j)�”}”(hŒ``void *match_data``”h]”j )�”}”(hjw#h]”hŒvoid *match_data”…”�”}”(hjy#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hju#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mjhjq#ubj )�”}”(hhh]”hÞ)�”}”(hŒData passed into **match**.”h]”(hŒData passed into ”…”�”}”(hj�#h²hh³Nh´Nubjµ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj˜#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj�#ubhŒ.”…”�”}”(hj�#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jŒ#h´Mjhj�#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jŒ#h´Mjhjê"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhjÎ"ubhÞ)�”}”(hŒ **Return**”h]”jµ)�”}”(hjÄ#h]”hŒReturn”…”�”}”(hjÆ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjÂ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MlhjÎ"ubhÞ)�”}”(hŒ=0 if kunit_resource is found and freed, -ENOENT if not found.”h]”hŒ=0 if kunit_resource is found and freed, -ENOENT if not found.”…”�”}”(hjÚ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MlhjÎ"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"kunit_remove_resource (C function)”Œc.kunit_remove_resource”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒKvoid kunit_remove_resource (struct kunit *test, struct kunit_resource *res)”h]”j)�”}”(hŒJvoid kunit_remove_resource(struct kunit *test, struct kunit_resource *res)”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj$h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M{ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj$h²hh³j$h´M{ubjA)�”}”(hŒkunit_remove_resource”h]”jG)�”}”(hŒkunit_remove_resource”h]”hŒkunit_remove_resource”…”�”}”(hj*$h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj&$ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hj$h²hh³j$h´M{ubj’)�”}”(hŒ0(struct kunit *test, struct kunit_resource *res)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjF$h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjB$ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS$h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjB$ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hjd$h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhja$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jf$Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑj,$sbŒc.kunit_remove_resource”†”asbuh1hhjB$ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„$h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjB$ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj’$h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjB$ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjŸ$h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjB$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj>$ubj˜)�”}”(hŒstruct kunit_resource *res”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj¸$h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj´$ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ$h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj´$ubh)�”}”(hhh]”jG)�”}”(hŒkunit_resource”h]”hŒkunit_resource”…”�”}”(hjÖ$h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÓ$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jØ$Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j€$Œc.kunit_remove_resource”†”asbuh1hhj´$ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô$h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj´$ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj´$ubjG)�”}”(hŒres”h]”hŒres”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj´$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj>$ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hj$h²hh³j$h´M{ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj$h²hh³j$h´M{ubah}”(h]”jü#ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³j$h´M{hjþ#h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ8remove resource from resource list associated with test.”h]”hŒ8remove resource from resource list associated with test.”…”�”}”(hj9%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M{hj6%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjþ#h²hh³j$h´M{ubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jQ%j¦jQ%j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hXX**Parameters** ``struct kunit *test`` The test context object. ``struct kunit_resource *res`` The resource to be removed. **Description** Note that the resource will not be immediately freed since it is likely the caller has a reference to it via alloc_and_get() or find(); in this case a final call to kunit_put_resource() is required.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj[%h]”hŒ Parameters”…”�”}”(hj]%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjY%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MhjU%ubjù)�”}”(hhh]”(jþ)�”}”(hŒ0``struct kunit *test`` The test context object. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjz%h]”hŒstruct kunit *test”…”�”}”(hj|%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M}hjt%ubj )�”}”(hhh]”hÞ)�”}”(hŒThe test context object.”h]”hŒThe test context object.”…”�”}”(hj“%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j�%h´M}hj�%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjt%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j�%h´M}hjq%ubjþ)�”}”(hŒ;``struct kunit_resource *res`` The resource to be removed. ”h]”(j)�”}”(hŒ``struct kunit_resource *res``”h]”j )�”}”(hj³%h]”hŒstruct kunit_resource *res”…”�”}”(hjµ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj±%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M~hj­%ubj )�”}”(hhh]”hÞ)�”}”(hŒThe resource to be removed.”h]”hŒThe resource to be removed.”…”�”}”(hjÌ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÈ%h´M~hjÉ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÈ%h´M~hjq%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhjU%ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hjî%h]”hŒ Description”…”�”}”(hjð%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjì%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M€hjU%ubhÞ)�”}”(hŒÆNote that the resource will not be immediately freed since it is likely the caller has a reference to it via alloc_and_get() or find(); in this case a final call to kunit_put_resource() is required.”h]”hŒÆNote that the resource will not be immediately freed since it is likely the caller has a reference to it via alloc_and_get() or find(); in this case a final call to kunit_put_resource() is required.”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MhjU%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%KUNIT_DEFINE_ACTION_WRAPPER (C macro)”Œc.KUNIT_DEFINE_ACTION_WRAPPER”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒKUNIT_DEFINE_ACTION_WRAPPER”h]”j)�”}”(hŒKUNIT_DEFINE_ACTION_WRAPPER”h]”jA)�”}”(hŒKUNIT_DEFINE_ACTION_WRAPPER”h]”jG)�”}”(hj-&h]”hŒKUNIT_DEFINE_ACTION_WRAPPER”…”�”}”(hj7&h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj3&ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hj/&h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MŠubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj+&h²hh³jJ&h´MŠubah}”(h]”j&&ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jJ&h´MŠhj(&h²hubjs)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jrhj(&h²hh³jJ&h´MŠubeh}”(h]”h ]”(jŸŒmacro”eh"]”h$]”h&]”j¤jŸj¥jc&j¦jc&j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´NubhÞ)�”}”(hŒ9``KUNIT_DEFINE_ACTION_WRAPPER (wrapper, orig, arg_type)``”h]”j )�”}”(hji&h]”hŒ5KUNIT_DEFINE_ACTION_WRAPPER (wrapper, orig, arg_type)”…”�”}”(hjk&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjg&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MŒhhÊh²hubhŒ block_quote”“”)�”}”(hŒ.Wrap a function for use as a deferred action. ”h]”hÞ)�”}”(hŒ-Wrap a function for use as a deferred action.”h]”hŒ-Wrap a function for use as a deferred action.”…”�”}”(hj…&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MŠhj�&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j&h³j“&h´MŠhhÊh²hubj«)�”}”(hX**Parameters** ``wrapper`` The name of the new wrapper function define. ``orig`` The original function to wrap. ``arg_type`` The type of the argument accepted by **orig**. **Description** Defines a wrapper for a function which accepts a single, pointer-sized argument. This wrapper can then be passed to kunit_add_action() and similar. This should be used in preference to casting a function directly to kunit_action_t, as casting function pointers will break control flow integrity (CFI), leading to crashes.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj &h]”hŒ Parameters”…”�”}”(hj¢&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjž&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MŽhjš&ubjù)�”}”(hhh]”(jþ)�”}”(hŒ9``wrapper`` The name of the new wrapper function define. ”h]”(j)�”}”(hŒ ``wrapper``”h]”j )�”}”(hj¿&h]”hŒwrapper”…”�”}”(hjÁ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj½&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MŒhj¹&ubj )�”}”(hhh]”hÞ)�”}”(hŒ,The name of the new wrapper function define.”h]”hŒ,The name of the new wrapper function define.”…”�”}”(hjØ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÔ&h´MŒhjÕ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÔ&h´MŒhj¶&ubjþ)�”}”(hŒ(``orig`` The original function to wrap. ”h]”(j)�”}”(hŒ``orig``”h]”j )�”}”(hjø&h]”hŒorig”…”�”}”(hjú&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjö&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M�hjò&ubj )�”}”(hhh]”hÞ)�”}”(hŒThe original function to wrap.”h]”hŒThe original function to wrap.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j 'h´M�hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjò&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j 'h´M�hj¶&ubjþ)�”}”(hŒ<``arg_type`` The type of the argument accepted by **orig**. ”h]”(j)�”}”(hŒ ``arg_type``”h]”j )�”}”(hj1'h]”hŒarg_type”…”�”}”(hj3'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MŽhj+'ubj )�”}”(hhh]”hÞ)�”}”(hŒ.The type of the argument accepted by **orig**.”h]”(hŒ%The type of the argument accepted by ”…”�”}”(hjJ'h²hh³Nh´Nubjµ)�”}”(hŒ**orig**”h]”hŒorig”…”�”}”(hjR'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjJ'ubhŒ.”…”�”}”(hjJ'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jF'h´MŽhjG'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jF'h´MŽhj¶&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhjš&ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hj~'h]”hŒ Description”…”�”}”(hj€'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj|'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M�hjš&ubhÞ)�”}”(hXADefines a wrapper for a function which accepts a single, pointer-sized argument. This wrapper can then be passed to kunit_add_action() and similar. This should be used in preference to casting a function directly to kunit_action_t, as casting function pointers will break control flow integrity (CFI), leading to crashes.”h]”hXADefines a wrapper for a function which accepts a single, pointer-sized argument. This wrapper can then be passed to kunit_add_action() and similar. This should be used in preference to casting a function directly to kunit_action_t, as casting function pointers will break control flow integrity (CFI), leading to crashes.”…”�”}”(hj”'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M�hjš&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒkunit_add_action (C function)”Œc.kunit_add_action”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒLint kunit_add_action (struct kunit *test, kunit_action_t *action, void *ctx)”h]”j)�”}”(hŒKint kunit_add_action(struct kunit *test, kunit_action_t *action, void *ctx)”h]”(jZ)�”}”(hŒint”h]”hŒint”…”�”}”(hjÃ'h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¿'h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MŸubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ'h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¿'h²hh³jÑ'h´MŸubjA)�”}”(hŒkunit_add_action”h]”jG)�”}”(hŒkunit_add_action”h]”hŒkunit_add_action”…”�”}”(hjä'h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjà'ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hj¿'h²hh³jÑ'h´MŸubj’)�”}”(hŒ7(struct kunit *test, kunit_action_t *action, void *ctx)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjü'ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjü'ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j (Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑjæ'sbŒc.kunit_add_action”†”asbuh1hhjü'ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>(h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjü'ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjL(h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjü'ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjY(h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjü'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjø'ubj˜)�”}”(hŒkunit_action_t *action”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_action_t”h]”hŒkunit_action_t”…”�”}”(hju(h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjr(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jw(Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j:(Œc.kunit_add_action”†”asbuh1hhjn(ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“(h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjn(ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj¡(h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjn(ubjG)�”}”(hŒaction”h]”hŒaction”…”�”}”(hj®(h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjn(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjø'ubj˜)�”}”(hŒ void *ctx”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÇ(h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÃ(ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ(h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÃ(ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjã(h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjÃ(ubjG)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjð(h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÃ(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjø'ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hj¿'h²hh³jÑ'h´MŸubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj»'h²hh³jÑ'h´MŸubah}”(h]”j¶'ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jÑ'h´MŸhj¸'h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ#Call a function when the test ends.”h]”hŒ#Call a function when the test ends.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MŸhj)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj¸'h²hh³jÑ'h´MŸubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥j2)j¦j2)j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hXç**Parameters** ``struct kunit *test`` Test case to associate the action with. ``kunit_action_t *action`` The function to run on test exit ``void *ctx`` Data passed into **func** **Description** Defer the execution of a function until the test exits, either normally or due to a failure. **ctx** is passed as additional context. All functions registered with kunit_add_action() will execute in the opposite order to that they were registered in. This is useful for cleaning up allocated memory and resources, as these functions are called even if the test aborts early due to, e.g., a failed assertion. See also: devm_add_action() for the devres equivalent. **Return** 0 on success, an error if the action could not be deferred.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj<)h]”hŒ Parameters”…”�”}”(hj>)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj:)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M£hj6)ubjù)�”}”(hhh]”(jþ)�”}”(hŒ?``struct kunit *test`` Test case to associate the action with. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hj[)h]”hŒstruct kunit *test”…”�”}”(hj])h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjY)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M hjU)ubj )�”}”(hhh]”hÞ)�”}”(hŒ'Test case to associate the action with.”h]”hŒ'Test case to associate the action with.”…”�”}”(hjt)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jp)h´M hjq)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jp)h´M hjR)ubjþ)�”}”(hŒ<``kunit_action_t *action`` The function to run on test exit ”h]”(j)�”}”(hŒ``kunit_action_t *action``”h]”j )�”}”(hj”)h]”hŒkunit_action_t *action”…”�”}”(hj–)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¡hjŽ)ubj )�”}”(hhh]”hÞ)�”}”(hŒ The function to run on test exit”h]”hŒ The function to run on test exit”…”�”}”(hj­)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j©)h´M¡hjª)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j©)h´M¡hjR)ubjþ)�”}”(hŒ(``void *ctx`` Data passed into **func** ”h]”(j)�”}”(hŒ ``void *ctx``”h]”j )�”}”(hjÍ)h]”hŒ void *ctx”…”�”}”(hjÏ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjË)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¢hjÇ)ubj )�”}”(hhh]”hÞ)�”}”(hŒData passed into **func**”h]”(hŒData passed into ”…”�”}”(hjæ)h²hh³Nh´Nubjµ)�”}”(hŒ**func**”h]”hŒfunc”…”�”}”(hjî)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjæ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jâ)h´M¢hjã)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jâ)h´M¢hjR)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj6)ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hj*h]”hŒ Description”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¤hj6)ubhÞ)�”}”(hŒûDefer the execution of a function until the test exits, either normally or due to a failure. **ctx** is passed as additional context. All functions registered with kunit_add_action() will execute in the opposite order to that they were registered in.”h]”(hŒ^Defer the execution of a function until the test exits, either normally or due to a failure. ”…”�”•Fÿ}”(hj,*h²hh³Nh´Nubjµ)�”}”(hŒ**ctx**”h]”hŒctx”…”�”}”(hj4*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj,*ubhŒ– is passed as additional context. All functions registered with kunit_add_action() will execute in the opposite order to that they were registered in.”…”�”}”(hj,*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M£hj6)ubhÞ)�”}”(hŒœThis is useful for cleaning up allocated memory and resources, as these functions are called even if the test aborts early due to, e.g., a failed assertion.”h]”hŒœThis is useful for cleaning up allocated memory and resources, as these functions are called even if the test aborts early due to, e.g., a failed assertion.”…”�”}”(hjM*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¨hj6)ubhÞ)�”}”(hŒ6See also: devm_add_action() for the devres equivalent.”h]”hŒ6See also: devm_add_action() for the devres equivalent.”…”�”}”(hj\*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¬hj6)ubhÞ)�”}”(hŒ **Return**”h]”jµ)�”}”(hjm*h]”hŒReturn”…”�”}”(hjo*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjk*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M®hj6)ubhÞ)�”}”(hŒ;0 on success, an error if the action could not be deferred.”h]”hŒ;0 on success, an error if the action could not be deferred.”…”�”}”(hjƒ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¯hj6)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&kunit_add_action_or_reset (C function)”Œc.kunit_add_action_or_reset”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒUint kunit_add_action_or_reset (struct kunit *test, kunit_action_t *action, void *ctx)”h]”j)�”}”(hŒTint kunit_add_action_or_reset(struct kunit *test, kunit_action_t *action, void *ctx)”h]”(jZ)�”}”(hŒint”h]”hŒint”…”�”}”(hj²*h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj®*h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mµubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ*h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj®*h²hh³jÀ*h´MµubjA)�”}”(hŒkunit_add_action_or_reset”h]”jG)�”}”(hŒkunit_add_action_or_reset”h]”hŒkunit_add_action_or_reset”…”�”}”(hjÓ*h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÏ*ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hj®*h²hh³jÀ*h´Mµubj’)�”}”(hŒ7(struct kunit *test, kunit_action_t *action, void *ctx)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjï*h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjë*ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü*h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjë*ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj +ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j+Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑjÕ*sbŒc.kunit_add_action_or_reset”†”asbuh1hhjë*ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-+h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjë*ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj;+h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjë*ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjH+h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjë*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjç*ubj˜)�”}”(hŒkunit_action_t *action”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_action_t”h]”hŒkunit_action_t”…”�”}”(hjd+h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhja+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jf+Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j)+Œc.kunit_add_action_or_reset”†”asbuh1hhj]+ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚+h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj]+ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj]+ubjG)�”}”(hŒaction”h]”hŒaction”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj]+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjç*ubj˜)�”}”(hŒ void *ctx”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶+h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj²+ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ+h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj²+ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjÒ+h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj²+ubjG)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjß+h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj²+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjç*ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hj®*h²hh³jÀ*h´Mµubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhjª*h²hh³jÀ*h´Mµubah}”(h]”j¥*ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jÀ*h´Mµhj§*h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ#Call a function when the test ends.”h]”hŒ#Call a function when the test ends.”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mµhj,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj§*h²hh³jÀ*h´Mµubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥j!,j¦j!,j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hXŒ**Parameters** ``struct kunit *test`` Test case to associate the action with. ``kunit_action_t *action`` The function to run on test exit ``void *ctx`` Data passed into **func** **Description** Defer the execution of a function until the test exits, either normally or due to a failure. **ctx** is passed as additional context. All functions registered with kunit_add_action() will execute in the opposite order to that they were registered in. This is useful for cleaning up allocated memory and resources, as these functions are called even if the test aborts early due to, e.g., a failed assertion. If the action cannot be created (e.g., due to the system being out of memory), then action(ctx) will be called immediately, and an error will be returned. See also: devm_add_action_or_reset() for the devres equivalent. **Return** 0 on success, an error if the action could not be deferred.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj+,h]”hŒ Parameters”…”�”}”(hj-,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj),ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¹hj%,ubjù)�”}”(hhh]”(jþ)�”}”(hŒ?``struct kunit *test`` Test case to associate the action with. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjJ,h]”hŒstruct kunit *test”…”�”}”(hjL,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjH,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¶hjD,ubj )�”}”(hhh]”hÞ)�”}”(hŒ'Test case to associate the action with.”h]”hŒ'Test case to associate the action with.”…”�”}”(hjc,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j_,h´M¶hj`,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j_,h´M¶hjA,ubjþ)�”}”(hŒ<``kunit_action_t *action`` The function to run on test exit ”h]”(j)�”}”(hŒ``kunit_action_t *action``”h]”j )�”}”(hjƒ,h]”hŒkunit_action_t *action”…”�”}”(hj…,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M·hj},ubj )�”}”(hhh]”hÞ)�”}”(hŒ The function to run on test exit”h]”hŒ The function to run on test exit”…”�”}”(hjœ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j˜,h´M·hj™,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj},ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j˜,h´M·hjA,ubjþ)�”}”(hŒ(``void *ctx`` Data passed into **func** ”h]”(j)�”}”(hŒ ``void *ctx``”h]”j )�”}”(hj¼,h]”hŒ void *ctx”…”�”}”(hj¾,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjº,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¸hj¶,ubj )�”}”(hhh]”hÞ)�”}”(hŒData passed into **func**”h]”(hŒData passed into ”…”�”}”(hjÕ,h²hh³Nh´Nubjµ)�”}”(hŒ**func**”h]”hŒfunc”…”�”}”(hjÝ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjÕ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÑ,h´M¸hjÒ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÑ,h´M¸hjA,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj%,ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hj-h]”hŒ Description”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mºhj%,ubhÞ)�”}”(hŒûDefer the execution of a function until the test exits, either normally or due to a failure. **ctx** is passed as additional context. All functions registered with kunit_add_action() will execute in the opposite order to that they were registered in.”h]”(hŒ^Defer the execution of a function until the test exits, either normally or due to a failure. ”…”�”}”(hj-h²hh³Nh´Nubjµ)�”}”(hŒ**ctx**”h]”hŒctx”…”�”}”(hj#-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj-ubhŒ– is passed as additional context. All functions registered with kunit_add_action() will execute in the opposite order to that they were registered in.”…”�”}”(hj-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¹hj%,ubhÞ)�”}”(hŒœThis is useful for cleaning up allocated memory and resources, as these functions are called even if the test aborts early due to, e.g., a failed assertion.”h]”hŒœThis is useful for cleaning up allocated memory and resources, as these functions are called even if the test aborts early due to, e.g., a failed assertion.”…”�”}”(hj<-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´M¾hj%,ubhÞ)�”}”(hŒšIf the action cannot be created (e.g., due to the system being out of memory), then action(ctx) will be called immediately, and an error will be returned.”h]”hŒšIf the action cannot be created (e.g., due to the system being out of memory), then action(ctx) will be called immediately, and an error will be returned.”…”�”}”(hjK-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÂhj%,ubhÞ)�”}”(hŒ?See also: devm_add_action_or_reset() for the devres equivalent.”h]”hŒ?See also: devm_add_action_or_reset() for the devres equivalent.”…”�”}”(hjZ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÅhj%,ubhÞ)�”}”(hŒ **Return**”h]”jµ)�”}”(hjk-h]”hŒReturn”…”�”}”(hjm-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hji-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÇhj%,ubhÞ)�”}”(hŒ;0 on success, an error if the action could not be deferred.”h]”hŒ;0 on success, an error if the action could not be deferred.”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÈhj%,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ kunit_remove_action (C function)”Œc.kunit_remove_action”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒPvoid kunit_remove_action (struct kunit *test, kunit_action_t *action, void *ctx)”h]”j)�”}”(hŒOvoid kunit_remove_action(struct kunit *test, kunit_action_t *action, void *ctx)”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°-h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¬-h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÏubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿-h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¬-h²hh³j¾-h´MÏubjA)�”}”(hŒkunit_remove_action”h]”jG)�”}”(hŒkunit_remove_action”h]”hŒkunit_remove_action”…”�”}”(hjÑ-h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÍ-ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hj¬-h²hh³j¾-h´MÏubj’)�”}”(hŒ7(struct kunit *test, kunit_action_t *action, void *ctx)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjí-h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjé-ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú-h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjé-ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j .Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑjÓ-sbŒc.kunit_remove_action”†”asbuh1hhjé-ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+.h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjé-ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj9.h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjé-ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjF.h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjé-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjå-ubj˜)�”}”(hŒkunit_action_t *action”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_action_t”h]”hŒkunit_action_t”…”�”}”(hjb.h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj_.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jd.Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j'.Œc.kunit_remove_action”†”asbuh1hhj[.ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€.h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj[.ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjŽ.h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj[.ubjG)�”}”(hŒaction”h]”hŒaction”…”�”}”(hj›.h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj[.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjå-ubj˜)�”}”(hŒ void *ctx”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj´.h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj°.ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ.h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj°.ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjÐ.h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj°.ubjG)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjÝ.h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj°.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjå-ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hj¬-h²hh³j¾-h´MÏubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj¨-h²hh³j¾-h´MÏubah}”(h]”j£-ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³j¾-h´MÏhj¥-h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ"Cancel a matching deferred action.”h]”hŒ"Cancel a matching deferred action.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÏhj/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj¥-h²hh³j¾-h´MÏubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥j/j¦j/j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hXè**Parameters** ``struct kunit *test`` Test case the action is associated with. ``kunit_action_t *action`` The deferred function to cancel. ``void *ctx`` The context passed to the deferred function to trigger. **Description** Prevent an action deferred via kunit_add_action() from executing when the test terminates. If the function/context pair was deferred multiple times, only the most recent one will be cancelled. See also: devm_remove_action() for the devres equivalent.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj)/h]”hŒ Parameters”…”�”}”(hj+/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj'/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÓhj#/ubjù)�”}”(hhh]”(jþ)�”}”(hŒ@``struct kunit *test`` Test case the action is associated with. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjH/h]”hŒstruct kunit *test”…”�”}”(hjJ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjF/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÐhjB/ubj )�”}”(hhh]”hÞ)�”}”(hŒ(Test case the action is associated with.”h]”hŒ(Test case the action is associated with.”…”�”}”(hja/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j]/h´MÐhj^/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjB/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j]/h´MÐhj?/ubjþ)�”}”(hŒ<``kunit_action_t *action`` The deferred function to cancel. ”h]”(j)�”}”(hŒ``kunit_action_t *action``”h]”j )�”}”(hj�/h]”hŒkunit_action_t *action”…”�”}”(hjƒ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÑhj{/ubj )�”}”(hhh]”hÞ)�”}”(hŒ The deferred function to cancel.”h]”hŒ The deferred function to cancel.”…”�”}”(hjš/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j–/h´MÑhj—/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j–/h´MÑhj?/ubjþ)�”}”(hŒF``void *ctx`` The context passed to the deferred function to trigger. ”h]”(j)�”}”(hŒ ``void *ctx``”h]”j )�”}”(hjº/h]”hŒ void *ctx”…”�”}”(hj¼/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÒhj´/ubj )�”}”(hhh]”hÞ)�”}”(hŒ7The context passed to the deferred function to trigger.”h]”hŒ7The context passed to the deferred function to trigger.”…”�”}”(hjÓ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÏ/h´MÒhjÐ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÏ/h´MÒhj?/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj#/ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hjõ/h]”hŒ Description”…”�”}”(hj÷/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjó/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÔhj#/ubhÞ)�”}”(hŒZPrevent an action deferred via kunit_add_action() from executing when the test terminates.”h]”hŒZPrevent an action deferred via kunit_add_action() from executing when the test terminates.”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÓhj#/ubhÞ)�”}”(hŒeIf the function/context pair was deferred multiple times, only the most recent one will be cancelled.”h]”hŒeIf the function/context pair was deferred multiple times, only the most recent one will be cancelled.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÖhj#/ubhÞ)�”}”(hŒ9See also: devm_remove_action() for the devres equivalent.”h]”hŒ9See also: devm_remove_action() for the devres equivalent.”…”�”}”(hj)0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MÙhj#/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!kunit_release_action (C function)”Œc.kunit_release_action”hNt”auh1hûhhÊh²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒQvoid kunit_release_action (struct kunit *test, kunit_action_t *action, void *ctx)”h]”j)�”}”(hŒPvoid kunit_release_action(struct kunit *test, kunit_action_t *action, void *ctx)”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjX0h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjT0h²hh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Máubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg0h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjT0h²hh³jf0h´MáubjA)�”}”(hŒkunit_release_action”h]”jG)�”}”(hŒkunit_release_action”h]”hŒkunit_release_action”…”�”}”(hjy0h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhju0ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hjT0h²hh³jf0h´Máubj’)�”}”(hŒ7(struct kunit *test, kunit_action_t *action, void *ctx)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj•0h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj‘0ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢0h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj‘0ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hj³0h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj°0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jµ0Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑj{0sbŒc.kunit_release_action”†”asbuh1hhj‘0ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ0h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj‘0ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjá0h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj‘0ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjî0h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj‘0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj�0ubj˜)�”}”(hŒkunit_action_t *action”h]”(h)�”}”(hhh]”jG)�”}”(hŒkunit_action_t”h]”hŒkunit_action_t”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”j 1Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÏ0Œc.kunit_release_action”†”asbuh1hhj1ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(1h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj1ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj61h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj1ubjG)�”}”(hŒaction”h]”hŒaction”…”�”}”(hjC1h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj�0ubj˜)�”}”(hŒ void *ctx”h]”(jZ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj\1h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjX1ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj1h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjX1ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjx1h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjX1ubjG)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj…1h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjX1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj�0ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hjT0h²hh³jf0h´Máubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhjP0h²hh³jf0h´Máubah}”(h]”jK0ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jf0h´MáhjM0h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ'Run a matching action call immediately.”h]”hŒ'Run a matching action call immediately.”…”�”}”(hj¯1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Máhj¬1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjM0h²hh³jf0h´Máubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jÇ1j¦jÇ1j§‰j¨‰j©‰uh1j h²hhhÊh³Nh´Nubj«)�”}”(hX–**Parameters** ``struct kunit *test`` Test case the action is associated with. ``kunit_action_t *action`` The deferred function to trigger. ``void *ctx`` The context passed to the deferred function to trigger. **Description** Execute a function deferred via kunit_add_action()) immediately, rather than when the test ends. If the function/context pair was deferred multiple times, it will only be executed once here. The most recent deferral will no longer execute when the test ends. kunit_release_action(test, func, ctx); is equivalent to func(ctx); kunit_remove_action(test, func, ctx); See also: devm_release_action() for the devres equivalent.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hjÑ1h]”hŒ Parameters”…”�”}”(hjÓ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjÏ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MåhjË1ubjù)�”}”(hhh]”(jþ)�”}”(hŒ@``struct kunit *test`` Test case the action is associated with. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjð1h]”hŒstruct kunit *test”…”�”}”(hjò1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjî1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mâhjê1ubj )�”}”(hhh]”hÞ)�”}”(hŒ(Test case the action is associated with.”h]”hŒ(Test case the action is associated with.”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j2h´Mâhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjê1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j2h´Mâhjç1ubjþ)�”}”(hŒ=``kunit_action_t *action`` The deferred function to trigger. ”h]”(j)�”}”(hŒ``kunit_action_t *action``”h]”j )�”}”(hj)2h]”hŒkunit_action_t *action”…”�”}”(hj+2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mãhj#2ubj )�”}”(hhh]”hÞ)�”}”(hŒ!The deferred function to trigger.”h]”hŒ!The deferred function to trigger.”…”�”}”(hjB2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j>2h´Mãhj?2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j>2h´Mãhjç1ubjþ)�”}”(hŒF``void *ctx`` The context passed to the deferred function to trigger. ”h]”(j)�”}”(hŒ ``void *ctx``”h]”j )�”}”(hjb2h]”hŒ void *ctx”…”�”}”(hjd2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj`2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´Mähj\2ubj )�”}”(hhh]”hÞ)�”}”(hŒ7The context passed to the deferred function to trigger.”h]”hŒ7The context passed to the deferred function to trigger.”…”�”}”(hj{2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jw2h´Mähjx2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jw2h´Mähjç1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhjË1ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hj�2h]”hŒ Description”…”�”}”(hjŸ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj›2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MæhjË1ubhÞ)�”}”(hŒ`Execute a function deferred via kunit_add_action()) immediately, rather than when the test ends.”h]”hŒ`Execute a function deferred via kunit_add_action()) immediately, rather than when the test ends.”…”�”}”(hj³2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MåhjË1ubhÞ)�”}”(hŒ¡If the function/context pair was deferred multiple times, it will only be executed once here. The most recent deferral will no longer execute when the test ends.”h]”hŒ¡If the function/context pair was deferred multiple times, it will only be executed once here. The most recent deferral will no longer execute when the test ends.”…”�”}”(hjÂ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MèhjË1ubhÞ)�”}”(hŒhkunit_release_action(test, func, ctx); is equivalent to func(ctx); kunit_remove_action(test, func, ctx);”h]”hŒhkunit_release_action(test, func, ctx); is equivalent to func(ctx); kunit_remove_action(test, func, ctx);”…”�”}”(hjÑ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MìhjË1ubhÞ)�”}”(hŒ:See also: devm_release_action() for the devres equivalent.”h]”hŒ:See also: devm_release_action() for the devres equivalent.”…”�”}”(hjà2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œe/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:12: ./include/kunit/resource.h”h´MñhjË1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhhÊh²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒManaged Devices”h]”hŒManaged Devices”…”�”}”(hjù2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjö2h²hh³hÇh´KubhÞ)�”}”(hŒrFunctions for using KUnit-managed struct device and struct device_driver. Include ``kunit/device.h`` to use these.”h]”(hŒRFunctions for using KUnit-managed struct device and struct device_driver. Include ”…”�”}”(hj3h²hh³Nh´Nubj )�”}”(hŒ``kunit/device.h``”h]”hŒkunit/device.h”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj3ubhŒ to use these.”…”�”}”(hj3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjö2h²hubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ kunit_driver_create (C function)”Œc.kunit_driver_create”hNt”auh1hûhjö2h²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒQstruct device_driver * kunit_driver_create (struct kunit *test, const char *name)”h]”j)�”}”(hŒOstruct device_driver *kunit_driver_create(struct kunit *test, const char *name)”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hj@3h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj<3h²hh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´Kubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN3h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj<3h²hh³jM3h´Kubh)�”}”(hhh]”jG)�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hj_3h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj\3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”ja3Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑŒkunit_driver_create”sbŒc.kunit_driver_create”†”asbuh1hhj<3h²hh³jM3h´Kubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€3h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj<3h²hh³jM3h´Kubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjŽ3h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj<3h²hh³jM3h´KubjA)�”}”(hŒkunit_driver_create”h]”jG)�”}”(hj}3h]”hŒkunit_driver_create”…”�”}”(hjŸ3h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj›3ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hj<3h²hh³jM3h´Kubj’)�”}”(hŒ&(struct kunit *test, const char *name)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjº3h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj¶3ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ3h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¶3ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hjØ3h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÕ3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jÚ3Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j{3Œc.kunit_driver_create”†”asbuh1hhj¶3ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö3h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj¶3ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj¶3ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj¶3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj²3ubj˜)�”}”(hŒconst char *name”h]”(j)�”}”(hjWh]”hŒconst”…”�”}”(hj*4h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj&4ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj74h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj&4ubjZ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjE4h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj&4ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS4h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj&4ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hja4h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj&4ubjG)�”}”(hŒname”h]”hŒname”…”�”}”(hjn4h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj&4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hj²3ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hj<3h²hh³jM3h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj83h²hh³jM3h´Kubah}”(h]”j33ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jM3h´Khj53h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ7Create a struct device_driver attached to the kunit_bus”h]”hŒ7Create a struct device_driver attached to the kunit_bus”…”�”}”(hj˜4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´Khj•4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj53h²hh³jM3h´Kubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥j°4j¦j°4j§‰j¨‰j©‰uh1j h²hhjö2h³Nh´Nubj«)�”}”(hXq**Parameters** ``struct kunit *test`` The test context object. ``const char *name`` The name to give the created driver. **Description** Creates a struct device_driver attached to the kunit_bus, with the name **name**. This driver will automatically be cleaned up on test exit. **Return** a stub struct device_driver, managed by KUnit, with the name **name**.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hjº4h]”hŒ Parameters”…”�”}”(hj¼4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj¸4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´Khj´4ubjù)�”}”(hhh]”(jþ)�”}”(hŒ0``struct kunit *test`` The test context object. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjÙ4h]”hŒstruct kunit *test”…”�”}”(hjÛ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´KhjÓ4ubj )�”}”(hhh]”hÞ)�”}”(hŒThe test context object.”h]”hŒThe test context object.”…”�”}”(hjò4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jî4h´Khjï4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jî4h´KhjÐ4ubjþ)�”}”(hŒ:``const char *name`` The name to give the created driver. ”h]”(j)�”}”(hŒ``const char *name``”h]”j )�”}”(hj5h]”hŒconst char *name”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´Khj 5ubj )�”}”(hhh]”hÞ)�”}”(hŒ$The name to give the created driver.”h]”hŒ$The name to give the created driver.”…”�”}”(hj+5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j'5h´Khj(5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j'5h´KhjÐ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhj´4ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hjM5h]”hŒ Description”…”�”}”(hjO5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjK5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´Khj´4ubhÞ)�”}”(hŒŒCreates a struct device_driver attached to the kunit_bus, with the name **name**. This driver will automatically be cleaned up on test exit.”h]”(hŒHCreates a struct device_driver attached to the kunit_bus, with the name ”…”�”}”(hjc5h²hh³Nh´Nubjµ)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hjk5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjc5ubhŒ<. This driver will automatically be cleaned up on test exit.”…”�”}”(hjc5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´Khj´4ubhÞ)�”}”(hŒ **Return**”h]”jµ)�”}”(hj†5h]”hŒReturn”…”�”}”(hjˆ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj„5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´Khj´4ubhÞ)�”}”(hŒFa stub struct device_driver, managed by KUnit, with the name **name**.”h]”(hŒ=a stub struct device_driver, managed by KUnit, with the name ”…”�”}”(hjœ5h²hh³Nh´Nubjµ)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hj¤5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjœ5ubhŒ.”…”�”}”(hjœ5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´Khj´4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhjö2h²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"kunit_device_register (C function)”Œc.kunit_device_register”hNt”auh1hûhjö2h²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒLstruct device * kunit_device_register (struct kunit *test, const char *name)”h]”j)�”}”(hŒJstruct device *kunit_device_register(struct kunit *test, const char *name)”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjÝ5h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjÙ5h²hh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K"ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë5h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÙ5h²hh³jê5h´K"ubh)�”}”(hhh]”jG)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjü5h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjù5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jþ5Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑŒkunit_device_register”sbŒc.kunit_device_register”†”asbuh1hhjÙ5h²hh³jê5h´K"ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÙ5h²hh³jê5h´K"ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj+6h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjÙ5h²hh³jê5h´K"ubjA)�”}”(hŒkunit_device_register”h]”jG)�”}”(hj6h]”hŒkunit_device_register”…”�”}”(hj<6h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj86ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hjÙ5h²hh³jê5h´K"ubj’)�”}”(hŒ&(struct kunit *test, const char *name)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjW6h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjS6ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd6h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjS6ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hju6h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjr6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jw6Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j6Œc.kunit_device_register”†”asbuh1hhjS6ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“6h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjS6ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj¡6h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjS6ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj®6h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjS6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjO6ubj˜)�”}”(hŒconst char *name”h]”(j)�”}”(hjWh]”hŒconst”…”�”}”(hjÇ6h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjÃ6ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ6h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÃ6ubjZ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjâ6h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÃ6ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð6h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÃ6ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjþ6h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjÃ6ubjG)�”}”(hŒname”h]”hŒname”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÃ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjO6ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hjÙ5h²hh³jê5h´K"ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhjÕ5h²hh³jê5h´K"ubah}”(h]”jÐ5ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jê5h´K"hjÒ5h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ-Create a struct device for use in KUnit tests”h]”hŒ-Create a struct device for use in KUnit tests”…”�”}”(hj57h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K"hj27h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjÒ5h²hh³jê5h´K"ubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jM7j¦jM7j§‰j¨‰j©‰uh1j h²hhjö2h³Nh´Nubj«)�”}”(hX^**Parameters** ``struct kunit *test`` The test context object. ``const char *name`` The name to give the created device. **Description** Creates a struct kunit_device (which is a struct device) with the given name, and a corresponding driver. The device and driver will be cleaned up on test exit, or when kunit_device_unregister is called. See also kunit_device_register_with_driver, if you wish to provide your own struct device_driver. **Return** a pointer to a struct device which will be cleaned up when the test exits, or an error pointer if the device could not be allocated or registered.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hjW7h]”hŒ Parameters”…”�”}”(hjY7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjU7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K&hjQ7ubjù)�”}”(hhh]”(jþ)�”}”(hŒ0``struct kunit *test`` The test context object. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjv7h]”hŒstruct kunit *test”…”�”}”(hjx7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjt7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K#hjp7ubj )�”}”(hhh]”hÞ)�”}”(hŒThe test context object.”h]”hŒThe test context object.”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j‹7h´K#hjŒ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j‹7h´K#hjm7ubjþ)�”}”(hŒ:``const char *name`` The name to give the created device. ”h]”(j)�”}”(hŒ``const char *name``”h]”j )�”}”(hj¯7h]”hŒconst char *name”…”�”}”(hj±7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K$hj©7ubj )�”}”(hhh]”hÞ)�”}”(hŒ$The name to give the created device.”h]”hŒ$The name to give the created device.”…”�”}”(hjÈ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÄ7h´K$hjÅ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÄ7h´K$hjm7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhjQ7ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hjê7h]”hŒ Description”…”�”}”(hjì7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjè7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K&hjQ7ubhÞ)�”}”(hX-Creates a struct kunit_device (which is a struct device) with the given name, and a corresponding driver. The device and driver will be cleaned up on test exit, or when kunit_device_unregister is called. See also kunit_device_register_with_driver, if you wish to provide your own struct device_driver.”h]”hX-Creates a struct kunit_device (which is a struct device) with the given name, and a corresponding driver. The device and driver will be cleaned up on test exit, or when kunit_device_unregister is called. See also kunit_device_register_with_driver, if you wish to provide your own struct device_driver.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K%hjQ7ubhÞ)�”}”(hŒ **Return**”h]”jµ)�”}”(hj8h]”hŒReturn”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K+hjQ7ubhÞ)�”}”(hŒ’a pointer to a struct device which will be cleaned up when the test exits, or an error pointer if the device could not be allocated or registered.”h]”hŒ’a pointer to a struct device which will be cleaned up when the test exits, or an error pointer if the device could not be allocated or registered.”…”�”}”(hj'8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K,hjQ7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhjö2h²hh³Nh´Nubhü)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ.kunit_device_register_with_driver (C function)”Œ#c.kunit_device_register_with_driver”hNt”auh1hûhjö2h²hh³Nh´Nubj )�”}”(hhh]”(j)�”}”(hŒystruct device * kunit_device_register_with_driver (struct kunit *test, const char *name, const struct device_driver *drv)”h]”j)�”}”(hŒwstruct device *kunit_device_register_with_driver(struct kunit *test, const char *name, const struct device_driver *drv)”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjV8h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjR8h²hh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K2ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd8h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjR8h²hh³jc8h´K2ubh)�”}”(hhh]”jG)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hju8h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjr8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jw8Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”jÞ)�”}”jÑŒ!kunit_device_register_with_driver”sbŒ#c.kunit_device_register_with_driver”†”asbuh1hhjR8h²hh³jc8h´K2ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–8h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjR8h²hh³jc8h´K2ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj¤8h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjR8h²hh³jc8h´K2ubjA)�”}”(hŒ!kunit_device_register_with_driver”h]”jG)�”}”(hj“8h]”hŒ!kunit_device_register_with_driver”…”�”}”(hjµ8h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj±8ubah}”(h]”h ]”(jYjZeh"]”h$]”h&]”hÅhÆuh1j@hjR8h²hh³jc8h´K2ubj’)�”}”(hŒG(struct kunit *test, const char *name, const struct device_driver *drv)”h]”(j˜)�”}”(hŒstruct kunit *test”h]”(j)�”}”(hj!h]”hŒstruct”…”�”}”(hjÐ8h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhjÌ8ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ8h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÌ8ubh)�”}”(hhh]”jG)�”}”(hŒkunit”h]”hŒkunit”…”�”}”(hjî8h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjë8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jð8Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j‘8Œ#c.kunit_device_register_with_driver”†”asbuh1hhjÌ8ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hjÌ8ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhjÌ8ubjG)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj'9h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÌ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjÈ8ubj˜)�”}”(hŒconst char *name”h]”(j)�”}”(hjWh]”hŒconst”…”�”}”(hj@9h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj<9ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM9h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj<9ubjZ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj[9h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj<9ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji9h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj<9ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjw9h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj<9ubjG)�”}”(hŒname”h]”hŒname”…”�”}”(hj„9h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj<9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjÈ8ubj˜)�”}”(hŒconst struct device_driver *drv”h]”(j)�”}”(hjWh]”hŒconst”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj™9ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª9h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj™9ubj)�”}”(hj!h]”hŒstruct”…”�”}”(hj¸9h²hh³Nh´Nubah}”(h]”h ]”j*ah"]”h$]”h&]”uh1jhj™9ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ9h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj™9ubh)�”}”(hhh]”jG)�”}”(hŒ device_driver”h]”hŒ device_driver”…”�”}”(hjÖ9h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhjÓ9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jØ9Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j‘8Œ#c.kunit_device_register_with_driver”†”asbuh1hhj™9ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô9h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj™9ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj™9ubjG)�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj™9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjÈ8ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hjR8h²hh³jc8h´K2ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhjN8h²hh³jc8h´K2ubah}”(h]”jI8ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³jc8h´K2hjK8h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ-Create a struct device for use in KUnit tests”h]”hŒ-Create a struct device for use in KUnit tests”…”�”}”(hj9:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K2hj6:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjK8h²hh³jc8h´K2ubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jQ:j¦jQ:j§‰j¨‰j©‰uh1j h²hhjö2h³Nh´Nubj«)�”}”(hX˜**Parameters** ``struct kunit *test`` The test context object. ``const char *name`` The name to give the created device. ``const struct device_driver *drv`` The struct device_driver to associate with the device. **Description** Creates a struct kunit_device (which is a struct device) with the given name, and driver. The device will be cleaned up on test exit, or when kunit_device_unregister is called. See also kunit_device_register, if you wish KUnit to create and manage a driver for you. **Return** a pointer to a struct device which will be cleaned up when the test exits, or an error pointer if the device could not be allocated or registered.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hj[:h]”hŒ Parameters”…”�”}”(hj]:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjY:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K6hjU:ubjù)�”}”(hhh]”(jþ)�”}”(hŒ0``struct kunit *test`` The test context object. ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hjz:h]”hŒstruct kunit *test”…”�”}”(hj|:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K3hjt:ubj )�”}”(hhh]”hÞ)�”}”(hŒThe test context object.”h]”hŒThe test context object.”…”�”}”(hj“:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j�:h´K3hj�:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjt:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j�:h´K3hjq:ubjþ)�”}”(hŒ:``const char *name`` The name to give the created device. ”h]”(j)�”}”(hŒ``const char *name``”h]”j )�”}”(hj³:h]”hŒconst char *name”…”�”}”(hjµ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj±:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K4hj­:ubj )�”}”(hhh]”hÞ)�”}”(hŒ$The name to give the created device.”h]”hŒ$The name to give the created device.”…”�”}”(hjÌ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÈ:h´K4hjÉ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jÈ:h´K4hjq:ubjþ)�”}”(hŒ[``const struct device_driver *drv`` The struct device_driver to associate with the device. ”h]”(j)�”}”(hŒ#``const struct device_driver *drv``”h]”j )�”}”(hjì:h]”hŒconst struct device_driver *drv”…”�”}”(hjî:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjê:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K5hjæ:ubj )�”}”(hhh]”hÞ)�”}”(hŒ6The struct device_driver to associate with the device.”h]”hŒ6The struct device_driver to associate with the device.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j;h´K5hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j;h´K5hjq:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhjU:ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hj';h]”hŒ Description”…”�”}”(hj);h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hj%;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K7hjU:ubhÞ)�”}”(hX Creates a struct kunit_device (which is a struct device) with the given name, and driver. The device will be cleaned up on test exit, or when kunit_device_unregister is called. See also kunit_device_register, if you wish KUnit to create and manage a driver for you.”h]”hX Creates a struct kunit_device (which is a struct device) with the given name, and driver. The device will be cleaned up on test exit, or when kunit_device_unregister is called. See also kunit_device_register, if you wish KUnit to create and manage a driver for you.”…”�”}”(hj=;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K6hjU:ubhÞ)�”}”(hŒ **Return**”h]”jµ)�”}”(hjN;h]”hŒReturn”…”�”}”(hjP;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjL;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K;hjU:ubhÞ)�”}”(hŒ’a pointer to a struct device which will be cleaned up when the test exits, or an error pointer if the device could not be allocated or registered.”h]”hŒ’a pointer to a struct device which will be cleaned up when the test exits, or an error pointer if the device could not be allocated or registered.”…”�”}”(hjd;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´K<ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO<h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj><ubh)�”}”(hhh]”jG)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj`<h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj]<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŸŒreftype”jÑŒ reftarget”jb<Œmodname”NŒ classname”NjÕjØ)�”}”jÛ]”j <Œc.kunit_device_unregister”†”asbuh1hhj><ubj0)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~<h²hh³Nh´Nubah}”(h]”h ]”j<ah"]”h$]”h&]”uh1j/hj><ubjò)�”}”(hjõh]”hŒ*”…”�”}”(hjŒ<h²hh³Nh´Nubah}”(h]”h ]”jþah"]”h$]”h&]”uh1jñhj><ubjG)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj™<h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jFhj><ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j—hjÈ;ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j‘hj�;h²hh³j¡;h´KDubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjdˆuh1jjejfhj‹;h²hh³j¡;h´KDubah}”(h]”j†;ah ]”(jjjkeh"]”h$]”h&]”joˆjp)jqhuh1jh³j¡;h´KDhjˆ;h²hubjs)�”}”(hhh]”hÞ)�”}”(hŒ!Unregister a KUnit-managed device”h]”hŒ!Unregister a KUnit-managed device”…”�”}”(hjÃ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´KDhjÀ<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjˆ;h²hh³j¡;h´KDubeh}”(h]”h ]”(jŸŒfunction”eh"]”h$]”h&]”j¤jŸj¥jÛ<j¦jÛ<j§‰j¨‰j©‰uh1j h²hhjö2h³Nh´Nubj«)�”}”(hX>**Parameters** ``struct kunit *test`` The test context object which created the device ``struct device *dev`` The device. **Description** Unregisters and destroys a struct device which was created with kunit_device_register or kunit_device_register_with_driver. If KUnit created a driver, cleans it up as well.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jµ)�”}”(hjå<h]”hŒ Parameters”…”�”}”(hjç<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjã<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´KHhjß<ubjù)�”}”(hhh]”(jþ)�”}”(hŒH``struct kunit *test`` The test context object which created the device ”h]”(j)�”}”(hŒ``struct kunit *test``”h]”j )�”}”(hj=h]”hŒstruct kunit *test”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´KEhjþ<ubj )�”}”(hhh]”hÞ)�”}”(hŒ0The test context object which created the device”h]”hŒ0The test context object which created the device”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j=h´KEhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³j=h´KEhjû<ubjþ)�”}”(hŒ#``struct device *dev`` The device. ”h]”(j)�”}”(hŒ``struct device *dev``”h]”j )�”}”(hj==h]”hŒstruct device *dev”…”�”}”(hj?=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´KFhj7=ubj )�”}”(hhh]”hÞ)�”}”(hŒ The device.”h]”hŒ The device.”…”�”}”(hjV=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jR=h´KFhjS=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jýh³jR=h´KFhjû<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jøhjß<ubhÞ)�”}”(hŒ**Description**”h]”jµ)�”}”(hjx=h]”hŒ Description”…”�”}”(hjz=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j´hjv=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´KHhjß<ubhÞ)�”}”(hŒ¬Unregisters and destroys a struct device which was created with kunit_device_register or kunit_device_register_with_driver. If KUnit created a driver, cleans it up as well.”h]”hŒ¬Unregisters and destroys a struct device which was created with kunit_device_register or kunit_device_register_with_driver. If KUnit created a driver, cleans it up as well.”…”�”}”(hjŽ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œc/var/lib/git/docbuild/linux/Documentation/dev-tools/kunit/api/resource:21: ./include/kunit/device.h”h´KGhjß<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jªhjö2h²hh³Nh´Nubeh}”(h]”Œmanaged-devices”ah ]”h"]”Œmanaged devices”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kubeh}”(h]”Œ resource-api”ah ]”h"]”Œ resource api”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j×=Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j±=j®=j©=j¦=uŒ nametypes”}”(j±=‰j©=‰uh}”(j®=hÊj jjLjQjºj¿jjjá jæ j™ jž jÃjÈjjjj#j�j¢j/j4j[!j`!jü#j$j&&j+&j¶'j»'j¥*jª*j£-j¨-jK0jP0j¦=jö2j33j83jÐ5jÕ5jI8jN8j†;j‹;uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.