€•Œ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”Œ%/translations/zh_CN/core-api/genalloc”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/zh_TW/core-api/genalloc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/it_IT/core-api/genalloc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/ja_JP/core-api/genalloc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/ko_KR/core-api/genalloc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/pt_BR/core-api/genalloc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/sp_SP/core-api/genalloc”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒThe genalloc/genpool subsystem”h]”hŒThe genalloc/genpool subsystem”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ?/var/lib/git/docbuild/linux/Documentation/core-api/genalloc.rst”h´KubhŒ paragraph”“”)�”}”(hXÉThere are a number of memory-allocation subsystems in the kernel, each aimed at a specific need. Sometimes, however, a kernel developer needs to implement a new allocator for a specific range of special-purpose memory; often that memory is located on a device somewhere. The author of the driver for that device can certainly write a little allocator to get the job done, but that is the way to fill the kernel with dozens of poorly tested allocators. Back in 2005, Jes Sorensen lifted one of those allocators from the sym53c8xx_2 driver and posted_ it as a generic module for the creation of ad hoc memory allocators. This code was merged for the 2.6.13 release; it has been modified considerably since then.”h]”(hX!There are a number of memory-allocation subsystems in the kernel, each aimed at a specific need. Sometimes, however, a kernel developer needs to implement a new allocator for a specific range of special-purpose memory; often that memory is located on a device somewhere. The author of the driver for that device can certainly write a little allocator to get the job done, but that is the way to fill the kernel with dozens of poorly tested allocators. Back in 2005, Jes Sorensen lifted one of those allocators from the sym53c8xx_2 driver and ”…”�”}”(hhÍh²hh³Nh´NubhŒ reference”“”)�”}”(hŒposted_”h]”hŒposted”…”�”}”(hh×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œposted”Œrefuri”Œ https://lwn.net/Articles/125842/”uh1hÕhhÍŒresolved”KubhŒ¡ it as a generic module for the creation of ad hoc memory allocators. This code was merged for the 2.6.13 release; it has been modified considerably since then.”…”�”}”(hhÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhŒtarget”“”)�”}”(hŒ,.. _posted: https://lwn.net/Articles/125842/”h]”h}”(h]”Œposted”ah ]”h"]”Œposted”ah$]”h&]”hçhèuh1hôh´Khh·h²hh³hÊŒ referenced”KubhÌ)�”}”(hŒyCode using this allocator should include . The action begins with the creation of a pool using one of:”h]”hŒyCode using this allocator should include . The action begins with the creation of a pool using one of:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œgen_pool_create (C function)”Œc.gen_pool_create”hNt”auh1jhh·h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ@struct gen_pool * gen_pool_create (int min_alloc_order, int nid)”h]”hŒdesc_signature_line”“”)�”}”(hŒ>struct gen_pool *gen_pool_create(int min_alloc_order, int nid)”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j3hj/h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:20: ./lib/genalloc.c”h´K’ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jEhj/h²hh³jDh´K’ubh)�”}”(hhh]”hŒ desc_sig_name”“”)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jYhjVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”j]Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jxŒ ASTIdentifier”“”)�”}”jsŒgen_pool_create”sbŒc.gen_pool_create”†”asbuh1hhj/h²hh³jDh´K’ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj/h²hh³jDh´K’ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j”hj/h²hh³jDh´K’ubhŒ desc_name”“”)�”}”(hŒgen_pool_create”h]”jZ)�”}”(hjƒh]”hŒgen_pool_create”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj§ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j¥hj/h²hh³jDh´K’ubhŒdesc_parameterlist”“”)�”}”(hŒ(int min_alloc_order, int nid)”h]”(hŒdesc_parameter”“”)�”}”(hŒint min_alloc_order”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jÎhjÊubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjÊubjZ)�”}”(hŒmin_alloc_order”h]”hŒmin_alloc_order”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÄubjÉ)�”}”(hŒint nid”h]”(jÏ)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjubjZ)�”}”(hŒnid”h]”hŒnid”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÄubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhj/h²hh³jDh´K’ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁŒ add_permalink”ˆuh1j-Œsphinx_line_type”Œ declarator”hj)h²hh³jDh´K’ubah}”(h]”j ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j'h³jDh´K’hj$h²hubhŒ desc_content”“”)�”}”(hhh]”hÌ)�”}”(hŒ create a new special memory pool”h]”hŒ create a new special memory pool”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:20: ./lib/genalloc.c”h´K’hjSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj$h²hh³jDh´K’ubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”Œdomain”jqŒobjtype”jnŒdesctype”jnŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j"h²hhh·h³Nh´NubhŒ container”“”)�”}”(hXO**Parameters** ``int min_alloc_order`` log base 2 of number of bytes each bitmap bit represents ``int nid`` node id of the node the pool structure should be allocated on, or -1 **Description** Create a new special memory pool that can be used to manage special purpose memory not managed by the regular kmalloc/kfree interface.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hj€h]”hŒ Parameters”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:20: ./lib/genalloc.c”h´K–hjzubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒQ``int min_alloc_order`` log base 2 of number of bytes each bitmap bit represents ”h]”(hŒterm”“”)�”}”(hŒ``int min_alloc_order``”h]”hŒliteral”“”)�”}”(hj§h]”hŒint min_alloc_order”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:20: ./lib/genalloc.c”h´K“hjŸubhŒ definition”“”)�”}”(hhh]”hÌ)�”}”(hŒ8log base 2 of number of bytes each bitmap bit represents”h]”hŒ8log base 2 of number of bytes each bitmap bit represents”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¾h´K“hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¾h´K“hjšubjž)�”}”(hŒQ``int nid`` node id of the node the pool structure should be allocated on, or -1 ”h]”(j¤)�”}”(hŒ ``int nid``”h]”jª)�”}”(hjäh]”hŒint nid”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:20: ./lib/genalloc.c”h´K”hjÞubjÀ)�”}”(hhh]”hÌ)�”}”(hŒDnode id of the node the pool structure should be allocated on, or -1”h]”hŒDnode id of the node the pool structure should be allocated on, or -1”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jùh´K”hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jùh´K”hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjzubhÌ)�”}”(hŒ**Description**”h]”jƒ)�”}”(hjh]”hŒ Description”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:20: ./lib/genalloc.c”h´K–hjzubhÌ)�”}”(hŒ†Create a new special memory pool that can be used to manage special purpose memory not managed by the regular kmalloc/kfree interface.”h]”hŒ†Create a new special memory pool that can be used to manage special purpose memory not managed by the regular kmalloc/kfree interface.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:20: ./lib/genalloc.c”h´K•hjzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!devm_gen_pool_create (C function)”Œc.devm_gen_pool_create”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒkstruct gen_pool * devm_gen_pool_create (struct device *dev, int min_alloc_order, int nid, const char *name)”h]”j.)�”}”(hŒistruct gen_pool *devm_gen_pool_create(struct device *dev, int min_alloc_order, int nid, const char *name)”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj`h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:23: ./lib/genalloc.c”h´M3ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj`h²hh³jqh´M3ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j…Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒdevm_gen_pool_create”sbŒc.devm_gen_pool_create”†”asbuh1hhj`h²hh³jqh´M3ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj`h²hh³jqh´M3ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj`h²hh³jqh´M3ubj¦)�”}”(hŒdevm_gen_pool_create”h]”jZ)�”}”(hj¡h]”hŒdevm_gen_pool_create”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¿ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hj`h²hh³jqh´M3ubjÃ)�”}”(hŒD(struct device *dev, int min_alloc_order, int nid, const char *name)”h]”(jÉ)�”}”(hŒstruct device *dev”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hjÚubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjÚubh)�”}”(hhh]”jZ)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jþŒmodname”NŒ classname”Njwjz)�”}”j}]”jŸŒc.devm_gen_pool_create”†”asbuh1hhjÚubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjÚubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjÚubjZ)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÖubjÉ)�”}”(hŒint min_alloc_order”h]”(jÏ)�”}”(hŒint”h]”hŒint”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjJubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjJubjZ)�”}”(hŒmin_alloc_order”h]”hŒmin_alloc_order”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÖubjÉ)�”}”(hŒint nid”h]”(jÏ)�”}”(hŒint”h]”hŒint”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjubjZ)�”}”(hŒnid”h]”hŒnid”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÖubjÉ)�”}”(hŒconst char *name”h]”(j4)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj´ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj´ubjÏ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj´ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj´ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj´ubjZ)�”}”(hŒname”h]”hŒname”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÖubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhj`h²hh³jqh´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhj\h²hh³jqh´M3ubah}”(h]”jWah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³jqh´M3hjYh²hubjR)�”}”(hhh]”hÌ)�”}”(hŒmanaged gen_pool_create”h]”hŒmanaged gen_pool_create”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:23: ./lib/genalloc.c”h´M3hj$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjYh²hh³jqh´M3ubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsj?jtj?ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hX2**Parameters** ``struct device *dev`` device that provides the gen_pool ``int min_alloc_order`` log base 2 of number of bytes each bitmap bit represents ``int nid`` node selector for allocated gen_pool, ``NUMA_NO_NODE`` for all nodes ``const char *name`` name of a gen_pool or NULL, identifies a particular gen_pool on device **Description** Create a new special memory pool that can be used to manage special purpose memory not managed by the regular kmalloc/kfree interface. The pool will be automatically destroyed by the device management code.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jƒ)�”}”(hjIh]”hŒ Parameters”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:23: ./lib/genalloc.c”h´M7hjCubj™)�”}”(hhh]”(jž)�”}”(hŒ9``struct device *dev`` device that provides the gen_pool ”h]”(j¤)�”}”(hŒ``struct device *dev``”h]”jª)�”}”(hjhh]”hŒstruct device *dev”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:23: ./lib/genalloc.c”h´M4hjbubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ!device that provides the gen_pool”h]”hŒ!device that provides the gen_pool”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}h´M4hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j}h´M4hj_ubjž)�”}”(hŒQ``int min_alloc_order`` log base 2 of number of bytes each bitmap bit represents ”h]”(j¤)�”}”(hŒ``int min_alloc_order``”h]”jª)�”}”(hj¡h]”hŒint min_alloc_order”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:23: ./lib/genalloc.c”h´M5hj›ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ8log base 2 of number of bytes each bitmap bit represents”h]”hŒ8log base 2 of number of bytes each bitmap bit represents”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶h´M5hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¶h´M5hj_ubjž)�”}”(hŒQ``int nid`` node selector for allocated gen_pool, ``NUMA_NO_NODE`` for all nodes ”h]”(j¤)�”}”(hŒ ``int nid``”h]”jª)�”}”(hjÚh]”hŒint nid”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:23: ./lib/genalloc.c”h´M6hjÔubjÀ)�”}”(hhh]”hÌ)�”}”(hŒDnode selector for allocated gen_pool, ``NUMA_NO_NODE`` for all nodes”h]”(hŒ&node selector for allocated gen_pool, ”…”�”}”(hjóh²hh³Nh´Nubjª)�”}”(hŒ``NUMA_NO_NODE``”h]”hŒ NUMA_NO_NODE”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjóubhŒ for all nodes”…”�”}”(hjóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jïh´M6hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jïh´M6hj_ubjž)�”}”(hŒ\``const char *name`` name of a gen_pool or NULL, identifies a particular gen_pool on 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&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:23: ./lib/genalloc.c”h´M7hjubjÀ)�”}”(hhh]”hÌ)�”}”(hŒFname of a gen_pool or NULL, identifies a particular gen_pool on device”h]”hŒFname of a gen_pool or NULL, identifies a particular gen_pool on device”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:h´M7hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j:h´M7hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjCubhÌ)�”}”(hŒ**Description**”h]”jƒ)�”}”(hj`h]”hŒ Description”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:23: ./lib/genalloc.c”h´M9hjCubhÌ)�”}”(hŒÎCreate a new special memory pool that can be used to manage special purpose memory not managed by the regular kmalloc/kfree interface. The pool will be automatically destroyed by the device management code.”h]”hŒÎCreate a new special memory pool that can be used to manage special purpose memory not managed by the regular kmalloc/kfree interface. The pool will be automatically destroyed by the device management code.”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:23: ./lib/genalloc.c”h´M8hjCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´NubhÌ)�”}”(hX)A call to gen_pool_create() will create a pool. The granularity of allocations is set with min_alloc_order; it is a log-base-2 number like those used by the page allocator, but it refers to bytes rather than pages. So, if min_alloc_order is passed as 3, then all allocations will be a multiple of eight bytes. Increasing min_alloc_order decreases the memory required to track the memory in the pool. The nid parameter specifies which NUMA node should be used for the allocation of the housekeeping structures; it can be -1 if the caller doesn't care.”h]”hX+A call to gen_pool_create() will create a pool. The granularity of allocations is set with min_alloc_order; it is a log-base-2 number like those used by the page allocator, but it refers to bytes rather than pages. So, if min_alloc_order is passed as 3, then all allocations will be a multiple of eight bytes. Increasing min_alloc_order decreases the memory required to track the memory in the pool. The nid parameter specifies which NUMA node should be used for the allocation of the housekeeping structures; it can be -1 if the caller doesn’t care.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)�”}”(hŒ³The "managed" interface devm_gen_pool_create() ties the pool to a specific device. Among other things, it will automatically clean up the pool when the given device is destroyed.”h]”hŒ·The “managedâ€� interface devm_gen_pool_create() ties the pool to a specific device. Among other things, it will automatically clean up the pool when the given device is destroyed.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K#hh·h²hubhÌ)�”}”(hŒA pool is shut down with:”h]”hŒA pool is shut down with:”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K'hh·h²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒgen_pool_destroy (C function)”Œc.gen_pool_destroy”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒ-void gen_pool_destroy (struct gen_pool *pool)”h]”j.)�”}”(hŒ,void gen_pool_destroy(struct gen_pool *pool)”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjËh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:41: ./lib/genalloc.c”h´KìubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjËh²hh³jÝh´Kìubj¦)�”}”(hŒgen_pool_destroy”h]”jZ)�”}”(hŒgen_pool_destroy”h]”hŒgen_pool_destroy”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjìubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hjËh²hh³jÝh´KìubjÃ)�”}”(hŒ(struct gen_pool *pool)”h]”jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hjubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j,Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjòsbŒc.gen_pool_destroy”†”asbuh1hhjubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjubah}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhjËh²hh³jÝh´Kìubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhjÇh²hh³jÝh´Kìubah}”(h]”jÂah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³jÝh´KìhjÄh²hubjR)�”}”(hhh]”hÌ)�”}”(hŒdestroy a special memory pool”h]”hŒdestroy a special memory pool”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:41: ./lib/genalloc.c”h´KìhjŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÄh²hh³jÝh´Kìubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsj§jtj§ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hŒ¬**Parameters** ``struct gen_pool *pool`` pool to destroy **Description** Destroy the specified special memory pool. Verifies that there are no outstanding allocations.”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³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:41: ./lib/genalloc.c”h´Kðhj«ubj™)�”}”(hhh]”jž)�”}”(hŒ*``struct gen_pool *pool`` pool to destroy ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hjÐh]”hŒstruct gen_pool *pool”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:41: ./lib/genalloc.c”h´KíhjÊubjÀ)�”}”(hhh]”hÌ)�”}”(hŒpool to destroy”h]”hŒpool to destroy”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jåh´Kíhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jåh´KíhjÇubah}”(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³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:41: ./lib/genalloc.c”h´Kïhj«ubhÌ)�”}”(hŒ^Destroy the specified special memory pool. Verifies that there are no outstanding allocations.”h]”hŒ^Destroy the specified special memory pool. Verifies that there are no outstanding allocations.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:41: ./lib/genalloc.c”h´Kîhj«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´NubhÌ)�”}”(hŒÍIt's worth noting that, if there are still allocations outstanding from the given pool, this function will take the rather extreme step of invoking BUG(), crashing the entire system. You have been warned.”h]”hŒÏIt’s worth noting that, if there are still allocations outstanding from the given pool, this function will take the rather extreme step of invoking BUG(), crashing the entire system. You have been warned.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K,hh·h²hubhÌ)�”}”(hŒÂA freshly created pool has no memory to allocate. It is fairly useless in that state, so one of the first orders of business is usually to add memory to the pool. That can be done with one of:”h]”hŒÂA freshly created pool has no memory to allocate. It is fairly useless in that state, so one of the first orders of business is usually to add memory to the pool. That can be done with one of:”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K0hh·h²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒgen_pool_add (C function)”Œc.gen_pool_add”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒRint gen_pool_add (struct gen_pool *pool, unsigned long addr, size_t size, int nid)”h]”j.)�”}”(hŒQint gen_pool_add(struct gen_pool *pool, unsigned long addr, size_t size, int nid)”h]”(jÏ)�”}”(hŒint”h]”hŒint”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjhh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´KmubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjhh²hh³jzh´Kmubj¦)�”}”(hŒ gen_pool_add”h]”jZ)�”}”(hŒ gen_pool_add”h]”hŒ gen_pool_add”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj‰ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hjhh²hh³jzh´KmubjÃ)�”}”(hŒA(struct gen_pool *pool, unsigned long addr, size_t size, int nid)”h]”(jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj¥ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj¥ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jÉŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj�sbŒc.gen_pool_add”†”asbuh1hhj¥ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj¥ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj¥ubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj¡ubjÉ)�”}”(hŒunsigned long addr”h]”(jÏ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj ubjÏ)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj ubjZ)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj¡ubjÉ)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jZ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjl ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jq Œmodname”NŒ classname”Njwjz)�”}”j}]”jãŒc.gen_pool_add”†”asbuh1hhjh ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjh ubjZ)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjh ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj¡ubjÉ)�”}”(hŒint nid”h]”(jÏ)�”}”(hŒint”h]”hŒint”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj° ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj° ubjZ)�”}”(hŒnid”h]”hŒnid”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj° ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhjhh²hh³jzh´Kmubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhjdh²hh³jzh´Kmubah}”(h]”j_ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³jzh´Kmhjah²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ-add a new chunk of special memory to the pool”h]”hŒ-add a new chunk of special memory to the pool”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´Kmhj÷ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjah²hh³jzh´Kmubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsj jtj ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hX·**Parameters** ``struct gen_pool *pool`` pool to add new memory chunk to ``unsigned long addr`` starting address of memory chunk to add to pool ``size_t size`` size in bytes of the memory chunk to add to pool ``int nid`` node id of the node the chunk structure and bitmap should be allocated on, or -1 **Description** Add a new chunk of special memory to the specified pool. Returns 0 on success or a -ve errno on failure.”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³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´Kqhj ubj™)�”}”(hhh]”(jž)�”}”(hŒ:``struct gen_pool *pool`` pool to add new memory chunk to ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hj; h]”hŒstruct gen_pool *pool”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj9 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´Knhj5 ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒpool to add new memory chunk to”h]”hŒpool to add new memory chunk to”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jP h´KnhjQ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj5 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jP h´Knhj2 ubjž)�”}”(hŒG``unsigned long addr`` starting address of memory chunk to add to pool ”h]”(j¤)�”}”(hŒ``unsigned long addr``”h]”jª)�”}”(hjt h]”hŒunsigned long addr”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjr ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´Kohjn ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ/starting address of memory chunk to add to pool”h]”hŒ/starting address of memory chunk to add to pool”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰ h´KohjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjn ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j‰ h´Kohj2 ubjž)�”}”(hŒA``size_t size`` size in bytes of the memory chunk to add to pool ”h]”(j¤)�”}”(hŒ``size_t size``”h]”jª)�”}”(hj­ h]”hŒ size_t size”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj« ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´Kphj§ ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ0size in bytes of the memory chunk to add to pool”h]”hŒ0size in bytes of the memory chunk to add to pool”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´Kphjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj§ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j h´Kphj2 ubjž)�”}”(hŒ]``int nid`` node id of the node the chunk structure and bitmap should be allocated on, or -1 ”h]”(j¤)�”}”(hŒ ``int nid``”h]”jª)�”}”(hjæ h]”hŒint nid”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjä ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´Krhjà ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒPnode id of the node the chunk structure and bitmap should be allocated on, or -1”h]”hŒPnode id of the node the chunk structure and bitmap should be allocated on, or -1”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´Kqhjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjà ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jû h´Krhj2 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³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´Kthj ubhÌ)�”}”(hŒ8Add a new chunk of special memory to the specified pool.”h]”hŒ8Add a new chunk of special memory to the specified pool.”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´Kshj ubhÌ)�”}”(hŒ/Returns 0 on success or a -ve errno on failure.”h]”hŒ/Returns 0 on success or a -ve errno on failure.”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:52: ./include/linux/genalloc.h”h´Kuhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒgen_pool_add_owner (C function)”Œc.gen_pool_add_owner”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒwint gen_pool_add_owner (struct gen_pool *pool, unsigned long virt, phys_addr_t phys, size_t size, int nid, void *owner)”h]”j.)�”}”(hŒvint gen_pool_add_owner(struct gen_pool *pool, unsigned long virt, phys_addr_t phys, size_t size, int nid, void *owner)”h]”(jÏ)�”}”(hŒint”h]”hŒint”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjr h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K«ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjr h²hh³j„ h´K«ubj¦)�”}”(hŒgen_pool_add_owner”h]”jZ)�”}”(hŒgen_pool_add_owner”h]”hŒgen_pool_add_owner”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj“ ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hjr h²hh³j„ h´K«ubjÃ)�”}”(hŒ`(struct gen_pool *pool, unsigned long virt, phys_addr_t phys, size_t size, int nid, void *owner)”h]”(jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj¯ ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj¯ ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÎ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jÓ Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj™ sbŒc.gen_pool_add_owner”†”asbuh1hhj¯ ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj¯ ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj¯ ubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¯ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj« ubjÉ)�”}”(hŒunsigned long virt”h]”(jÏ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj! ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj! ubjÏ)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj! ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj! ubjZ)�”}”(hŒvirt”h]”hŒvirt”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj! ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj« ubjÉ)�”}”(hŒphys_addr_t phys”h]”(h)�”}”(hhh]”jZ)�”}”(hŒ phys_addr_t”h]”hŒ phys_addr_t”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjv ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j{ Œmodname”NŒ classname”Njwjz)�”}”j}]”jí Œc.gen_pool_add_owner”†”asbuh1hhjr ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjr ubjZ)�”}”(hŒphys”h]”hŒphys”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjr ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj« ubjÉ)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jZ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jà Œmodname”NŒ classname”Njwjz)�”}”j}]”jí Œc.gen_pool_add_owner”†”asbuh1hhjº ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjº ubjZ)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjº ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj« ubjÉ)�”}”(hŒint nid”h]”(jÏ)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj ubjZ)�”}”(hŒnid”h]”hŒnid”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj« ubjÉ)�”}”(hŒ void *owner”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj7 ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj7 ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj7 ubjZ)�”}”(hŒowner”h]”hŒowner”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj7 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj« ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhjr h²hh³j„ h´K«ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhjn h²hh³j„ h´K«ubah}”(h]”ji ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³j„ h´K«hjk h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ-add a new chunk of special memory to the pool”h]”hŒ-add a new chunk of special memory to the pool”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K«hj‹ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjk h²hh³j„ h´K«ubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsj¦ jtj¦ ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hXa**Parameters** ``struct gen_pool *pool`` pool to add new memory chunk to ``unsigned long virt`` virtual starting address of memory chunk to add to pool ``phys_addr_t phys`` physical starting address of memory chunk to add to pool ``size_t size`` size in bytes of the memory chunk to add to pool ``int nid`` node id of the node the chunk structure and bitmap should be allocated on, or -1 ``void *owner`` private data the publisher would like to recall at alloc time **Description** Add a new chunk of special memory to the specified pool. Returns 0 on success or a -ve errno on failure.”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³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K¯hjª ubj™)�”}”(hhh]”(jž)�”}”(hŒ:``struct gen_pool *pool`` pool to add new memory chunk to ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hjÏ h]”hŒstruct gen_pool *pool”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjÍ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K¬hjÉ ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒpool to add new memory chunk to”h]”hŒpool to add new memory chunk to”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jä h´K¬hjå ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÉ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jä h´K¬hjÆ ubjž)�”}”(hŒO``unsigned long virt`` virtual starting address of memory chunk to add to pool ”h]”(j¤)�”}”(hŒ``unsigned long virt``”h]”jª)�”}”(hjh]”hŒunsigned long virt”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K­hjubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ7virtual starting address of memory chunk to add to pool”h]”hŒ7virtual starting address of memory chunk to add to pool”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´K­hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´K­hjÆ ubjž)�”}”(hŒN``phys_addr_t phys`` physical starting address of memory chunk to add to pool ”h]”(j¤)�”}”(hŒ``phys_addr_t phys``”h]”jª)�”}”(hjAh]”hŒphys_addr_t phys”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K®hj;ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ8physical starting address of memory chunk to add to pool”h]”hŒ8physical starting address of memory chunk to add to pool”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVh´K®hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jVh´K®hjÆ ubjž)�”}”(hŒA``size_t size`` size in bytes of the memory chunk to add to pool ”h]”(j¤)�”}”(hŒ``size_t size``”h]”jª)�”}”(hjzh]”hŒ size_t size”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K¯hjtubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ0size in bytes of the memory chunk to add to pool”h]”hŒ0size in bytes of the memory chunk to add to pool”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´K¯hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j�h´K¯hjÆ ubjž)�”}”(hŒ]``int nid`` node id of the node the chunk structure and bitmap should be allocated on, or -1 ”h]”(j¤)�”}”(hŒ ``int nid``”h]”jª)�”}”(hj³h]”hŒint nid”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K±hj­ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒPnode id of the node the chunk structure and bitmap should be allocated on, or -1”h]”hŒPnode id of the node the chunk structure and bitmap should be allocated on, or -1”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K°hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÈh´K±hjÆ ubjž)�”}”(hŒN``void *owner`` private data the publisher would like to recall at alloc time ”h]”(j¤)�”}”(hŒ``void *owner``”h]”jª)�”}”(hjíh]”hŒ void *owner”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K²hjçubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ=private data the publisher would like to recall at alloc time”h]”hŒ=private data the publisher would like to recall at alloc time”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´K²hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´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³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K´hjª ubhÌ)�”}”(hŒ8Add a new chunk of special memory to the specified pool.”h]”hŒ8Add a new chunk of special memory to the specified pool.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´K³hjª ubhÌ)�”}”(hŒ/Returns 0 on success or a -ve errno on failure.”h]”hŒ/Returns 0 on success or a -ve errno on failure.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:55: ./lib/genalloc.c”h´Kµhjª ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´NubhÌ)�”}”(hXnA call to gen_pool_add() will place the size bytes of memory starting at addr (in the kernel's virtual address space) into the given pool, once again using nid as the node ID for ancillary memory allocations. The gen_pool_add_virt() variant associates an explicit physical address with the memory; this is only necessary if the pool will be used for DMA allocations.”h]”hXpA call to gen_pool_add() will place the size bytes of memory starting at addr (in the kernel’s virtual address space) into the given pool, once again using nid as the node ID for ancillary memory allocations. The gen_pool_add_virt() variant associates an explicit physical address with the memory; this is only necessary if the pool will be used for DMA allocations.”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K:hh·h²hubhÌ)�”}”(hŒLThe functions for allocating memory from the pool (and putting it back) are:”h]”hŒLThe functions for allocating memory from the pool (and putting it back) are:”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KAhh·h²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒgen_pool_alloc (C function)”Œc.gen_pool_alloc”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒAunsigned long gen_pool_alloc (struct gen_pool *pool, size_t size)”h]”j.)�”}”(hŒ@unsigned long gen_pool_alloc(struct gen_pool *pool, size_t size)”h]”(jÏ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj”h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:68: ./include/linux/genalloc.h”h´K�ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj”h²hh³j¦h´K�ubjÏ)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj”h²hh³j¦h´K�ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj”h²hh³j¦h´K�ubj¦)�”}”(hŒgen_pool_alloc”h]”jZ)�”}”(hŒgen_pool_alloc”h]”hŒgen_pool_alloc”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÑubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hj”h²hh³j¦h´K�ubjÃ)�”}”(hŒ$(struct gen_pool *pool, size_t size)”h]”(jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hjíubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjíubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj×sbŒc.gen_pool_alloc”†”asbuh1hhjíubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjíubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjíubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjéubjÉ)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jZ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jhŒmodname”NŒ classname”Njwjz)�”}”j}]”j+Œc.gen_pool_alloc”†”asbuh1hhj_ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj_ubjZ)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjéubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhj”h²hh³j¦h´K�ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhj�h²hh³j¦h´K�ubah}”(h]”j‹ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³j¦h´K�hj�h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ%allocate special memory from the pool”h]”hŒ%allocate special memory from the pool”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:68: ./include/linux/genalloc.h”h´K�hj¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj�h²hh³j¦h´K�ubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsjÔjtjÔju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hXr**Parameters** ``struct gen_pool *pool`` pool to allocate from ``size_t size`` number of bytes to allocate from the pool **Description** Allocate the requested number of bytes from the specified pool. Uses the pool allocation function (with first-fit algorithm by default). Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”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³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:68: ./include/linux/genalloc.h”h´K“hjØubj™)�”}”(hhh]”(jž)�”}”(hŒ0``struct gen_pool *pool`` pool to allocate from ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hjýh]”hŒstruct gen_pool *pool”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:68: ./include/linux/genalloc.h”h´K�hj÷ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒpool to allocate from”h]”hŒpool to allocate from”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´K�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´K�hjôubjž)�”}”(hŒ:``size_t size`` number of bytes to allocate from the pool ”h]”(j¤)�”}”(hŒ``size_t size``”h]”jª)�”}”(hj6h]”hŒ size_t size”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:68: ./include/linux/genalloc.h”h´K‘hj0ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ)number of bytes to allocate from the pool”h]”hŒ)number of bytes to allocate from the pool”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKh´K‘hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jKh´K‘hjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjØubhÌ)�”}”(hŒ**Description**”h]”jƒ)�”}”(hjqh]”hŒ Description”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:68: ./include/linux/genalloc.h”h´K“hjØubhÌ)�”}”(hŒáAllocate the requested number of bytes from the specified pool. Uses the pool allocation function (with first-fit algorithm by default). Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”h]”hŒáAllocate the requested number of bytes from the specified pool. Uses the pool allocation function (with first-fit algorithm by default). Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:68: ./include/linux/genalloc.h”h´K’hjØubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒgen_pool_dma_alloc (C function)”Œc.gen_pool_dma_alloc”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒOvoid * gen_pool_dma_alloc (struct gen_pool *pool, size_t size, dma_addr_t *dma)”h]”j.)�”}”(hŒMvoid *gen_pool_dma_alloc(struct gen_pool *pool, size_t size, dma_addr_t *dma)”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj²h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:71: ./lib/genalloc.c”h´MIubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj²h²hh³jÄh´MIubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj²h²hh³jÄh´MIubj¦)�”}”(hŒgen_pool_dma_alloc”h]”jZ)�”}”(hŒgen_pool_dma_alloc”h]”hŒgen_pool_dma_alloc”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjàubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hj²h²hh³jÄh´MIubjÃ)�”}”(hŒ5(struct gen_pool *pool, size_t size, dma_addr_t *dma)”h]”(jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hjüubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjüubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjæsbŒc.gen_pool_dma_alloc”†”asbuh1hhjüubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjüubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjüubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjøubjÉ)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jZ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jwŒmodname”NŒ classname”Njwjz)�”}”j}]”j:Œc.gen_pool_dma_alloc”†”asbuh1hhjnubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjnubjZ)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjøubjÉ)�”}”(hŒdma_addr_t *dma”h]”(h)�”}”(hhh]”jZ)�”}”(hŒ dma_addr_t”h]”hŒ dma_addr_t”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j¿Œmodname”NŒ classname”Njwjz)�”}”j}]”j:Œc.gen_pool_dma_alloc”†”asbuh1hhj¶ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj¶ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj¶ubjZ)�”}”(hŒdma”h]”hŒdma”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjøubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhj²h²hh³jÄh´MIubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhj®h²hh³jÄh´MIubah}”(h]”j©ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³jÄh´MIhj«h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ3allocate special memory from the pool for DMA usage”h]”hŒ3allocate special memory from the pool for DMA usage”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:71: ./lib/genalloc.c”h´MIhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj«h²hh³jÄh´MIubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsj8jtj8ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hX**Parameters** ``struct gen_pool *pool`` pool to allocate from ``size_t size`` number of bytes to allocate from the pool ``dma_addr_t *dma`` dma-view physical address return value. Use ``NULL`` if unneeded. **Description** Allocate the requested number of bytes from the specified pool. Uses the pool allocation function (with first-fit algorithm by default). Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation. **Return** virtual address of the allocated memory, or ``NULL`` on failure”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jƒ)�”}”(hjBh]”hŒ Parameters”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:71: ./lib/genalloc.c”h´MMhj<ubj™)�”}”(hhh]”(jž)�”}”(hŒ0``struct gen_pool *pool`` pool to allocate from ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hjah]”hŒstruct gen_pool *pool”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:71: ./lib/genalloc.c”h´MJhj[ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒpool to allocate from”h]”hŒpool to allocate from”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jvh´MJhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jvh´MJhjXubjž)�”}”(hŒ:``size_t size`` number of bytes to allocate from the pool ”h]”(j¤)�”}”(hŒ``size_t size``”h]”jª)�”}”(hjšh]”hŒ size_t size”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:71: ./lib/genalloc.c”h´MKhj”ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ)number of bytes to allocate from the pool”h]”hŒ)number of bytes to allocate from the pool”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯h´MKhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¯h´MKhjXubjž)�”}”(hŒW``dma_addr_t *dma`` dma-view physical address return value. Use ``NULL`` if unneeded. ”h]”(j¤)�”}”(hŒ``dma_addr_t *dma``”h]”jª)�”}”(hjÓh]”hŒdma_addr_t *dma”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:71: ./lib/genalloc.c”h´MLhjÍubjÀ)�”}”(hhh]”hÌ)�”}”(hŒBdma-view physical address return value. Use ``NULL`` if unneeded.”h]”(hŒ-dma-view physical address return value. Use ”…”�”}”(hjìh²hh³Nh´Nubjª)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjìubhŒ if unneeded.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jèh´MLhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jèh´MLhjXubeh}”(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‚hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:71: ./lib/genalloc.c”h´MNhj<ubhÌ)�”}”(hŒáAllocate the requested number of bytes from the specified pool. Uses the pool allocation function (with first-fit algorithm by default). Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”h]”hŒáAllocate the requested number of bytes from the specified pool. Uses the pool allocation function (with first-fit algorithm by default). Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:71: ./lib/genalloc.c”h´MMhj<ubhÌ)�”}”(hŒ **Return**”h]”jƒ)�”}”(hjGh]”hŒReturn”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:71: ./lib/genalloc.c”h´MRhj<ubhÌ)�”}”(hŒ?virtual address of the allocated memory, or ``NULL`` on failure”h]”(hŒ,virtual address of the allocated memory, or ”…”�”}”(hj]h²hh³Nh´Nubjª)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj]ubhŒ on failure”…”�”}”(hj]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:71: ./lib/genalloc.c”h´MShj<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ gen_pool_free_owner (C function)”Œc.gen_pool_free_owner”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒ_void gen_pool_free_owner (struct gen_pool *pool, unsigned long addr, size_t size, void **owner)”h]”j.)�”}”(hŒ^void gen_pool_free_owner(struct gen_pool *pool, unsigned long addr, size_t size, void **owner)”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjšh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:74: ./lib/genalloc.c”h´MÝubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjšh²hh³j¬h´MÝubj¦)�”}”(hŒgen_pool_free_owner”h]”jZ)�”}”(hŒgen_pool_free_owner”h]”hŒgen_pool_free_owner”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj»ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hjšh²hh³j¬h´MÝubjÃ)�”}”(hŒF(struct gen_pool *pool, unsigned long addr, size_t size, void **owner)”•h]”(jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj×ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj×ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jûŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÁsbŒc.gen_pool_free_owner”†”asbuh1hhj×ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj×ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj×ubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÓubjÉ)�”}”(hŒunsigned long addr”h]”(jÏ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjIubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjIubjÏ)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjIubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjIubjZ)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÓubjÉ)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jZ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j£Œmodname”NŒ classname”Njwjz)�”}”j}]”jŒc.gen_pool_free_owner”†”asbuh1hhjšubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjšubjZ)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÓubjÉ)�”}”(hŒ void **owner”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjâubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjâubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjâubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjâubjZ)�”}”(hŒowner”h]”hŒowner”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÓubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhjšh²hh³j¬h´MÝubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhj–h²hh³j¬h´MÝubah}”(h]”j‘ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³j¬h´MÝhj“h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ.free allocated special memory back to the pool”h]”hŒ.free allocated special memory back to the pool”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:74: ./lib/genalloc.c”h´MÝhjCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj“h²hh³j¬h´MÝubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsj^jtj^ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hX©**Parameters** ``struct gen_pool *pool`` pool to free to ``unsigned long addr`` starting address of memory to free back to pool ``size_t size`` size in bytes of memory to free ``void **owner`` private data stashed at gen_pool_add() time **Description** Free previously allocated special memory back to the specified pool. Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jƒ)�”}”(hjhh]”hŒ Parameters”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:74: ./lib/genalloc.c”h´Máhjbubj™)�”}”(hhh]”(jž)�”}”(hŒ*``struct gen_pool *pool`` pool to free to ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hj‡h]”hŒstruct gen_pool *pool”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:74: ./lib/genalloc.c”h´MÞhj�ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒpool to free to”h]”hŒpool to free to”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jœh´MÞhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jœh´MÞhj~ubjž)�”}”(hŒG``unsigned long addr`` starting address of memory to free back to pool ”h]”(j¤)�”}”(hŒ``unsigned long addr``”h]”jª)�”}”(hjÀh]”hŒunsigned long addr”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:74: ./lib/genalloc.c”h´MßhjºubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ/starting address of memory to free back to pool”h]”hŒ/starting address of memory to free back to pool”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÕh´MßhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÕh´Mßhj~ubjž)�”}”(hŒ0``size_t size`` size in bytes of memory to free ”h]”(j¤)�”}”(hŒ``size_t size``”h]”jª)�”}”(hjùh]”hŒ size_t size”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:74: ./lib/genalloc.c”h´MàhjóubjÀ)�”}”(hhh]”hÌ)�”}”(hŒsize in bytes of memory to free”h]”hŒsize in bytes of memory to free”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Màhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´Màhj~ubjž)�”}”(hŒ=``void **owner`` private data stashed at gen_pool_add() time ”h]”(j¤)�”}”(hŒ``void **owner``”h]”jª)�”}”(hj2h]”hŒ void **owner”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:74: ./lib/genalloc.c”h´Máhj,ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ+private data stashed at gen_pool_add() time”h]”hŒ+private data stashed at gen_pool_add() time”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jGh´MáhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jGh´Máhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjbubhÌ)�”}”(hŒ**Description**”h]”jƒ)�”}”(hjmh]”hŒ Description”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:74: ./lib/genalloc.c”h´MãhjbubhÌ)�”}”(hŒžFree previously allocated special memory back to the specified pool. Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”h]”hŒžFree previously allocated special memory back to the specified pool. Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:74: ./lib/genalloc.c”h´Mâhjbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´NubhÌ)�”}”(hXÏAs one would expect, gen_pool_alloc() will allocate size< bytes from the given pool. The gen_pool_dma_alloc() variant allocates memory for use with DMA operations, returning the associated physical address in the space pointed to by dma. This will only work if the memory was added with gen_pool_add_virt(). Note that this function departs from the usual genpool pattern of using unsigned long values to represent kernel addresses; it returns a void * instead.”h]”hXÏAs one would expect, gen_pool_alloc() will allocate size< bytes from the given pool. The gen_pool_dma_alloc() variant allocates memory for use with DMA operations, returning the associated physical address in the space pointed to by dma. This will only work if the memory was added with gen_pool_add_virt(). Note that this function departs from the usual genpool pattern of using unsigned long values to represent kernel addresses; it returns a void * instead.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KMhh·h²hubhÌ)�”}”(hX4That all seems relatively simple; indeed, some developers clearly found it to be too simple. After all, the interface above provides no control over how the allocation functions choose which specific piece of memory to return. If that sort of control is needed, the following functions will be of interest:”h]”hX4That all seems relatively simple; indeed, some developers clearly found it to be too simple. After all, the interface above provides no control over how the allocation functions choose which specific piece of memory to return. If that sort of control is needed, the following functions will be of interest:”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KUhh·h²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&gen_pool_alloc_algo_owner (C function)”Œc.gen_pool_alloc_algo_owner”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒ{unsigned long gen_pool_alloc_algo_owner (struct gen_pool *pool, size_t size, genpool_algo_t algo, void *data, void **owner)”h]”j.)�”}”(hŒzunsigned long gen_pool_alloc_algo_owner(struct gen_pool *pool, size_t size, genpool_algo_t algo, void *data, void **owner)”h]”(jÏ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjÊh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:91: ./lib/genalloc.c”h´M ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjÊh²hh³jÜh´M ubjÏ)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjÊh²hh³jÜh´M ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjÊh²hh³jÜh´M ubj¦)�”}”(hŒgen_pool_alloc_algo_owner”h]”jZ)�”}”(hŒgen_pool_alloc_algo_owner”h]”hŒgen_pool_alloc_algo_owner”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hjÊh²hh³jÜh´M ubjÃ)�”}”(hŒS(struct gen_pool *pool, size_t size, genpool_algo_t algo, void *data, void **owner)”h]”(jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj#ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj#ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jGŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj sbŒc.gen_pool_alloc_algo_owner”†”asbuh1hhj#ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj#ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj#ubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjubjÉ)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jZ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jžŒmodname”NŒ classname”Njwjz)�”}”j}]”jaŒc.gen_pool_alloc_algo_owner”†”asbuh1hhj•ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj•ubjZ)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjubjÉ)�”}”(hŒgenpool_algo_t algo”h]”(h)�”}”(hhh]”jZ)�”}”(hŒgenpool_algo_t”h]”hŒgenpool_algo_t”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jæŒmodname”NŒ classname”Njwjz)�”}”j}]”jaŒc.gen_pool_alloc_algo_owner”†”asbuh1hhjÝubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjÝubjZ)�”}”(hŒalgo”h]”hŒalgo”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjubjÉ)�”}”(hŒ void *data”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj%ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj%ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj%ubjZ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjubjÉ)�”}”(hŒ void **owner”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjgubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjgubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjgubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjgubjZ)�”}”(hŒowner”h]”hŒowner”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhjÊh²hh³jÜh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhjÆh²hh³jÜh´M ubah}”(h]”jÁah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³jÜh´M hjÃh²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ%allocate special memory from the pool”h]”hŒ%allocate special memory from the pool”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:91: ./lib/genalloc.c”h´M hjÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÃh²hh³jÜh´M ubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsjãjtjãju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hX **Parameters** ``struct gen_pool *pool`` pool to allocate from ``size_t size`` number of bytes to allocate from the pool ``genpool_algo_t algo`` algorithm passed from caller ``void *data`` data passed to algorithm ``void **owner`` optionally retrieve the chunk owner **Description** Allocate the requested number of bytes from the specified pool. Uses the pool allocation function (with first-fit algorithm by default). Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”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³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:91: ./lib/genalloc.c”h´M hjçubj™)�”}”(hhh]”(jž)�”}”(hŒ0``struct gen_pool *pool`` pool to allocate from ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hj h]”hŒstruct gen_pool *pool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:91: ./lib/genalloc.c”h´M hjubjÀ)�”}”(hhh]”hÌ)�”}”(hŒpool to allocate from”h]”hŒpool to allocate from”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j!h´M hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j!h´M hjubjž)�”}”(hŒ:``size_t size`` number of bytes to allocate from the pool ”h]”(j¤)�”}”(hŒ``size_t size``”h]”jª)�”}”(hjEh]”hŒ size_t size”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:91: ./lib/genalloc.c”h´M hj?ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ)number of bytes to allocate from the pool”h]”hŒ)number of bytes to allocate from the pool”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jZh´M hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jZh´M hjubjž)�”}”(hŒ5``genpool_algo_t algo`` algorithm passed from caller ”h]”(j¤)�”}”(hŒ``genpool_algo_t algo``”h]”jª)�”}”(hj~h]”hŒgenpool_algo_t algo”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:91: ./lib/genalloc.c”h´M hjxubjÀ)�”}”(hhh]”hÌ)�”}”(hŒalgorithm passed from caller”h]”hŒalgorithm passed from caller”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j“h´M hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j“h´M hjubjž)�”}”(hŒ(``void *data`` data passed to algorithm ”h]”(j¤)�”}”(hŒ``void *data``”h]”jª)�”}”(hj·h]”hŒ void *data”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:91: ./lib/genalloc.c”h´M hj±ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒdata passed to algorithm”h]”hŒdata passed to algorithm”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÌh´M hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jÌh´M hjubjž)�”}”(hŒ5``void **owner`` optionally retrieve the chunk owner ”h]”(j¤)�”}”(hŒ``void **owner``”h]”jª)�”}”(hjðh]”hŒ void **owner”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:91: ./lib/genalloc.c”h´MhjêubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ#optionally retrieve the chunk owner”h]”hŒ#optionally retrieve the chunk owner”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´Mhjubeh}”(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³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:91: ./lib/genalloc.c”h´MhjçubhÌ)�”}”(hŒáAllocate the requested number of bytes from the specified pool. Uses the pool allocation function (with first-fit algorithm by default). Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”h]”hŒáAllocate the requested number of bytes from the specified pool. Uses the pool allocation function (with first-fit algorithm by default). Can not be used in NMI handler on architectures without NMI-safe cmpxchg implementation.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:91: ./lib/genalloc.c”h´Mhjçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒgen_pool_set_algo (C function)”Œc.gen_pool_set_algo”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒOvoid gen_pool_set_algo (struct gen_pool *pool, genpool_algo_t algo, void *data)”h]”j.)�”}”(hŒNvoid gen_pool_set_algo(struct gen_pool *pool, genpool_algo_t algo, void *data)”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjlh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:94: ./lib/genalloc.c”h´MeubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjlh²hh³j~h´Meubj¦)�”}”(hŒgen_pool_set_algo”h]”jZ)�”}”(hŒgen_pool_set_algo”h]”hŒgen_pool_set_algo”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj�ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hjlh²hh³j~h´MeubjÃ)�”}”(hŒ8(struct gen_pool *pool, genpool_algo_t algo, void *data)”h]”(jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj©ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj©ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jÍŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj“sbŒc.gen_pool_set_algo”†”asbuh1hhj©ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj©ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj©ubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj¥ubjÉ)�”}”(hŒgenpool_algo_t algo”h]”(h)�”}”(hhh]”jZ)�”}”(hŒgenpool_algo_t”h]”hŒgenpool_algo_t”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j$Œmodname”NŒ classname”Njwjz)�”}”j}]”jçŒc.gen_pool_set_algo”†”asbuh1hhjubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjubjZ)�”}”(hŒalgo”h]”hŒalgo”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj¥ubjÉ)�”}”(hŒ void *data”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjcubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjcubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjcubjZ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhjlh²hh³j~h´Meubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhjhh²hh³j~h´Meubah}”(h]”jcah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³j~h´Mehjeh²hubjR)�”}”(hhh]”hÌ)�”}”(hŒset the allocation algorithm”h]”hŒset the allocation algorithm”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:94: ./lib/genalloc.c”h´Mehj·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjeh²hh³j~h´Meubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsjÒjtjÒju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hXQ**Parameters** ``struct gen_pool *pool`` pool to change allocation algorithm ``genpool_algo_t algo`` custom algorithm function ``void *data`` additional data used by **algo** **Description** Call **algo** for each memory allocation in the pool. If **algo** is NULL use gen_pool_first_fit as default memory allocation function.”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³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:94: ./lib/genalloc.c”h´MihjÖubj™)�”}”(hhh]”(jž)�”}”(hŒ>``struct gen_pool *pool`` pool to change allocation algorithm ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hjûh]”hŒstruct gen_pool *pool”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:94: ./lib/genalloc.c”h´MfhjõubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ#pool to change allocation algorithm”h]”hŒ#pool to change allocation algorithm”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mfhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jh´Mfhjòubjž)�”}”(hŒ2``genpool_algo_t algo`` custom algorithm function ”h]”(j¤)�”}”(hŒ``genpool_algo_t algo``”h]”jª)�”}”(hj4h]”hŒgenpool_algo_t algo”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:94: ./lib/genalloc.c”h´Mghj.ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒcustom algorithm function”h]”hŒcustom algorithm function”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jIh´MghjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jIh´Mghjòubjž)�”}”(hŒ0``void *data`` additional data used by **algo** ”h]”(j¤)�”}”(hŒ``void *data``”h]”jª)�”}”(hjmh]”hŒ void *data”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:94: ./lib/genalloc.c”h´MhhjgubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ additional data used by **algo**”h]”(hŒadditional data used by ”…”�”}”(hj†h²hh³Nh´Nubjƒ)�”}”(hŒ**algo**”h]”hŒalgo”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚h´Mhhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j‚h´Mhhjò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³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:94: ./lib/genalloc.c”h´MjhjÖubhÌ)�”}”(hŒ‡Call **algo** for each memory allocation in the pool. If **algo** is NULL use gen_pool_first_fit as default memory allocation function.”h]”(hŒCall ”…”�”}”(hjÌh²hh³Nh´Nubjƒ)�”}”(hŒ**algo**”h]”hŒalgo”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjÌubhŒ, for each memory allocation in the pool. If ”…”�”}”(hjÌh²hh³Nh´Nubjƒ)�”}”(hŒ**algo**”h]”hŒalgo”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjÌubhŒF is NULL use gen_pool_first_fit as default memory allocation function.”…”�”}”(hjÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒP/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:94: ./lib/genalloc.c”h´MihjÖubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´NubhÌ)�”}”(hXeAllocations with gen_pool_alloc_algo() specify an algorithm to be used to choose the memory to be allocated; the default algorithm can be set with gen_pool_set_algo(). The data value is passed to the algorithm; most ignore it, but it is occasionally needed. One can, naturally, write a special-purpose algorithm, but there is a fair set already available:”h]”hXeAllocations with gen_pool_alloc_algo() specify an algorithm to be used to choose the memory to be allocated; the default algorithm can be set with gen_pool_set_algo(). The data value is passed to the algorithm; most ignore it, but it is occasionally needed. One can, naturally, write a special-purpose algorithm, but there is a fair set already available:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kahh·h²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒtgen_pool_first_fit is a simple first-fit allocator; this is the default algorithm if none other has been specified. ”h]”hÌ)�”}”(hŒsgen_pool_first_fit is a simple first-fit allocator; this is the default algorithm if none other has been specified.”h]”hŒsgen_pool_first_fit is a simple first-fit allocator; this is the default algorithm if none other has been specified.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÊh´Nubj)�”}”(hŒ�gen_pool_first_fit_align forces the allocation to have a specific alignment (passed via data in a genpool_data_align structure). ”h]”hÌ)�”}”(hŒ€gen_pool_first_fit_align forces the allocation to have a specific alignment (passed via data in a genpool_data_align structure).”h]”hŒ€gen_pool_first_fit_align forces the allocation to have a specific alignment (passed via data in a genpool_data_align structure).”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kkhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÊh´Nubj)�”}”(hŒ�gen_pool_first_fit_order_align aligns the allocation to the order of the size. A 60-byte allocation will thus be 64-byte aligned, for example. ”h]”hÌ)�”}”(hŒ�gen_pool_first_fit_order_align aligns the allocation to the order of the size. A 60-byte allocation will thus be 64-byte aligned, for example.”h]”hŒ�gen_pool_first_fit_order_align aligns the allocation to the order of the size. A 60-byte allocation will thus be 64-byte aligned, for example.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KnhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÊh´Nubj)�”}”(hŒHgen_pool_best_fit, as one would expect, is a simple best-fit allocator. ”h]”hÌ)�”}”(hŒGgen_pool_best_fit, as one would expect, is a simple best-fit allocator.”h]”hŒGgen_pool_best_fit, as one would expect, is a simple best-fit allocator.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kqhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÊh´Nubj)�”}”(hŒÆgen_pool_fixed_alloc allocates at a specific offset (passed in a genpool_data_fixed structure via the data parameter) within the pool. If the indicated memory is not available the allocation fails. ”h]”hÌ)�”}”(hŒÅgen_pool_fixed_alloc allocates at a specific offset (passed in a genpool_data_fixed structure via the data parameter) within the pool. If the indicated memory is not available the allocation fails.”h]”hŒÅgen_pool_fixed_alloc allocates at a specific offset (passed in a genpool_data_fixed structure via the data parameter) within the pool. If the indicated memory is not available the allocation fails.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kshj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jh³hÊh´Khhh·h²hubhÌ)�”}”(hX_There is a handful of other functions, mostly for purposes like querying the space available in the pool or iterating through chunks of memory. Most users, however, should not need much beyond what has been described above. With luck, wider awareness of this module will help to prevent the writing of special-purpose memory allocators in the future.”h]”hX_There is a handful of other functions, mostly for purposes like querying the space available in the pool or iterating through chunks of memory. Most users, however, should not need much beyond what has been described above. With luck, wider awareness of this module will help to prevent the writing of special-purpose memory allocators in the future.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kwhh·h²hubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"gen_pool_virt_to_phys (C function)”Œc.gen_pool_virt_to_phys”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒMphys_addr_t gen_pool_virt_to_phys (struct gen_pool *pool, unsigned long addr)”h]”j.)�”}”(hŒLphys_addr_t gen_pool_virt_to_phys(struct gen_pool *pool, unsigned long addr)”h]”(h)�”}”(hhh]”jZ)�”}”(hŒ phys_addr_t”h]”hŒ phys_addr_t”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jÇŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒgen_pool_virt_to_phys”sbŒc.gen_pool_virt_to_phys”†”asbuh1hhj¾h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:125: ./lib/genalloc.c”h´KÓubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj¾h²hh³jæh´KÓubj¦)�”}”(hŒgen_pool_virt_to_phys”h]”jZ)�”}”(hjãh]”hŒgen_pool_virt_to_phys”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjõubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hj¾h²hh³jæh´KÓubjÃ)�”}”(hŒ+(struct gen_pool *pool, unsigned long addr)”h]”(jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hjubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j4Œmodname”NŒ classname”Njwjz)�”}”j}]”jáŒc.gen_pool_virt_to_phys”†”asbuh1hhjubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj ubjÉ)�”}”(hŒunsigned long addr”h]”(jÏ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj€ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj€ubjÏ)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj€ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj€ubjZ)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhj¾h²hh³jæh´KÓubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhjºh²hh³jæh´KÓubah}”(h]”jµah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³jæh´KÓhj·h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ%return the physical address of memory”h]”hŒ%return the physical address of memory”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:125: ./lib/genalloc.c”h´KÓhjãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj·h²hh³jæh´KÓubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsjþjtjþju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hŒÁ**Parameters** ``struct gen_pool *pool`` pool to allocate from ``unsigned long addr`` starting address of memory **Description** Returns the physical address on success, or -1 on error.”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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:125: ./lib/genalloc.c”h´K×hj ubj™)�”}”(hhh]”(jž)�”}”(hŒ0``struct gen_pool *pool`` pool to allocate from ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hj' h]”hŒstruct gen_pool *pool”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj% ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:125: ./lib/genalloc.c”h´KÔhj! ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒpool to allocate from”h]”hŒpool to allocate from”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j< h´KÔhj= ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj! ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j< h´KÔhj ubjž)�”}”(hŒ2``unsigned long addr`` starting address of memory ”h]”(j¤)�”}”(hŒ``unsigned long addr``”h]”jª)�”}”(hj` h]”hŒunsigned long addr”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj^ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:125: ./lib/genalloc.c”h´KÕhjZ ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒstarting address of memory”h]”hŒstarting address of memory”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ju h´KÕhjv ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjZ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³ju 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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:125: ./lib/genalloc.c”h´K×hj ubhÌ)�”}”(hŒ8Returns the physical address on success, or -1 on error.”h]”hŒ8Returns the physical address on success, or -1 on error.”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:125: ./lib/genalloc.c”h´KÖhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$gen_pool_for_each_chunk (C function)”Œc.gen_pool_for_each_chunk”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒ�void gen_pool_for_each_chunk (struct gen_pool *pool, void (*func)(struct gen_pool *pool, struct gen_pool_chunk *chunk, void *data), void *data)”h]”j.)�”}”(hŒŽvoid gen_pool_for_each_chunk(struct gen_pool *pool, void (*func)(struct gen_pool *pool, struct gen_pool_chunk *chunk, void *data), void *data)”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjÜ h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:128: ./lib/genalloc.c”h´M ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjÜ h²hh³jî h´M ubj¦)�”}”(hŒgen_pool_for_each_chunk”h]”jZ)�”}”(hŒgen_pool_for_each_chunk”h]”hŒgen_pool_for_each_chunk”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjý ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hjÜ h²hh³jî h´M ubjÃ)�”}”(hŒr(struct gen_pool *pool, void (*func)(struct gen_pool *pool, struct gen_pool_chunk *chunk, void *data), void *data)”h]”(jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*!h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj!ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hj;!h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj8!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j=!Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj!sbŒc.gen_pool_for_each_chunk”†”asbuh1hhj!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[!h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj!ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hji!h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj!ubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hjv!h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj!ubjÉ)�”}”(hŒMvoid (*func)(struct gen_pool *pool, struct gen_pool_chunk *chunk, void *data)”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj‹!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj‹!ubj•)�”}”(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‹!ubjZ)�”}”(hŒfunc”h]”hŒfunc”…”�”}”(hjÆ!h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj‹!ubj•)�”}”(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‹!ubj4)�”}”(hj7h]”hŒstruct”…”�”}”(hjï!h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj‹!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü!h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj‹!ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj "ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j"Œmodname”NŒ classname”Njwjz)�”}”j}]”jW!Œc.gen_pool_for_each_chunk”†”asbuh1hhj‹!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+"h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj‹!ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj9"h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj‹!ubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hjF"h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj‹!ubj•)�”}”(hŒ,”h]”hŒ,”…”�”}”(hjT"h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj‹!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb"h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj‹!ubj4)�”}”(hj7h]”hŒstruct”…”�”}”(hjp"h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj‹!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}"h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj‹!ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool_chunk”h]”hŒgen_pool_chunk”…”�”}”(hjŽ"h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj‹"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j�"Œmodname”NŒ classname”Njwjz)�”}”j}]”jW!Œc.gen_pool_for_each_chunk”†”asbuh1hhj‹!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬"h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj‹!ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjº"h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj‹!ubjZ)�”}”(hŒchunk”h]”hŒchunk”…”�”}”(hjÇ"h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj‹!ubj•)�”}”(hjV"h]”hŒ,”…”�”}”(hjÕ"h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj‹!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ"h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj‹!ubjÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjð"h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj‹!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ"h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj‹!ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj‹!ubjZ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj‹!ubj•)�”}”(hjÖ!h]”hŒ)”…”�”}”(hj'#h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj‹!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj!ubjÉ)�”}”(hŒ void *data”h]”(jÏ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?#h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj;#ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM#h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj;#ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj[#h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj;#ubjZ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjh#h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj;#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj!ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhjÜ h²hh³jî h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhjØ h²hh³jî h´M ubah}”(h]”jÓ ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³jî h´M hjÕ h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ0call func for every chunk of generic memory pool”h]”hŒ0call func for every chunk of generic memory pool”…”�”}”(hj’#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:128: ./lib/genalloc.c”h´M hj�#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÕ h²hh³jî h´M ubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsjª#jtjª#ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hXQ**Parameters** ``struct gen_pool *pool`` the generic memory pool ``void (*func)(struct gen_pool *pool, struct gen_pool_chunk *chunk, void *data)`` func to call ``void *data`` additional data used by **func** **Description** Call **func** for every chunk of generic memory pool. The **func** is called with rcu_read_lock held.”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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:128: ./lib/genalloc.c”h´Mhj®#ubj™)�”}”(hhh]”(jž)�”}”(hŒ2``struct gen_pool *pool`` the generic memory pool ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hjÓ#h]”hŒstruct gen_pool *pool”…”�”}”(hjÕ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjÑ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:128: ./lib/genalloc.c”h´M hjÍ#ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒthe generic memory pool”h]”hŒthe generic memory pool”…”�”}”(hjì#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jè#h´M hjé#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÍ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jè#h´M hjÊ#ubjž)�”}”(hŒ_``void (*func)(struct gen_pool *pool, struct gen_pool_chunk *chunk, void *data)`` func to call ”h]”(j¤)�”}”(hŒQ``void (*func)(struct gen_pool *pool, struct gen_pool_chunk *chunk, void *data)``”h]”jª)�”}”(hj $h]”hŒMvoid (*func)(struct gen_pool *pool, struct gen_pool_chunk *chunk, void *data)”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj $ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:128: ./lib/genalloc.c”h´M hj$ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ func to call”h]”hŒ func to call”…”�”}”(hj%$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j!$h´M hj"$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j!$h´M hjÊ#ubjž)�”}”(hŒ0``void *data`` additional data used by **func** ”h]”(j¤)�”}”(hŒ``void *data``”h]”jª)�”}”(hjE$h]”hŒ void *data”…”�”}”(hjG$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjC$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:128: ./lib/genalloc.c”h´Mhj?$ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ additional data used by **func**”h]”(hŒadditional data used by ”…”�”}”(hj^$h²hh³Nh´Nubjƒ)�”}”(hŒ**func**”h]”hŒfunc”…”�”}”(hjf$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hj^$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jZ$h´Mhj[$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj?$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jZ$h´MhjÊ#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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:128: ./lib/genalloc.c”h´Mhj®#ubhÌ)�”}”(hŒfCall **func** for every chunk of generic memory pool. The **func** is called with rcu_read_lock held.”h]”(hŒCall ”…”�”}”(hj¤$h²hh³Nh´Nubjƒ)�”}”(hŒ**func**”h]”hŒfunc”…”�”}”(hj¬$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hj¤$ubhŒ. for every chunk of generic memory pool. The ”…”�”}”(hj¤$h²hh³Nh´Nubjƒ)�”}”(hŒ**func**”h]”hŒfunc”…”�”}”(hj¾$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hj¤$ubhŒ# is called with rcu_read_lock held.”…”�”}”(hj¤$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:128: ./lib/genalloc.c”h´Mhj®#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒgen_pool_has_addr (C function)”Œc.gen_pool_has_addr”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒPbool gen_pool_has_addr (struct gen_pool *pool, unsigned long start, size_t size)”h]”j.)�”}”(hŒObool gen_pool_has_addr(struct gen_pool *pool, unsigned long start, size_t size)”h]”(jÏ)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj÷$h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjó$h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:131: ./lib/genalloc.c”h´M!ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjó$h²hh³j%h´M!ubj¦)�”}”(hŒgen_pool_has_addr”h]”jZ)�”}”(hŒgen_pool_has_addr”h]”hŒgen_pool_has_addr”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj%ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hjó$h²hh³j%h´M!ubjÃ)�”}”(hŒ9(struct gen_pool *pool, unsigned long start, size_t size)”h]”(jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hj4%h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj0%ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA%h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj0%ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjR%h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjO%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jT%Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj%sbŒc.gen_pool_has_addr”†”asbuh1hhj0%ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr%h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj0%ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj€%h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj0%ubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj0%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj,%ubjÉ)�”}”(hŒunsigned long start”h]”(jÏ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¦%h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj¢%ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´%h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj¢%ubjÏ)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÂ%h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj¢%ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ%h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj¢%ubjZ)�”}”(hŒstart”h]”hŒstart”…”�”}”(hjÞ%h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¢%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj,%ubjÉ)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jZ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjú%h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj÷%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jü%Œmodname”NŒ classname”Njwjz)�”}”j}]”jn%Œc.gen_pool_has_addr”†”asbuh1hhjó%ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjó%ubjZ)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj&&h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjó%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj,%ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhjó$h²hh³j%h´M!ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhjï$h²hh³j%h´M!ubah}”(h]”jê$ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³j%h´M!hjì$h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ5checks if an address falls within the range of a pool”h]”hŒ5checks if an address falls within the range of a pool”…”�”}”(hjP&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:131: ./lib/genalloc.c”h´M!hjM&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjì$h²hh³j%h´M!ubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsjh&jtjh&ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hX4**Parameters** ``struct gen_pool *pool`` the generic memory pool ``unsigned long start`` start address ``size_t size`` size of the region **Description** Check if the range of addresses falls within the specified pool. Returns true if the entire range is contained in the pool and false otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jƒ)�”}”(hjr&h]”hŒ Parameters”…”�”}”(hjt&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjp&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:131: ./lib/genalloc.c”h´M%hjl&ubj™)�”}”(hhh]”(jž)�”}”(hŒ2``struct gen_pool *pool`` the generic memory pool ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hj‘&h]”hŒstruct gen_pool *pool”…”�”}”(hj“&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj�&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:131: ./lib/genalloc.c”h´M"hj‹&ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒthe generic memory pool”h]”hŒthe generic memory pool”…”�”}”(hjª&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¦&h´M"hj§&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj‹&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¦&h´M"hjˆ&ubjž)�”}”(hŒ&``unsigned long start`` start address ”h]”(j¤)�”}”(hŒ``unsigned long start``”h]”jª)�”}”(hjÊ&h]”hŒunsigned long start”…”�”}”(hjÌ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjÈ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:131: ./lib/genalloc.c”h´M#hjÄ&ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ start address”h]”hŒ start address”…”�”}”(hjã&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jß&h´M#hjà&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÄ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jß&h´M#hjˆ&ubjž)�”}”(hŒ#``size_t size`` size of the region ”h]”(j¤)�”}”(hŒ``size_t size``”h]”jª)�”}”(hj'h]”hŒ size_t size”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:131: ./lib/genalloc.c”h´M$hjý&ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒsize of the region”h]”hŒsize of the region”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'h´M$hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjý&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j'h´M$hjˆ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjl&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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:131: ./lib/genalloc.c”h´M&hjl&ubhÌ)�”}”(hŒ�Check if the range of addresses falls within the specified pool. Returns true if the entire range is contained in the pool and false otherwise.”h]”hŒ�Check if the range of addresses falls within the specified pool. Returns true if the entire range is contained in the pool and false otherwise.”…”�”}”(hjT'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:131: ./lib/genalloc.c”h´M%hjl&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒgen_pool_avail (C function)”Œc.gen_pool_avail”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒ-size_t gen_pool_avail (struct gen_pool *pool)”h]”j.)�”}”(hŒ,size_t gen_pool_avail(struct gen_pool *pool)”h]”(h)�”}”(hhh]”jZ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj†'h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjƒ'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jˆ'Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒgen_pool_avail”sbŒc.gen_pool_avail”†”asbuh1hhj'h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:134: ./lib/genalloc.c”h´M?ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨'h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj'h²hh³j§'h´M?ubj¦)�”}”(hŒgen_pool_avail”h]”jZ)�”}”(hj¤'h]”hŒgen_pool_avail”…”�”}”(hjº'h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj¶'ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hj'h²hh³j§'h´M?ubjÃ)�”}”(hŒ(struct gen_pool *pool)”h]”jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hjÕ'h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hjÑ'ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ'h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjÑ'ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjó'h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjð'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jõ'Œmodname”NŒ classname”Njwjz)�”}”j}]”j¢'Œc.gen_pool_avail”†”asbuh1hhjÑ'ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjÑ'ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjÑ'ubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hj,(h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÑ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjÍ'ubah}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhj'h²hh³j§'h´M?ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhj{'h²hh³j§'h´M?ubah}”(h]”jv'ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³j§'h´M?hjx'h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ$get available free space of the pool”h]”hŒ$get available free space of the pool”…”�”}”(hjV(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:134: ./lib/genalloc.c”h´M?hjS(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjx'h²hh³j§'h´M?ubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsjn(jtjn(ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hŒ‘**Parameters** ``struct gen_pool *pool`` pool to get available free space **Description** Return available free space of the specified pool.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jƒ)�”}”(hjx(h]”hŒ Parameters”…”�”}”(hjz(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjv(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:134: ./lib/genalloc.c”h´MChjr(ubj™)�”}”(hhh]”jž)�”}”(hŒ;``struct gen_pool *pool`` pool to get available free space ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hj—(h]”hŒstruct gen_pool *pool”…”�”}”(hj™(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj•(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:134: ./lib/genalloc.c”h´M@hj‘(ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ pool to get available free space”h]”hŒ pool to get available free space”…”�”}”(hj°(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬(h´M@hj­(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj‘(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j¬(h´M@hjŽ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hjr(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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:134: ./lib/genalloc.c”h´MBhjr(ubhÌ)�”}”(hŒ2Return available free space of the specified pool.”h]”hŒ2Return available free space of the specified pool.”…”�”}”(hjè(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:134: ./lib/genalloc.c”h´MAhjr(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒgen_pool_size (C function)”Œc.gen_pool_size”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒ,size_t gen_pool_size (struct gen_pool *pool)”h]”j.)�”}”(hŒ+size_t gen_pool_size(struct gen_pool *pool)”h]”(h)�”}”(hhh]”jZ)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j)Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒ gen_pool_size”sbŒc.gen_pool_size”†”asbuh1hhj)h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:137: ./lib/genalloc.c”h´MRubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<)h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj)h²hh³j;)h´MRubj¦)�”}”(hŒ gen_pool_size”h]”jZ)�”}”(hj8)h]”hŒ gen_pool_size”…”�”}”(hjN)h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjJ)ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hj)h²hh³j;)h´MRubjÃ)�”}”(hŒ(struct gen_pool *pool)”h]”jÉ)�”}”(hŒstruct gen_pool *pool”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hji)h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hje)ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv)h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhje)ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hj‡)h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj„)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j‰)Œmodname”NŒ classname”Njwjz)�”}”j}]”j6)Œc.gen_pool_size”†”asbuh1hhje)ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥)h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhje)ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj³)h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hje)ubjZ)�”}”(hŒpool”h]”hŒpool”…”�”}”(hjÀ)h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhje)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhja)ubah}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhj)h²hh³j;)h´MRubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhj)h²hh³j;)h´MRubah}”(h]”j )ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³j;)h´MRhj )h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ/get size in bytes of memory managed by the pool”h]”hŒ/get size in bytes of memory managed by the pool”…”�”}”(hjê)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:137: ./lib/genalloc.c”h´MRhjç)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj )h²hh³j;)h´MRubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsj*jtj*ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hŒ‚**Parameters** ``struct gen_pool *pool`` pool to get size **Description** Return size in bytes of memory managed by the pool.”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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:137: ./lib/genalloc.c”h´MVhj*ubj™)�”}”(hhh]”jž)�”}”(hŒ+``struct gen_pool *pool`` pool to get size ”h]”(j¤)�”}”(hŒ``struct gen_pool *pool``”h]”jª)�”}”(hj+*h]”hŒstruct gen_pool *pool”…”�”}”(hj-*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj)*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:137: ./lib/genalloc.c”h´MShj%*ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒpool to get size”h]”hŒpool to get size”…”�”}”(hjD*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@*h´MShjA*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj%*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j@*h´MShj"*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜hj*ubhÌ)�”}”(hŒ**Description**”h]”jƒ)�”}”(hjf*h]”hŒ Description”…”�”}”(hjh*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‚hjd*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:137: ./lib/genalloc.c”h´MUhj*ubhÌ)�”}”(hŒ3Return size in bytes of memory managed by the pool.”h]”hŒ3Return size in bytes of memory managed by the pool.”…”�”}”(hj|*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:137: ./lib/genalloc.c”h´MThj*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒgen_pool_get (C function)”Œc.gen_pool_get”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒEstruct gen_pool * gen_pool_get (struct device *dev, const char *name)”h]”j.)�”}”(hŒCstruct gen_pool *gen_pool_get(struct device *dev, const char *name)”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hj«*h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj§*h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:140: ./lib/genalloc.c”h´M ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹*h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj§*h²hh³j¸*h´M ubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hjÊ*h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÇ*ubah}”(h•¡=]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jÌ*Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒ gen_pool_get”sbŒc.gen_pool_get”†”asbuh1hhj§*h²hh³j¸*h´M ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë*h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj§*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 ubj¦)�”}”(hŒ gen_pool_get”h]”jZ)�”}”(hjè*h]”hŒ gen_pool_get”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj+ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hj§*h²hh³j¸*h´M ubjÃ)�”}”(hŒ&(struct device *dev, const char *name)”h]”(jÉ)�”}”(hŒstruct device *dev”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hj%+h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj!+ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2+h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj!+ubh)�”}”(hhh]”jZ)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjC+h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj@+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”jE+Œmodname”NŒ classname”Njwjz)�”}”j}]”jæ*Œc.gen_pool_get”†”asbuh1hhj!+ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja+h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj!+ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjo+h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj!+ubjZ)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj|+h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj!+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj+ubjÉ)�”}”(hŒconst char *name”h]”(j4)�”}”(hjºh]”hŒconst”…”�”}”(hj•+h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hj‘+ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢+h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj‘+ubjÏ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj°+h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj‘+ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾+h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj‘+ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjÌ+h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hj‘+ubjZ)�”}”(hŒname”h]”hŒname”…”�”}”(hjÙ+h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj‘+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhj+ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhj§*h²hh³j¸*h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhj£*h²hh³j¸*h´M ubah}”(h]”jž*ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³j¸*h´M hj *h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒ)Obtain the gen_pool (if any) for a device”h]”hŒ)Obtain the gen_pool (if any) for a device”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:140: ./lib/genalloc.c”h´M hj,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj *h²hh³j¸*h´M ubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsj,jtj,ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hŒþ**Parameters** ``struct device *dev`` device to retrieve the gen_pool from ``const char *name`` name of a gen_pool or NULL, identifies a particular gen_pool on device **Description** Returns the gen_pool for the device if one is present, or NULL.”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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:140: ./lib/genalloc.c”h´M$hj,ubj™)�”}”(hhh]”(jž)�”}”(hŒ<``struct device *dev`` device to retrieve the gen_pool from ”h]”(j¤)�”}”(hŒ``struct device *dev``”h]”jª)�”}”(hjD,h]”hŒstruct device *dev”…”�”}”(hjF,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjB,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:140: ./lib/genalloc.c”h´M!hj>,ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ$device to retrieve the gen_pool from”h]”hŒ$device to retrieve the gen_pool from”…”�”}”(hj],h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jY,h´M!hjZ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj>,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jY,h´M!hj;,ubjž)�”}”(hŒ\``const char *name`` name of a gen_pool or NULL, identifies a particular gen_pool on 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&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:140: ./lib/genalloc.c”h´M"hjw,ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒFname of a gen_pool or NULL, identifies a particular gen_pool on device”h]”hŒFname of a gen_pool or NULL, identifies a particular gen_pool on device”…”�”}”(hj–,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j’,h´M"hj“,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjw,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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:140: ./lib/genalloc.c”h´M$hj,ubhÌ)�”}”(hŒ?Returns the gen_pool for the device if one is present, or NULL.”h]”hŒ?Returns the gen_pool for the device if one is present, or NULL.”…”�”}”(hjÎ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:140: ./lib/genalloc.c”h´M#hj,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒof_gen_pool_get (C function)”Œc.of_gen_pool_get”hNt”auh1jhh·h²hh³Nh´Nubj#)�”}”(hhh]”(j()�”}”(hŒ[struct gen_pool * of_gen_pool_get (struct device_node *np, const char *propname, int index)”h]”j.)�”}”(hŒYstruct gen_pool *of_gen_pool_get(struct device_node *np, const char *propname, int index)”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hjý,h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hjù,h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:143: ./lib/genalloc.c”h´MfubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjù,h²hh³j -h´Mfubh)�”}”(hhh]”jZ)�”}”(hŒgen_pool”h]”hŒgen_pool”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j-Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒof_gen_pool_get”sbŒc.of_gen_pool_get”†”asbuh1hhjù,h²hh³j -h´MfubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=-h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjù,h²hh³j -h´Mfubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjK-h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjù,h²hh³j -h´Mfubj¦)�”}”(hŒof_gen_pool_get”h]”jZ)�”}”(hj:-h]”hŒof_gen_pool_get”…”�”}”(hj\-h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjX-ubah}”(h]”h ]”(j»j¼eh"]”h$]”h&]”jÀjÁuh1j¥hjù,h²hh³j -h´MfubjÃ)�”}”(hŒ9(struct device_node *np, const char *propname, int index)”h]”(jÉ)�”}”(hŒstruct device_node *np”h]”(j4)�”}”(hj7h]”hŒstruct”…”�”}”(hjw-h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hjs-ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„-h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjs-ubh)�”}”(hhh]”jZ)�”}”(hŒ device_node”h]”hŒ device_node”…”�”}”(hj•-h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj’-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jqŒreftype”jsŒ reftarget”j—-Œmodname”NŒ classname”Njwjz)�”}”j}]”j8-Œc.of_gen_pool_get”†”asbuh1hhjs-ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³-h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjs-ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hjÁ-h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjs-ubjZ)�”}”(hŒnp”h]”hŒnp”…”�”}”(hjÎ-h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjs-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjo-ubjÉ)�”}”(hŒconst char *propname”h]”(j4)�”}”(hjºh]”hŒconst”…”�”}”(hjç-h²hh³Nh´Nubah}”(h]”h ]”j@ah"]”h$]”h&]”uh1j3hjã-ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô-h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjã-ubjÏ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhjã-ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhjã-ubj•)�”}”(hj˜h]”hŒ*”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j¡ah"]”h$]”h&]”uh1j”hjã-ubjZ)�”}”(hŒpropname”h]”hŒpropname”…”�”}”(hj+.h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjã-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjo-ubjÉ)�”}”(hŒ int index”h]”(jÏ)�”}”(hŒint”h]”hŒint”…”�”}”(hjD.h²hh³Nh´Nubah}”(h]”h ]”jÛah"]”h$]”h&]”uh1jÎhj@.ubjF)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR.h²hh³Nh´Nubah}”(h]”h ]”jRah"]”h$]”h&]”uh1jEhj@.ubjZ)�”}”(hŒindex”h]”hŒindex”…”�”}”(hj`.h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhj@.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÀjÁuh1jÈhjo-ubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁuh1jÂhjù,h²hh³j -h´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jÀjÁjCˆuh1j-jDjEhjõ,h²hh³j -h´Mfubah}”(h]”jð,ah ]”(jIjJeh"]”h$]”h&]”jNˆjO)jPhuh1j'h³j -h´Mfhjò,h²hubjR)�”}”(hhh]”hÌ)�”}”(hŒfind a pool by phandle property”h]”hŒfind a pool by phandle property”…”�”}”(hjŠ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:143: ./lib/genalloc.c”h´Mfhj‡.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjò,h²hh³j -h´Mfubeh}”(h]”h ]”(jqŒfunction”eh"]”h$]”h&]”jrjqjsj¢.jtj¢.ju‰jv‰jw‰uh1j"h²hhh·h³Nh´Nubjy)�”}”(hXT**Parameters** ``struct device_node *np`` device node ``const char *propname`` property name containing phandle(s) ``int index`` index into the phandle array **Description** Returns the pool that contains the chunk starting at the physical address of the device tree node pointed at by the phandle property, or NULL 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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:143: ./lib/genalloc.c”h´Mjhj¦.ubj™)�”}”(hhh]”(jž)�”}”(hŒ'``struct device_node *np`` device node ”h]”(j¤)�”}”(hŒ``struct device_node *np``”h]”jª)�”}”(hjË.h]”hŒstruct device_node *np”…”�”}”(hjÍ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hjÉ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:143: ./lib/genalloc.c”h´MghjÅ.ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ device node”h]”hŒ device node”…”�”}”(hjä.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jà.h´Mghjá.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjÅ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jà.h´MghjÂ.ubjž)�”}”(hŒ=``const char *propname`` property name containing phandle(s) ”h]”(j¤)�”}”(hŒ``const char *propname``”h]”jª)�”}”(hj/h]”hŒconst char *propname”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:143: ./lib/genalloc.c”h´Mhhjþ.ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒ#property name containing phandle(s)”h]”hŒ#property name containing phandle(s)”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j/h´Mhhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hjþ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³j/h´MhhjÂ.ubjž)�”}”(hŒ+``int index`` index into the phandle array ”h]”(j¤)�”}”(hŒ ``int index``”h]”jª)�”}”(hj=/h]”hŒ int index”…”�”}”(hj?/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j©hj;/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£h³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:143: ./lib/genalloc.c”h´Mihj7/ubjÀ)�”}”(hhh]”hÌ)�”}”(hŒindex into the phandle array”h]”hŒindex into the phandle array”…”�”}”(hjV/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jR/h´MihjS/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿hj7/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j�h³jR/h´MihjÂ.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³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:143: ./lib/genalloc.c”h´Mkhj¦.ubhÌ)�”}”(hŒ›Returns the pool that contains the chunk starting at the physical address of the device tree node pointed at by the phandle property, or NULL if not found.”h]”hŒ›Returns the pool that contains the chunk starting at the physical address of the device tree node pointed at by the phandle property, or NULL if not found.”…”�”}”(hjŽ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/core-api/genalloc:143: ./lib/genalloc.c”h´Mjhj¦.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jxhh·h²hh³Nh´Nubeh}”(h]”Œthe-genalloc-genpool-subsystem”ah ]”h"]”Œthe genalloc/genpool subsystem”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”}”Œposted”]”h×asŒrefids”}”Œnameids”}”(j©/j¦/hÿhüuŒ nametypes”}”(j©/‰hÿˆuh}”(j¦/h·hühöj j)jWj\jÂjÇj_jdji jn j‹j�j©j®j‘j–jÁjÆjcjhjµjºjÓ jØ jê$jï$jv'j{'j )j)jž*j£*jð,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.