€•Œ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/driver-api/basics”Œ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/driver-api/basics”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/it_IT/driver-api/basics”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/ja_JP/driver-api/basics”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/ko_KR/driver-api/basics”Œ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/driver-api/basics”Œ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/driver-api/basics”Œ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Œ Driver Basics”h]”hŒ Driver Basics”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ?/var/lib/git/docbuild/linux/Documentation/driver-api/basics.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒDriver Entry and Exit points”h]”hŒDriver Entry and Exit points”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´KubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œmodule_init (C macro)”Œ c.module_init”hNt”auh1hÜhhËh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ module_init”h]”hŒdesc_signature_line”“”)�”}”(hŒ module_init”h]”hŒ desc_name”“”)�”}”(hŒ module_init”h]”hŒ desc_sig_name”“”)�”}”(hhöh]”hŒ module_init”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hþhhúh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´KRubah}”(h]”h ]”h"]”h$]”h&]”jjŒ add_permalink”ˆuh1høŒsphinx_line_type”Œ declarator”hhôh²hh³jh´KRubah}”(h]”hëah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1hòh³jh´KRhhïh²hubhŒ desc_content”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hhïh²hh³jh´KRubeh}”(h]”h ]”(Œc”Œmacro”eh"]”h$]”h&]”Œdomain”jAŒobjtype”jBŒdesctype”jBŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1híh²hhhËh³Nh´NubhŒ paragraph”“”)�”}”(hŒ``module_init (x)``”h]”hŒliteral”“”)�”}”(hjPh]”hŒmodule_init (x)”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´KThhËh²hubhŒ block_quote”“”)�”}”(hŒ"driver initialization entry point ”h]”jM)�”}”(hŒ!driver initialization entry point”h]”hŒ!driver initialization entry point”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´KRhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j|h´KRhhËh²hubhŒ container”“”)�”}”(hŒù**Parameters** ``x`` function to be run at kernel boot time or module insertion **Description** module_init() will either be called during do_initcalls() (if builtin) or at module insertion time (if a module). There can only be one per module.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´KVhj…ubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒA``x`` function to be run at kernel boot time or module insertion ”h]”(hŒterm”“”)�”}”(hŒ``x``”h]”jS)�”}”(hj²h]”hŒx”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´KShjªubhŒ definition”“”)�”}”(hhh]”jM)�”}”(hŒ:function to be run at kernel boot time or module insertion”h]”hŒ:function to be run at kernel boot time or module insertion”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÇh´KShjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÇh´KShj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj…ubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´KUhj…ubjM)�”}”(hŒ”module_init() will either be called during do_initcalls() (if builtin) or at module insertion time (if a module). There can only be one per module.”h]”hŒ”module_init() will either be called during do_initcalls() (if builtin) or at module insertion time (if a module). There can only be one per module.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´KThj…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒmodule_exit (C macro)”Œ c.module_exit”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ module_exit”h]”hù)�”}”(hŒ module_exit”h]”hÿ)�”}”(hŒ module_exit”h]”j)�”}”(hj.h]”hŒ module_exit”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´K\ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,h²hh³jKh´K\ubah}”(h]”j'ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jKh´K\hj)h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj)h²hh³jKh´K\ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjdjHjdjI‰jJ‰jK‰uh1híh²hhhËh³Nh´NubjM)�”}”(hŒ``module_exit (x)``”h]”jS)�”}”(hjjh]”hŒmodule_exit (x)”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´K^hhËh²hubji)�”}”(hŒdriver exit entry point ”h]”jM)�”}”(hŒdriver exit entry point”h]”hŒdriver exit entry point”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´K\hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j’h´K\hhËh²hubj„)�”}”(hXB**Parameters** ``x`` function to be run when driver is removed **Description** module_exit() will wrap the driver clean-up code with cleanup_module() when used with rmmod when the driver is a module. If the driver is statically compiled into the kernel, module_exit() has no effect. There can only be one per module.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´K`hj™ubj¤)�”}”(hhh]”j©)�”}”(hŒ0``x`` function to be run when driver is removed ”h]”(j¯)�”}”(hŒ``x``”h]”jS)�”}”(hj¾h]”hŒx”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´K]hj¸ubjÉ)�”}”(hhh]”jM)�”}”(hŒ)function to be run when driver is removed”h]”hŒ)function to be run when driver is removed”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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™ubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´K_hj™ubjM)�”}”(hŒîmodule_exit() will wrap the driver clean-up code with cleanup_module() when used with rmmod when the driver is a module. If the driver is statically compiled into the kernel, module_exit() has no effect. There can only be one per module.”h]”hŒîmodule_exit() will wrap the driver clean-up code with cleanup_module() when used with rmmod when the driver is a module. If the driver is statically compiled into the kernel, module_exit() has no effect. There can only be one per module.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´K^hj™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒklp_modinfo (C struct)”Œ c.klp_modinfo”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ klp_modinfo”h]”hù)�”}”(hŒstruct klp_modinfo”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j>hj:h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´KgubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jPhj:h²hh³jOh´Kgubhÿ)�”}”(hŒ klp_modinfo”h]”j)�”}”(hj8h]”hŒ klp_modinfo”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj:h²hh³jOh´Kgubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj6h²hh³jOh´Kgubah}”(h]”j1ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jOh´Kghj3h²hubj4)�”}”(hhh]”jM)�”}”(hŒ3ELF information preserved from the livepatch module”h]”hŒ3ELF information preserved from the livepatch module”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M~hj„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj3h²hh³jOh´Kgubeh}”(h]”h ]”(jAŒstruct”eh"]”h$]”h&]”jFjAjGjŸjHjŸjI‰jJ‰jK‰uh1híh²hhhËh³Nh´Nubj„)�”}”(hX8**Definition**:: struct klp_modinfo { Elf_Ehdr hdr; Elf_Shdr *sechdrs; char *secstrings; unsigned int symndx; }; **Members** ``hdr`` ELF header ``sechdrs`` Section header table ``secstrings`` String table for the section headers ``symndx`` The symbol table section index”h]”(jM)�”}”(hŒ**Definition**::”h]”(jŽ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§ubhŒ:”…”�”}”(hj§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M‚hj£ubhŒ literal_block”“”)�”}”(hŒostruct klp_modinfo { Elf_Ehdr hdr; Elf_Shdr *sechdrs; char *secstrings; unsigned int symndx; };”h]”hŒostruct klp_modinfo { Elf_Ehdr hdr; Elf_Shdr *sechdrs; char *secstrings; unsigned int symndx; };”…”�”}”hjÆsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M„hj£ubjM)�”}”(hŒ **Members**”h]”jŽ)�”}”(hj×h]”hŒMembers”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M‹hj£ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``hdr`` ELF header ”h]”(j¯)�”}”(hŒ``hdr``”h]”jS)�”}”(hjöh]”hŒhdr”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M�hjðubjÉ)�”}”(hhh]”jM)�”}”(hŒ ELF header”h]”hŒ ELF header”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ!``sechdrs`` Section header table ”h]”(j¯)�”}”(hŒ ``sechdrs``”h]”jS)�”}”(hj/h]”hŒsechdrs”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M‚hj)ubjÉ)�”}”(hhh]”jM)�”}”(hŒSection header table”h]”hŒSection header table”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jDh´M‚hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jDh´M‚hjíubj©)�”}”(hŒ4``secstrings`` String table for the section headers ”h]”(j¯)�”}”(hŒ``secstrings``”h]”jS)�”}”(hjhh]”hŒ secstrings”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´MƒhjbubjÉ)�”}”(hhh]”jM)�”}”(hŒ$String table for the section headers”h]”hŒ$String table for the section headers”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j}h´Mƒhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j}h´Mƒhjíubj©)�”}”(hŒ)``symndx`` The symbol table section index”h]”(j¯)�”}”(hŒ ``symndx``”h]”jS)�”}”(hj¡h]”hŒsymndx”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´Mƒhj›ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe symbol table section index”h]”hŒThe symbol table section index”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”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£hj£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtry_module_get (C function)”Œc.try_module_get”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+bool try_module_get (struct module *module)”h]”hù)�”}”(hŒ*bool try_module_get(struct module *module)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jûhj÷h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M¨ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷h²hh³j h´M¨ubhÿ)�”}”(hŒtry_module_get”h]”j)�”}”(hŒtry_module_get”h]”hŒtry_module_get”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj÷h²hh³j h´M¨ubhŒdesc_parameterlist”“”)�”}”(hŒ(struct module *module)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct module *module”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;ubh)�”}”(hhh]”j)�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”Œ identifier”Œ reftarget”j_Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jxŒ ASTIdentifier”“”)�”}”jsj!sbŒc.try_module_get”†”asbuh1hhj;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j“hj;ubj)�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj5ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj÷h²hh³j h´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjóh²hh³j h´M¨ubah}”(h]”jîah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j h´M¨hjðh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3take module refcount unless module is being removed”h]”hŒ3take module refcount unless module is being removed”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M¨hjËh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjðh²hh³j h´M¨ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjæjHjæjI‰jJ‰jK‰uh1híh²hhhËh³Nh´Nubj„)�”}”(hXÅ**Parameters** ``struct module *module`` the module we should check for **Description** Only try to get a module reference count if the module is not being removed. This call will fail if the module is in the process of being removed. Care must also be taken to ensure the module exists and is alive prior to usage of this call. This can be gauranteed through two means: 1) Direct protection: you know an earlier caller must have increased the module reference through __module_get(). This can typically be achieved by having another entity other than the module itself increment the module reference count. 2) Implied protection: there is an implied protection against module removal. An example of this is the implied protection used by kernfs / sysfs. The sysfs store / read file operations are guaranteed to exist through the use of kernfs's active reference (see kernfs_active()) and a sysfs / kernfs file removal cannot happen unless the same file is not active. Therefore, if a sysfs file is being read or written to the module which created it must still exist. It is therefore safe to use try_module_get() on module sysfs store / read ops. One of the real values to try_module_get() is the module_is_live() check which ensures that the caller of try_module_get() can yield to userspace module removal requests and gracefully fail if the module is on its way out. Returns true if the reference count was successfully incremented.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M¬hjêubj¤)�”}”(hhh]”j©)�”}”(hŒ9``struct module *module`` the module we should check for ”h]”(j¯)�”}”(hŒ``struct module *module``”h]”jS)�”}”(hjh]”hŒstruct module *module”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M©hj ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe module we should check for”h]”hŒthe module we should check for”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j$h´M©hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j$h´M©hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjêubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjJh]”hŒ Description”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M«hjêubjM)�”}”(hŒ’Only try to get a module reference count if the module is not being removed. This call will fail if the module is in the process of being removed.”h]”hŒ’Only try to get a module reference count if the module is not being removed. This call will fail if the module is in the process of being removed.”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´MªhjêubjM)�”}”(hŒ‡Care must also be taken to ensure the module exists and is alive prior to usage of this call. This can be gauranteed through two means:”h]”hŒ‡Care must also be taken to ensure the module exists and is alive prior to usage of this call. This can be gauranteed through two means:”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M­hjêubhŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒêDirect protection: you know an earlier caller must have increased the module reference through __module_get(). This can typically be achieved by having another entity other than the module itself increment the module reference count. ”h]”jM)�”}”(hŒéDirect protection: you know an earlier caller must have increased the module reference through __module_get(). This can typically be achieved by having another entity other than the module itself increment the module reference count.”h]”hŒéDirect protection: you know an earlier caller must have increased the module reference through __module_get(). This can typically be achieved by having another entity other than the module itself increment the module reference count.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M°hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj€ubj„)�”}”(hXImplied protection: there is an implied protection against module removal. An example of this is the implied protection used by kernfs / sysfs. The sysfs store / read file operations are guaranteed to exist through the use of kernfs's active reference (see kernfs_active()) and a sysfs / kernfs file removal cannot happen unless the same file is not active. Therefore, if a sysfs file is being read or written to the module which created it must still exist. It is therefore safe to use try_module_get() on module sysfs store / read ops. ”h]”jM)�”}”(hXImplied protection: there is an implied protection against module removal. An example of this is the implied protection used by kernfs / sysfs. The sysfs store / read file operations are guaranteed to exist through the use of kernfs's active reference (see kernfs_active()) and a sysfs / kernfs file removal cannot happen unless the same file is not active. Therefore, if a sysfs file is being read or written to the module which created it must still exist. It is therefore safe to use try_module_get() on module sysfs store / read ops.”h]”hXImplied protection: there is an implied protection against module removal. An example of this is the implied protection used by kernfs / sysfs. The sysfs store / read file operations are guaranteed to exist through the use of kernfs’s active reference (see kernfs_active()) and a sysfs / kernfs file removal cannot happen unless the same file is not active. Therefore, if a sysfs file is being read or written to the module which created it must still exist. It is therefore safe to use try_module_get() on module sysfs store / read ops.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´Mµhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj€ubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ)”uh1j~hjêubjM)�”}”(hŒÞOne of the real values to try_module_get() is the module_is_live() check which ensures that the caller of try_module_get() can yield to userspace module removal requests and gracefully fail if the module is on its way out.”h]”hŒÞOne of the real values to try_module_get() is the module_is_live() check which ensures that the caller of try_module_get() can yield to userspace module removal requests and gracefully fail if the module is on its way out.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´M¾hjêubjM)�”}”(hŒAReturns true if the reference count was successfully incremented.”h]”hŒAReturns true if the reference count was successfully incremented.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´MÂhjêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhhËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒmodule_put (C function)”Œ c.module_put”hNt”auh1hÜhhËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'void module_put (struct module *module)”h]”hù)�”}”(hŒ&void module_put(struct module *module)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjüh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´MÈubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjüh²hh³jh´MÈubhÿ)�”}”(hŒ module_put”h]”j)�”}”(hŒ module_put”h]”hŒ module_put”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjüh²hh³jh´MÈubj4)�”}”(hŒ(struct module *module)”h]”j:)�”}”(hŒstruct module *module”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9ubh)�”}”(hhh]”j)�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j]Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj#sbŒ c.module_put”†”asbuh1hhj9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj9ubj)�”}”(hŒmodule”h]”hŒmodule”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj5ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjüh²hh³jh´MÈubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjøh²hh³jh´MÈubah}”(h]”jóah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´MÈhjõh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%release a reference count to a module”h]”hŒ%release a reference count to a module”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´MÈhj½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjõh²hh³jh´MÈubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjØjHjØjI‰jJ‰jK‰uh1híh²hhhËh³Nh´Nubj„)�”}”(hX**Parameters** ``struct module *module`` the module we should release a reference count for **Description** If you successfully bump a reference count to a module with try_module_get(), when you are finished you must call module_put() to release that reference count.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´MÌhjÜubj¤)�”}”(hhh]”j©)�”}”(hŒM``struct module *module`` the module we should release a reference count for ”h]”(j¯)�”}”(hŒ``struct module *module``”h]”jS)�”}”(hjh]”hŒstruct module *module”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´MÉhjûubjÉ)�”}”(hhh]”jM)�”}”(hŒ2the module we should release a reference count for”h]”hŒ2the module we should release a reference count for”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´MÉhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´MÉhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÜubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´MËhjÜubjM)�”}”(hŒŸIf you successfully bump a reference count to a module with try_module_get(), when you are finished you must call module_put() to release that reference count.”h]”hŒŸIf you successfully bump a reference count to a module with try_module_get(), when you are finished you must call module_put() to release that reference count.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:7: ./include/linux/module.h”h´MÊhjÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhhËh²hh³Nh´Nubeh}”(h]”Œdriver-entry-and-exit-points”ah ]”h"]”Œdriver entry and exit points”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”h»)�”}”(hŒDriver device table”h]”hŒDriver device table”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjph²hh³hÊh´K ubah}”(h]”Œdriver-device-table”ah ]”h"]”Œdriver device table”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒ Delaying and scheduling routines”h]”hŒ Delaying and scheduling routines”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj‰h²hh³hÊh´KubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒprev_cputime (C struct)”Œc.prev_cputime”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ prev_cputime”h]”hù)�”}”(hŒstruct prev_cputime”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¯h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´KubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯h²hh³jÀh´Kubhÿ)�”}”(hŒ prev_cputime”h]”j)�”}”(hj­h]”hŒ prev_cputime”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¯h²hh³jÀh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj«h²hh³jÀh´Kubah}”(h]”j¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÀh´Khj¨h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#snapshot of system and user cputime”h]”hŒ#snapshot of system and user cputime”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mdhjòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨h²hh³jÀh´Kubeh}”(h]”h ]”(jAŒstruct”eh"]”h$]”h&]”jFjAjGj jHj jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hX%**Definition**:: struct prev_cputime { #ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE; u64 utime; u64 stime; raw_spinlock_t lock; #endif; }; **Members** ``utime`` time spent in user mode ``stime`` time spent in system mode ``lock`` protects the above two fields”h]”(jM)�”}”(hŒ**Definition**::”h]”(jŽ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mhhj ubjÅ)�”}”(hŒ‚struct prev_cputime { #ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE; u64 utime; u64 stime; raw_spinlock_t lock; #endif; };”h]”hŒ‚struct prev_cputime { #ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE; u64 utime; u64 stime; raw_spinlock_t lock; #endif; };”…”�”}”hj2 sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mjhj ubjM)�”}”(hŒ **Members**”h]”jŽ)�”}”(hjC h]”hŒMembers”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjA ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mrhj ubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``utime`` time spent in user mode ”h]”(j¯)�”}”(hŒ ``utime``”h]”jS)�”}”(hjb h]”hŒutime”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj` ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mfhj\ ubjÉ)�”}”(hhh]”jM)�”}”(hŒtime spent in user mode”h]”hŒtime spent in user mode”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jw h´Mfhjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj\ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jw h´MfhjY ubj©)�”}”(hŒ$``stime`` time spent in system mode ”h]”(j¯)�”}”(hŒ ``stime``”h]”jS)�”}”(hj› h]”hŒstime”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj™ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mghj• ubjÉ)�”}”(hhh]”jM)�”}”(hŒtime spent in system mode”h]”hŒtime spent in system mode”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j° h´Mghj± ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj• ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j° h´MghjY ubj©)�”}”(hŒ&``lock`` protects the above two fields”h]”(j¯)�”}”(hŒ``lock``”h]”jS)�”}”(hjÔ h]”hŒlock”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´MghjÎ ubjÉ)�”}”(hhh]”jM)�”}”(hŒprotects the above two fields”h]”hŒprotects the above two fields”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mhhjê ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÎ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jé h´MghjY ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mkhj‰h²hubjM)�”}”(hŒPStores previous user/system time values such that we can guarantee monotonicity.”h]”hŒPStores previous user/system time values such that we can guarantee monotonicity.”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mhhj‰h²hubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(__task_lazy_mmu_mode_active (C function)”Œc.__task_lazy_mmu_mode_active”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:bool __task_lazy_mmu_mode_active (struct task_struct *tsk)”h]”hù)�”}”(hŒ9bool __task_lazy_mmu_mode_active(struct task_struct *tsk)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjQ h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´MÝubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQ h²hh³jb h´MÝubhÿ)�”}”(hŒ__task_lazy_mmu_mode_active”h]”j)�”}”(hŒ__task_lazy_mmu_mode_active”h]”hŒ__task_lazy_mmu_mode_active”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjQ h²hh³jb h´MÝubj4)�”}”(hŒ(struct task_struct *tsk)”h]”j:)�”}”(hŒstruct task_struct *tsk”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj� ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj� ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j± Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjw sbŒc.__task_lazy_mmu_mode_active”†”asbuh1hhj� ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj� ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj� ubj)�”}”(hŒtsk”h]”hŒtsk”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj� ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‰ ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjQ h²hh³jb h´MÝubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjM h²hh³jb h´MÝubah}”(h]”jH ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jb h´MÝhjJ h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(Test the lazy MMU mode state for a task.”h]”hŒ(Test the lazy MMU mode state for a task.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´MÝhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjJ h²hh³jb h´MÝubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj, jHj, jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hXÎ**Parameters** ``struct task_struct *tsk`` The task to check. **Description** Test whether **tsk** has its lazy MMU mode state set to active (i.e. enabled and not paused). This function only considers the state saved in task_struct; to test whether current actually is in lazy MMU mode, is_lazy_mmu_mode_active() should be used instead. This function is intended for architectures that implement the lazy MMU mode; it must not be called from generic code.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj6 h]”hŒ Parameters”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Máhj0 ubj¤)�”}”(hhh]”j©)�”}”(hŒ/``struct task_struct *tsk`` The task to check. ”h]”(j¯)�”}”(hŒ``struct task_struct *tsk``”h]”jS)�”}”(hjU h]”hŒstruct task_struct *tsk”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjS ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´MÞhjO ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe task to check.”h]”hŒThe task to check.”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jj h´MÞhjk ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjO ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jj h´MÞhjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj0 ubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Màhj0 ubjM)�”}”(hŒ]Test whether **tsk** has its lazy MMU mode state set to active (i.e. enabled and not paused).”h]”(hŒ Test whether ”…”�”}”(hj¦ h²hh³Nh´NubjŽ)�”}”(hŒ**tsk**”h]”hŒtsk”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦ ubhŒI has its lazy MMU mode state set to active (i.e. enabled and not paused).”…”�”}”(hj¦ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mßhj0 ubjM)�”}”(hŒ¤This function only considers the state saved in task_struct; to test whether current actually is in lazy MMU mode, is_lazy_mmu_mode_active() should be used instead.”h]”hŒ¤This function only considers the state saved in task_struct; to test whether current actually is in lazy MMU mode, is_lazy_mmu_mode_active() should be used instead.”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mâhj0 ubjM)�”}”(hŒvThis function is intended for architectures that implement the lazy MMU mode; it must not be called from generic code.”h]”hŒvThis function is intended for architectures that implement the lazy MMU mode; it must not be called from generic code.”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mæhj0 ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$is_lazy_mmu_mode_active (C function)”Œc.is_lazy_mmu_mode_active”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ#bool is_lazy_mmu_mode_active (void)”h]”hù)�”}”(hŒ"bool is_lazy_mmu_mode_active(void)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´MòubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj h²hh³j h´Mòubhÿ)�”}”(hŒis_lazy_mmu_mode_active”h]”j)�”}”(hŒis_lazy_mmu_mode_active”h]”hŒis_lazy_mmu_mode_active”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj! ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj h²hh³j h´Mòubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj= ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj9 ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj h²hh³j h´Mòubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjý h²hh³j h´Mòubah}”(h]”jø ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j h´Mòhjú h²hubj4)�”}”(hhh]”jM)�”}”(hŒ/Test whether we are currently in lazy MMU mode.”h]”hŒ/Test whether we are currently in lazy MMU mode.”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Mòhjh h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjú h²hh³j h´Mòubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjƒ jHjƒ jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hXP**Parameters** ``void`` no arguments **Description** Test whether the current context is in lazy MMU mode. This is true if both: 1. We are not in interrupt context 2. Lazy MMU mode is active for the current task This function is intended for architectures that implement the lazy MMU mode; it must not be called from generic code.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Möhj‡ ubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj¬ h]”hŒvoid”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjª ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Khj¦ ubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÁ h´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¦ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÁ h´Khj£ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‡ ubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Khj‡ ubjM)�”}”(hŒžTest whether the current context is in lazy MMU mode. This is true if both: 1. We are not in interrupt context 2. Lazy MMU mode is active for the current task”h]”hŒžTest whether the current context is in lazy MMU mode. This is true if both: 1. We are not in interrupt context 2. Lazy MMU mode is active for the current task”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´Móhj‡ ubjM)�”}”(hŒvThis function is intended for architectures that implement the lazy MMU mode; it must not be called from generic code.”h]”hŒvThis function is intended for architectures that implement the lazy MMU mode; it must not be called from generic code.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M÷hj‡ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!set_cpus_allowed_ptr (C function)”Œc.set_cpus_allowed_ptr”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPint set_cpus_allowed_ptr (struct task_struct *p, const struct cpumask *new_mask)”h]”hù)�”}”(hŒOint set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj7 h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7 h²hh³jI h´M‘ubhÿ)�”}”(hŒset_cpus_allowed_ptr”h]”j)�”}”(hŒset_cpus_allowed_ptr”h]”hŒset_cpus_allowed_ptr”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjX ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj7 h²hh³jI h´M‘ubj4)�”}”(hŒ7(struct task_struct *p, const struct cpumask *new_mask)”h]”(j:)�”}”(hŒstruct task_struct *p”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjt ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjt ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j˜ Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj^ sbŒc.set_cpus_allowed_ptr”†”asbuh1hhjt ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjt ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjt ubj)�”}”(hj h]”hŒp”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjp ubj:)�”}”(hŒconst struct cpumask *new_mask”h]”(j?)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjå ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjå ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjå ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjå ubh)�”}”(hhh]”j)�”}”(hŒcpumask”h]”hŒcpumask”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j%Œmodname”NŒ classname”Njwjz)�”}”j}]”j² Œc.set_cpus_allowed_ptr”†”asbuh1hhjå ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjå ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjå ubj)�”}”(hŒnew_mask”h]”hŒnew_mask”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjå ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjp ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj7 h²hh³jI h´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj3 h²hh³jI h´M‘ubah}”(h]”j. ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jI h´M‘hj0 h²hubj4)�”}”(hhh]”jM)�”}”(hŒset CPU affinity mask of a task”h]”hŒset CPU affinity mask of a task”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M‘hjƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj0 h²hh³jI h´M‘ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjžjHjžjI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒ¦**Parameters** ``struct task_struct *p`` the task ``const struct cpumask *new_mask`` CPU affinity mask **Return** zero if successful, or a negative error code”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M•hj¢ubj¤)�”}”(hhh]”(j©)�”}”(hŒ#``struct task_struct *p`` the task ”h]”(j¯)�”}”(hŒ``struct task_struct *p``”h]”jS)�”}”(hjÇh]”hŒstruct task_struct *p”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M’hjÁubjÉ)�”}”(hhh]”jM)�”}”(hŒthe task”h]”hŒthe task”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ5``const struct cpumask *new_mask`` CPU affinity mask ”h]”(j¯)�”}”(hŒ"``const struct cpumask *new_mask``”h]”jS)�”}”(hjh]”hŒconst struct cpumask *new_mask”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M“hjúubjÉ)�”}”(hhh]”jM)�”}”(hŒCPU affinity mask”h]”hŒCPU affinity mask”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´M“hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´M“hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¢ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj;h]”hŒReturn”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M•hj¢ubjM)�”}”(hŒ,zero if successful, or a negative error code”h]”hŒ,zero if successful, or a negative error code”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M•hj¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtask_nice (C function)”Œ c.task_nice”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int task_nice (const struct task_struct *p)”h]”hù)�”}”(hŒ*int task_nice(const struct task_struct *p)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj|h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|h²hh³jŽh´M£ubhÿ)�”}”(hŒ task_nice”h]”j)�”}”(hŒ task_nice”h]”hŒ task_nice”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj|h²hh³jŽh´M£ubj4)�”}”(hŒ(const struct task_struct *p)”h]”j:)�”}”(hŒconst struct task_struct *p”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jøŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj£sbŒ c.task_nice”†”asbuh1hhj¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¹ubj)�”}”(hj h]”hŒp”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjµubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj|h²hh³jŽh´M£ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjxh²hh³jŽh´M£ubah}”(h]”jsah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŽh´M£hjuh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&return the nice value of a given task.”h]”hŒ&return the nice value of a given task.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M£hjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjuh²hh³jŽh´M£ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjrjHjrjI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒy**Parameters** ``const struct task_struct *p`` the task in question. **Return** The nice value [ -20 ... 0 ... 19 ].”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj|h]”hŒ Parameters”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M§hjvubj¤)�”}”(hhh]”j©)�”}”(hŒ6``const struct task_struct *p`` the task in question. ”h]”(j¯)�”}”(hŒ``const struct task_struct *p``”h]”jS)�”}”(hj›h]”hŒconst struct task_struct *p”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M¤hj•ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe task in question.”h]”hŒthe task in question.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjvubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÖh]”hŒReturn”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M¦hjvubjM)�”}”(hŒ$The nice value [ -20 ... 0 ... 19 ].”h]”hŒ$The nice value [ -20 ... 0 ... 19 ].”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M¦hjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒis_idle_task (C function)”Œc.is_idle_task”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/bool is_idle_task (const struct task_struct *p)”h]”hù)�”}”(hŒ.bool is_idle_task(const struct task_struct *p)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j(h´M»ubhÿ)�”}”(hŒ is_idle_task”h]”j)�”}”(hŒ is_idle_task”h]”hŒ is_idle_task”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j(h´M»ubj4)�”}”(hŒ(const struct task_struct *p)”h]”j:)�”}”(hŒconst struct task_struct *p”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjSubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjSubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjSubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjSubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j’Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj=sbŒc.is_idle_task”†”asbuh1hhjSubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjSubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjSubj)�”}”(hj h]”hŒp”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjOubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³j(h´M»ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j(h´M»ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j(h´M»hjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#is the specified task an idle task?”h]”hŒ#is the specified task an idle task?”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M»hjñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j(h´M»ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj jHj jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒ}**Parameters** ``const struct task_struct *p`` the task in question. **Return** 1 if **p** is an idle task. 0 otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M¿hjubj¤)�”}”(hhh]”j©)�”}”(hŒ6``const struct task_struct *p`` the task in question. ”h]”(j¯)�”}”(hŒ``const struct task_struct *p``”h]”jS)�”}”(hj5h]”hŒconst struct task_struct *p”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M¼hj/ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe task in question.”h]”hŒthe task in question.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJh´M¼hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJh´M¼hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjph]”hŒReturn”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M¾hjubjM)�”}”(hŒ(1 if **p** is an idle task. 0 otherwise.”h]”(hŒ1 if ”…”�”}”(hj†h²hh³Nh´NubjŽ)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†ubhŒ is an idle task. 0 otherwise.”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:21: ./include/linux/sched.h”h´M¾hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwake_up_process (C function)”Œc.wake_up_process”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int wake_up_process (struct task_struct *p)”h]”hù)�”}”(hŒ*int wake_up_process(struct task_struct *p)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÃh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÃh²hh³jÕh´Mubhÿ)�”}”(hŒwake_up_process”h]”j)�”}”(hŒwake_up_process”h]”hŒwake_up_process”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÃh²hh³jÕh´Mubj4)�”}”(hŒ(struct task_struct *p)”h]”j:)�”}”(hŒstruct task_struct *p”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j$Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjêsbŒc.wake_up_process”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hj h]”hŒp”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjüubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÃh²hh³jÕh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¿h²hh³jÕh´Mubah}”(h]”jºah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÕh´Mhj¼h²hubj4)�”}”(hhh]”jM)�”}”(hŒWake up a specific process”h]”hŒWake up a specific process”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´Mhjƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¼h²hh³jÕh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjžjHjžjI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hXI**Parameters** ``struct task_struct *p`` The process to be woken up. **Description** Attempt to wake up the nominated process and move it to the set of runnable processes. This function executes a full memory barrier before accessing the task state. **Return** 1 if the process was woken up, 0 if it was already running.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´Mhj¢ubj¤)�”}”(hhh]”j©)�”}”(hŒ6``struct task_struct *p`` The process to be woken up. ”h]”(j¯)�”}”(hŒ``struct task_struct *p``”h]”jS)�”}”(hjÇh]”hŒstruct task_struct *p”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MhjÁubjÉ)�”}”(hhh]”jM)�”}”(hŒThe process to be woken up.”•h]”hŒThe process to be woken up.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÜh´MhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÜh´Mhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¢ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´Mhj¢ubjM)�”}”(hŒVAttempt to wake up the nominated process and move it to the set of runnable processes.”h]”hŒVAttempt to wake up the nominated process and move it to the set of runnable processes.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´Mhj¢ubjM)�”}”(hŒMThis function executes a full memory barrier before accessing the task state.”h]”hŒMThis function executes a full memory barrier before accessing the task state.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´Mhj¢ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj8h]”hŒReturn”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´Mhj¢ubjM)�”}”(hŒ;1 if the process was woken up, 0 if it was already running.”h]”hŒ;1 if the process was woken up, 0 if it was already running.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´Mhj¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&preempt_notifier_register (C function)”Œc.preempt_notifier_register”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBvoid preempt_notifier_register (struct preempt_notifier *notifier)”h]”hù)�”}”(hŒAvoid preempt_notifier_register(struct preempt_notifier *notifier)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjyh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÌubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyh²hh³j‹h´MÌubhÿ)�”}”(hŒpreempt_notifier_register”h]”j)�”}”(hŒpreempt_notifier_register”h]”hŒpreempt_notifier_register”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjyh²hh³j‹h´MÌubj4)�”}”(hŒ#(struct preempt_notifier *notifier)”h]”j:)�”}”(hŒ!struct preempt_notifier *notifier”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¶ubh)�”}”(hhh]”j)�”}”(hŒpreempt_notifier”h]”hŒpreempt_notifier”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÚŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj sbŒc.preempt_notifier_register”†”asbuh1hhj¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¶ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¶ubj)�”}”(hŒnotifier”h]”hŒnotifier”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj²ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjyh²hh³j‹h´MÌubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjuh²hh³j‹h´MÌubah}”(h]”jpah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‹h´MÌhjrh²hubj4)�”}”(hhh]”jM)�”}”(hŒ5tell me when current is being preempted & rescheduled”h]”hŒ5tell me when current is being preempted & rescheduled”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÌhj:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjrh²hh³j‹h´MÌubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjUjHjUjI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒS**Parameters** ``struct preempt_notifier *notifier`` notifier struct to register”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj_h]”hŒ Parameters”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÐhjYubj¤)�”}”(hhh]”j©)�”}”(hŒA``struct preempt_notifier *notifier`` notifier struct to register”h]”(j¯)�”}”(hŒ%``struct preempt_notifier *notifier``”h]”jS)�”}”(hj~h]”hŒ!struct preempt_notifier *notifier”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÒhjxubjÉ)�”}”(hhh]”jM)�”}”(hŒnotifier struct to register”h]”hŒnotifier struct to register”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÍhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j“h´MÒhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(preempt_notifier_unregister (C function)”Œc.preempt_notifier_unregister”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDvoid preempt_notifier_unregister (struct preempt_notifier *notifier)”h]”hù)�”}”(hŒCvoid preempt_notifier_unregister(struct preempt_notifier *notifier)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÔh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÙubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔh²hh³jæh´MÙubhÿ)�”}”(hŒpreempt_notifier_unregister”h]”j)�”}”(hŒpreempt_notifier_unregister”h]”hŒpreempt_notifier_unregister”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÔh²hh³jæh´MÙubj4)�”}”(hŒ#(struct preempt_notifier *notifier)”h]”j:)�”}”(hŒ!struct preempt_notifier *notifier”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubh)�”}”(hhh]”j)�”}”(hŒpreempt_notifier”h]”hŒpreempt_notifier”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j5Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjûsbŒc.preempt_notifier_unregister”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hŒnotifier”h]”hŒnotifier”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÔh²hh³jæh´MÙubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÐh²hh³jæh´MÙubah}”(h]”jËah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jæh´MÙhjÍh²hubj4)�”}”(hhh]”jM)�”}”(hŒ0no longer interested in preemption notifications”h]”hŒ0no longer interested in preemption notifications”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÙhj•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÍh²hh³jæh´MÙubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj°jHj°jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒ¥**Parameters** ``struct preempt_notifier *notifier`` notifier struct to unregister **Description** This is *not* safe to call from within a preemption notifier.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÝhj´ubj¤)�”}”(hhh]”j©)�”}”(hŒD``struct preempt_notifier *notifier`` notifier struct to unregister ”h]”(j¯)�”}”(hŒ%``struct preempt_notifier *notifier``”h]”jS)�”}”(hjÙh]”hŒ!struct preempt_notifier *notifier”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÚhjÓubjÉ)�”}”(hhh]”jM)�”}”(hŒnotifier struct to unregister”h]”hŒnotifier struct to unregister”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj´ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÜhj´ubjM)�”}”(hŒ=This is *not* safe to call from within a preemption notifier.”h]”(hŒThis is ”…”�”}”(hj*h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hj*ubhŒ0 safe to call from within a preemption notifier.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´MÛhj´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%preempt_schedule_notrace (C function)”Œc.preempt_schedule_notrace”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6__visible void notrace preempt_schedule_notrace (void)”h]”hù)�”}”(hŒ5__visible void notrace preempt_schedule_notrace(void)”h]”(hŒ __visible”…”�”}”(hjih²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjih²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´M§ubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjih²hh³jh´M§ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjih²hh³jh´M§ubhŒnotrace”…”�”}”(hjih²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjih²hh³jh´M§ubhÿ)�”}”(hŒpreempt_schedule_notrace”h]”j)�”}”(hŒpreempt_schedule_notrace”h]”hŒpreempt_schedule_notrace”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjih²hh³jh´M§ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÊubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÆubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjih²hh³jh´M§ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjeh²hh³jh´M§ubah}”(h]”j`ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´M§hjbh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"preempt_schedule called by tracing”h]”hŒ"preempt_schedule called by tracing”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´M§hjõh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjbh²hh³jh´M§ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hXS**Parameters** ``void`` no arguments **Description** The tracing infrastructure uses preempt_enable_notrace to prevent recursion and tracing preempt enabling caused by the tracing infrastructure itself. But as tracing can happen in areas coming from userspace or just about to enter userspace, a preempt enable can occur before user_exit() is called. This will cause the scheduler to be called when the system is still in usermode. To prevent this, the preempt_enable_notrace will use this function instead of preempt_schedule() to exit user context if needed before calling the scheduler.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´M«hjubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj9h]”hŒvoid”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´Khj3ubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jNh´KhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jNh´Khj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjth]”hŒ Description”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´KhjubjM)�”}”(hXzThe tracing infrastructure uses preempt_enable_notrace to prevent recursion and tracing preempt enabling caused by the tracing infrastructure itself. But as tracing can happen in areas coming from userspace or just about to enter userspace, a preempt enable can occur before user_exit() is called. This will cause the scheduler to be called when the system is still in usermode.”h]”hXzThe tracing infrastructure uses preempt_enable_notrace to prevent recursion and tracing preempt enabling caused by the tracing infrastructure itself. But as tracing can happen in areas coming from userspace or just about to enter userspace, a preempt enable can occur before user_exit() is called. This will cause the scheduler to be called when the system is still in usermode.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´M¨hjubjM)�”}”(hŒ�To prevent this, the preempt_enable_notrace will use this function instead of preempt_schedule() to exit user context if needed before calling the scheduler.”h]”hŒ�To prevent this, the preempt_enable_notrace will use this function instead of preempt_schedule() to exit user context if needed before calling the scheduler.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:24: ./kernel/sched/core.c”h´M¯hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ cpupri_find_fitness (C function)”Œc.cpupri_find_fitness”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ“int cpupri_find_fitness (struct cpupri *cp, struct task_struct *p, struct cpumask *lowest_mask, bool (*fitness_fn)(struct task_struct *p, int cpu))”h]”hù)�”}”(hŒ’int cpupri_find_fitness(struct cpupri *cp, struct task_struct *p, struct cpumask *lowest_mask, bool (*fitness_fn)(struct task_struct *p, int cpu))”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÄh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´K�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÄh²hh³jÖh´K�ubhÿ)�”}”(hŒcpupri_find_fitness”h]”j)�”}”(hŒcpupri_find_fitness”h]”hŒcpupri_find_fitness”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÄh²hh³jÖh´K�ubj4)�”}”(hŒ{(struct cpupri *cp, struct task_struct *p, struct cpumask *lowest_mask, bool (*fitness_fn)(struct task_struct *p, int cpu))”h]”(j:)�”}”(hŒstruct cpupri *cp”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubh)�”}”(hhh]”j)�”}”(hŒcpupri”h]”hŒcpupri”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j%Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjësbŒc.cpupri_find_fitness”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hŒcp”h]”hŒcp”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjýubj:)�”}”(hŒstruct task_struct *p”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjsubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjsubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j—Œmodname”NŒ classname”Njwjz)�”}”j}]”j?Œc.cpupri_find_fitness”†”asbuh1hhjsubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjsubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjsubj)�”}”(hj h]”hŒp”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjýubj:)�”}”(hŒstruct cpumask *lowest_mask”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâubh)�”}”(hhh]”j)�”}”(hŒcpumask”h]”hŒcpumask”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j?Œc.cpupri_find_fitness”†”asbuh1hhjâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjâubj)�”}”(hŒ lowest_mask”h]”hŒ lowest_mask”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjýubj:)�”}”(hŒ2bool (*fitness_fn)(struct task_struct *p, int cpu)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRubj”)�”}”(hŒ(”h]”hŒ(”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRubj)�”}”(hŒ fitness_fn”h]”hŒ fitness_fn”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÔŒmodname”NŒ classname”Njwjz)�”}”j}]”j?Œc.cpupri_find_fitness”†”asbuh1hhjRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRubj)�”}”(hj h]”hŒp”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubj”)�”}”(hŒ,”h]”hŒ,”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjýubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÄh²hh³jÖh´K�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÀh²hh³jÖh´K�ubah}”(h]”j»ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÖh´K�hj½h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,find the best (lowest-pri) CPU in the system”h]”hŒ,find the best (lowest-pri) CPU in the system”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´K�hj„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj½h²hh³jÖh´K�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŸjHjŸjI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hX**Parameters** ``struct cpupri *cp`` The cpupri context ``struct task_struct *p`` The task ``struct cpumask *lowest_mask`` A mask to fill in with selected CPUs (or NULL) ``bool (*fitness_fn)(struct task_struct *p, int cpu)`` A pointer to a function to do custom checks whether the CPU fits a specific criteria so that we only return those CPUs. **Note** This function returns the recommended CPUs as calculated during the current invocation. By the time the call returns, the CPUs may have in fact changed priorities any number of times. While not ideal, it is not an issue of correctness since the normal rebalancer logic will correct any discrepancies created by racing against the uncertainty of the current priority configuration. **Return** (int)bool - CPUs were found”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´K…hj£ubj¤)�”}”(hhh]”(j©)�”}”(hŒ)``struct cpupri *cp`` The cpupri context ”h]”(j¯)�”}”(hŒ``struct cpupri *cp``”h]”jS)�”}”(hjÈh]”hŒstruct cpupri *cp”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´K‚hjÂubjÉ)�”}”(hhh]”jM)�”}”(hŒThe cpupri context”h]”hŒThe cpupri context”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ#``struct task_struct *p`` The task ”h]”(j¯)�”}”(hŒ``struct task_struct *p``”h]”jS)�”}”(hjh]”hŒstruct task_struct *p”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KƒhjûubjÉ)�”}”(hhh]”jM)�”}”(hŒThe task”h]”hŒThe task”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´Kƒhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´Kƒhj¿ubj©)�”}”(hŒO``struct cpumask *lowest_mask`` A mask to fill in with selected CPUs (or NULL) ”h]”(j¯)�”}”(hŒ``struct cpumask *lowest_mask``”h]”jS)�”}”(hj:h]”hŒstruct cpumask *lowest_mask”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´K„hj4ubjÉ)�”}”(hhh]”jM)�”}”(hŒ.A mask to fill in with selected CPUs (or NULL)”h]”hŒ.A mask to fill in with selected CPUs (or NULL)”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jOh´K„hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jOh´K„hj¿ubj©)�”}”(hŒ¯``bool (*fitness_fn)(struct task_struct *p, int cpu)`` A pointer to a function to do custom checks whether the CPU fits a specific criteria so that we only return those CPUs. ”h]”(j¯)�”}”(hŒ6``bool (*fitness_fn)(struct task_struct *p, int cpu)``”h]”jS)�”}”(hjsh]”hŒ2bool (*fitness_fn)(struct task_struct *p, int cpu)”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´K†hjmubjÉ)�”}”(hhh]”jM)�”}”(hŒwA pointer to a function to do custom checks whether the CPU fits a specific criteria so that we only return those CPUs.”h]”hŒwA pointer to a function to do custom checks whether the CPU fits a specific criteria so that we only return those CPUs.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´K…hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆh´K†hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj£ubjM)�”}”(hŒ**Note**”h]”jŽ)�”}”(hj¯h]”hŒNote”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´Kˆhj£ubjM)�”}”(hX~This function returns the recommended CPUs as calculated during the current invocation. By the time the call returns, the CPUs may have in fact changed priorities any number of times. While not ideal, it is not an issue of correctness since the normal rebalancer logic will correct any discrepancies created by racing against the uncertainty of the current priority configuration.”h]”hX~This function returns the recommended CPUs as calculated during the current invocation. By the time the call returns, the CPUs may have in fact changed priorities any number of times. While not ideal, it is not an issue of correctness since the normal rebalancer logic will correct any discrepancies created by racing against the uncertainty of the current priority configuration.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´Kˆhj£ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÖh]”hŒReturn”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´K�hj£ubjM)�”}”(hŒ(int)bool - CPUs were found”h]”hŒ(int)bool - CPUs were found”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´K�hj£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒcpupri_set (C function)”Œ c.cpupri_set”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8void cpupri_set (struct cpupri *cp, int cpu, int newpri)”h]”hù)�”}”(hŒ7void cpupri_set(struct cpupri *cp, int cpu, int newpri)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KÊubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j)h´KÊubhÿ)�”}”(hŒ cpupri_set”h]”j)�”}”(hŒ cpupri_set”h]”hŒ cpupri_set”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j)h´KÊubj4)�”}”(hŒ((struct cpupri *cp, int cpu, int newpri)”h]”(j:)�”}”(hŒstruct cpupri *cp”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjTubh)�”}”(hhh]”j)�”}”(hŒcpupri”h]”hŒcpupri”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jxŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj>sbŒ c.cpupri_set”†”asbuh1hhjTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjTubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjTubj)�”}”(hŒcp”h]”hŒcp”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjPubj:)�”}”(hŒint cpu”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjPubj:)�”}”(hŒ int newpri”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûubj)�”}”(hŒnewpri”h]”hŒnewpri”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjPubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³j)h´KÊubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j)h´KÊubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j)h´KÊhjh²hubj4)�”}”(hhh]”jM)�”}”(hŒupdate the CPU priority setting”h]”hŒupdate the CPU priority setting”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KÊhjBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j)h´KÊubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj]jHj]jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒñ**Parameters** ``struct cpupri *cp`` The cpupri context ``int cpu`` The target CPU ``int newpri`` The priority (INVALID,NORMAL,RT1-RT99,HIGHER) to assign to this CPU **Note** Assumes cpu_rq(cpu)->lock is locked **Return** (void)”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjgh]”hŒ Parameters”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KÎhjaubj¤)�”}”(hhh]”(j©)�”}”(hŒ)``struct cpupri *cp`` The cpupri context ”h]”(j¯)�”}”(hŒ``struct cpupri *cp``”h]”jS)�”}”(hj†h]”hŒstruct cpupri *cp”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KËhj€ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe cpupri context”h]”hŒThe cpupri context”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``int cpu`` The target CPU ”h]”(j¯)�”}”(hŒ ``int cpu``”h]”jS)�”}”(hj¿h]”hŒint cpu”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KÌhj¹ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe target CPU”h]”hŒThe target CPU”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒS``int newpri`` The priority (INVALID,NORMAL,RT1-RT99,HIGHER) to assign to this CPU ”h]”(j¯)�”}”(hŒ``int newpri``”h]”jS)�”}”(hjøh]”hŒ int newpri”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KÍhjòubjÉ)�”}”(hhh]”jM)�”}”(hŒCThe priority (INVALID,NORMAL,RT1-RT99,HIGHER) to assign to this CPU”h]”hŒCThe priority (INVALID,NORMAL,RT1-RT99,HIGHER) to assign to this CPU”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j h´KÍhjubah}”(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£hjaubjM)�”}”(hŒ**Note**”h]”jŽ)�”}”(hj3h]”hŒNote”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KÏhjaubjM)�”}”(hŒ#Assumes cpu_rq(cpu)->lock is locked”h]”hŒ#Assumes cpu_rq(cpu)->lock is locked”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KÏhjaubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjZh]”hŒReturn”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KÑhjaubjM)�”}”(hŒ(void)”h]”hŒ(void)”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´KÑhjaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒcpupri_init (C function)”Œ c.cpupri_init”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ#int cpupri_init (struct cpupri *cp)”h]”hù)�”}”(hŒ"int cpupri_init(struct cpupri *cp)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj›h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›h²hh³j­h´Mubhÿ)�”}”(hŒ cpupri_init”h]”j)�”}”(hŒ cpupri_init”h]”hŒ cpupri_init”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj›h²hh³j­h´Mubj4)�”}”(hŒ(struct cpupri *cp)”h]”j:)�”}”(hŒstruct cpupri *cp”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjØubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjØubh)�”}”(hhh]”j)�”}”(hŒcpupri”h]”hŒcpupri”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jüŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÂsbŒ c.cpupri_init”†”asbuh1hhjØubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjØubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjØubj)�”}”(hŒcp”h]”hŒcp”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÔubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj›h²hh³j­h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj—h²hh³j­h´Mubah}”(h]”j’ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j­h´Mhj”h²hubj4)�”}”(hhh]”jM)�”}”(hŒinitialize the cpupri structure”h]”hŒinitialize the cpupri structure”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´Mhj\ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj”h²hh³j­h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjw jHjw jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒm**Parameters** ``struct cpupri *cp`` The cpupri context **Return** -ENOMEM on memory allocation failure.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´Mhj{ ubj¤)�”}”(hhh]”j©)�”}”(hŒ)``struct cpupri *cp`` The cpupri context ”h]”(j¯)�”}”(hŒ``struct cpupri *cp``”h]”jS)�”}”(hj  h]”hŒstruct cpupri *cp”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjž ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´Mhjš ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe cpupri context”h]”hŒThe cpupri context”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jµ h´Mhj¶ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjš ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jµ h´Mhj— ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj{ ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÛ h]”hŒReturn”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´Mhj{ ubjM)�”}”(hŒ%-ENOMEM on memory allocation failure.”h]”hŒ%-ENOMEM on memory allocation failure.”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´Mhj{ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒcpupri_cleanup (C function)”Œc.cpupri_cleanup”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'void cpupri_cleanup (struct cpupri *cp)”h]”hù)�”}”(hŒ&void cpupri_cleanup(struct cpupri *cp)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj!h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´M3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!h²hh³j.!h´M3ubhÿ)�”}”(hŒcpupri_cleanup”h]”j)�”}”(hŒcpupri_cleanup”h]”hŒcpupri_cleanup”…”�”}”(hjA!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=!ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj!h²hh³j.!h´M3ubj4)�”}”(hŒ(struct cpupri *cp)”h]”j:)�”}”(hŒstruct cpupri *cp”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj]!h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjY!ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjY!ubh)�”}”(hhh]”j)�”}”(hŒcpupri”h]”hŒcpupri”…”�”}”(hj{!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjx!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j}!Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjC!sbŒc.cpupri_cleanup”†”asbuh1hhjY!ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjY!ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj©!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjY!ubj)�”}”(hŒcp”h]”hŒcp”…”�”}”(hj¶!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjU!ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj!h²hh³j.!h´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj!h²hh³j.!h´M3ubah}”(h]”j!ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j.!h´M3hj!h²hubj4)�”}”(hhh]”jM)�”}”(hŒclean up the cpupri structure”h]”hŒclean up the cpupri structure”…”�”}”(hjà!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´M3hjÝ!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj!h²hh³j.!h´M3ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjø!jHjø!jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒ:**Parameters** ``struct cpupri *cp`` The cpupri context”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´M7hjü!ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``struct cpupri *cp`` The cpupri context”h]”(j¯)�”}”(hŒ``struct cpupri *cp``”h]”jS)�”}”(hj!"h]”hŒstruct cpupri *cp”…”�”}”(hj#"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´M9hj"ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe cpupri context”h]”hŒThe cpupri context”…”�”}”(hj:"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:27: ./kernel/sched/cpupri.c”h´M4hj7"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6"h´M9hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjü!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒupdate_tg_load_avg (C function)”Œc.update_tg_load_avg”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void update_tg_load_avg (struct cfs_rq *cfs_rq)”h]”hù)�”}”(hŒ.void update_tg_load_avg(struct cfs_rq *cfs_rq)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj{"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjw"h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÃubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjw"h²hh³j‰"h´MÃubhÿ)�”}”(hŒupdate_tg_load_avg”h]”j)�”}”(hŒupdate_tg_load_avg”h]”hŒupdate_tg_load_avg”…”�”}”(hjœ"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜"ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjw"h²hh³j‰"h´MÃubj4)�”}”(hŒ(struct cfs_rq *cfs_rq)”h]”j:)�”}”(hŒstruct cfs_rq *cfs_rq”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¸"h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj´"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´"ubh)�”}”(hhh]”j)�”}”(hŒcfs_rq”h]”hŒcfs_rq”…”�”}”(hjÖ"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jØ"Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjž"sbŒc.update_tg_load_avg”†”asbuh1hhj´"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´"ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj´"ubj)�”}”(hŒcfs_rq”h]”hŒcfs_rq”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj°"ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjw"h²hh³j‰"h´MÃubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjs"h²hh³j‰"h´MÃubah}”(h]”jn"ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‰"h´MÃhjp"h²hubj4)�”}”(hhh]”jM)�”}”(hŒupdate the tg's load avg”h]”hŒupdate the tg’s load avg”…”�”}”(hj;#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÃhj8#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjp"h²hh³j‰"h´MÃubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjS#jHjS#jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hXþ**Parameters** ``struct cfs_rq *cfs_rq`` the cfs_rq whose avg changed **Description** This function 'ensures': tg->load_avg := \Sum tg->cfs_rq[]->avg.load. However, because tg->load_avg is a global value there are performance considerations. In order to avoid having to look at the other cfs_rq's, we use a differential update where we store the last value we propagated. This in turn allows skipping updates if the differential is 'small'. Updating tg's load_avg is necessary before update_cfs_group().”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÇhjW#ubj¤)�”}”(hhh]”j©)�”}”(hŒ7``struct cfs_rq *cfs_rq`` the cfs_rq whose avg changed ”h]”(j¯)�”}”(hŒ``struct cfs_rq *cfs_rq``”h]”jS)�”}”(hj|#h]”hŒstruct cfs_rq *cfs_rq”…”�”}”(hj~#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjz#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÄhjv#ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe cfs_rq whose avg changed”h]”hŒthe cfs_rq whose avg changed”…”�”}”(hj•#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‘#h´MÄhj’#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjv#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‘#h´MÄhjs#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjW#ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÆhjW#ubjM)�”}”(hŒ›This function 'ensures': tg->load_avg := \Sum tg->cfs_rq[]->avg.load. However, because tg->load_avg is a global value there are performance considerations.”h]”hŒŸThis function ‘ensures’: tg->load_avg := Sum tg->cfs_rq[]->avg.load. However, because tg->load_avg is a global value there are performance considerations.”…”�”}”(hjÍ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÅhjW#ubjM)�”}”(hŒÆIn order to avoid having to look at the other cfs_rq's, we use a differential update where we store the last value we propagated. This in turn allows skipping updates if the differential is 'small'.”h]”hŒÌIn order to avoid having to look at the other cfs_rq’s, we use a differential update where we store the last value we propagated. This in turn allows skipping updates if the differential is ‘small’.”…”�”}”(hjÜ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÉhjW#ubjM)�”}”(hŒ>Updating tg's load_avg is necessary before update_cfs_group().”h]”hŒ@Updating tg’s load_avg is necessary before update_cfs_group().”…”�”}”(hjë#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÍhjW#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#update_cfs_rq_load_avg (C function)”Œc.update_cfs_rq_load_avg”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;int update_cfs_rq_load_avg (u64 now, struct cfs_rq *cfs_rq)”h]”hù)�”}”(hŒ:int update_cfs_rq_load_avg(u64 now, struct cfs_rq *cfs_rq)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$h²hh³j($h´M›ubhÿ)�”}”(hŒupdate_cfs_rq_load_avg”h]”j)�”}”(hŒupdate_cfs_rq_load_avg”h]”hŒupdate_cfs_rq_load_avg”…”�”}”(hj;$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7$ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj$h²hh³j($h´M›ubj4)�”}”(hŒ (u64 now, struct cfs_rq *cfs_rq)”h]”(j:)�”}”(hŒu64 now”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjZ$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j\$Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj=$sbŒc.update_cfs_rq_load_avg”†”asbuh1hhjS$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjS$ubj)�”}”(hŒnow”h]”hŒnow”…”�”}”(hjˆ$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjS$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjO$ubj:)�”}”(hŒstruct cfs_rq *cfs_rq”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¡$h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�$ubh)�”}”(hhh]”j)�”}”(hŒcfs_rq”h]”hŒcfs_rq”…”�”}”(hj¿$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÁ$Œmodname”NŒ classname”Njwjz)�”}”j}]”jv$Œc.update_cfs_rq_load_avg”†”asbuh1hhj�$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�$ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjë$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�$ubj)�”}”(hŒcfs_rq”h]”hŒcfs_rq”…”�”}”(hjø$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjO$ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj$h²hh³j($h´M›ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj$h²hh³j($h´M›ubah}”(h]”j $ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j($h´M›hj$h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&update the cfs_rq's load/util averages”h]”hŒ(update the cfs_rq’s load/util averages”…”�”}”(hj"%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M›hj%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj$h²hh³j($h´M›ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj:%jHj:%jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hX&**Parameters** ``u64 now`` current time, as per cfs_rq_clock_pelt() ``struct cfs_rq *cfs_rq`` cfs_rq to update **Description** The cfs_rq avg is the direct sum of all its entities (blocked and runnable) avg. The immediate corollary is that all (fair) tasks must be attached. cfs_rq->avg is used for task_h_load() and update_cfs_group() for example. Since both these conditions indicate a changed cfs_rq->avg.load we should call update_tg_load_avg() when this function returns true. **Return** true if the load decayed or we removed load.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjD%h]”hŒ Parameters”…”�”}”(hjF%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjB%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MŸhj>%ubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``u64 now`` current time, as per cfs_rq_clock_pelt() ”h]”(j¯)�”}”(hŒ ``u64 now``”h]”jS)�”}”(hjc%h]”hŒu64 now”…”�”}”(hje%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhja%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mœhj]%ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(current time, as per cfs_rq_clock_pelt()”h]”hŒ(current time, as per cfs_rq_clock_pelt()”…”�”}”(hj|%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jx%h´Mœhjy%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jx%h´MœhjZ%ubj©)�”}”(hŒ+``struct cfs_rq *cfs_rq`` cfs_rq to update ”h]”(j¯)�”}”(hŒ``struct cfs_rq *cfs_rq``”h]”jS)�”}”(hjœ%h]”hŒstruct cfs_rq *cfs_rq”…”�”}”(hjž%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjš%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M�hj–%ubjÉ)�”}”(hhh]”jM)�”}”(hŒcfs_rq to update”h]”hŒcfs_rq to update”…”�”}”(hjµ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j±%h´M�hj²%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj–%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j±%h´M�hjZ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj>%ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MŸhj>%ubjM)�”}”(hŒ“The cfs_rq avg is the direct sum of all its entities (blocked and runnable) avg. The immediate corollary is that all (fair) tasks must be attached.”h]”hŒ“The cfs_rq avg is the direct sum of all its entities (blocked and runnable) avg. The immediate corollary is that all (fair) tasks must be attached.”…”�”}”(hjí%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mžhj>%ubjM)�”}”(hŒIcfs_rq->avg is used for task_h_load() and update_cfs_group() for example.”h]”hŒIcfs_rq->avg is used for task_h_load() and update_cfs_group() for example.”…”�”}”(hjü%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¡hj>%ubjM)�”}”(hŒ„Since both these conditions indicate a changed cfs_rq->avg.load we should call update_tg_load_avg() when this function returns true.”h]”hŒ„Since both these conditions indicate a changed cfs_rq->avg.load we should call update_tg_load_avg() when this function returns true.”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¤hj>%ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj&h]”hŒReturn”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M§hj>%ubjM)�”}”(hŒ,true if the load decayed or we removed load.”h]”hŒ,true if the load decayed or we removed load.”…”�”}”(hj2&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¤hj>%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#attach_entity_load_avg (C function)”Œc.attach_entity_load_avg”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒLvoid attach_entity_load_avg (struct cfs_rq *cfs_rq, struct sched_entity *se)”h]”hù)�”}”(hŒKvoid attach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hja&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj]&h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÖubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj]&h²hh³jo&h´MÖubhÿ)�”}”(hŒattach_entity_load_avg”h]”j)�”}”(hŒattach_entity_load_avg”h]”hŒattach_entity_load_avg”…”�”}”(hj‚&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~&ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj]&h²hh³jo&h´MÖubj4)�”}”(hŒ0(struct cfs_rq *cfs_rq, struct sched_entity *se)”h]”(j:)�”}”(hŒstruct cfs_rq *cfs_rq”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjž&h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjš&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjš&ubh)�”}”(hhh]”j)�”}”(hŒcfs_rq”h]”hŒcfs_rq”…”�”}”(hj¼&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¾&Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj„&sbŒc.attach_entity_load_avg”†”asbuh1hhjš&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjš&ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjê&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjš&ubj)�”}”(hŒcfs_rq”h]”hŒcfs_rq”…”�”}”(hj÷&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjš&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj–&ubj:)�”}”(hŒstruct sched_entity *se”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj 'ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj 'ubh)�”}”(hhh]”j)�”}”(hŒ sched_entity”h]”hŒ sched_entity”…”�”}”(hj.'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j0'Œmodname”NŒ classname”Njwjz)�”}”j}]”jØ&Œc.attach_entity_load_avg”†”asbuh1hhj 'ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj 'ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjZ'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj 'ubj)�”}”(hŒse”h]”hŒse”…”�”}”(hjg'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj 'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj–&ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj]&h²hh³jo&h´MÖubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjY&h²hh³jo&h´MÖubah}”(h]”jT&ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jo&h´MÖhjV&h²hubj4)�”}”(hhh]”jM)�”}”(hŒ)attach this entity to its cfs_rq load avg”h]”hŒ)attach this entity to its cfs_rq load avg”…”�”}”(hj‘'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÖhjŽ'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjV&h²hh³jo&h´MÖubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj©'jHj©'jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒô**Parameters** ``struct cfs_rq *cfs_rq`` cfs_rq to attach to ``struct sched_entity *se`` sched_entity to attach **Description** Must call update_cfs_rq_load_avg() before this, since we rely on cfs_rq->avg.last_update_time being current.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÚhj­'ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``struct cfs_rq *cfs_rq`` cfs_rq to attach to ”h]”(j¯)�”}”(hŒ``struct cfs_rq *cfs_rq``”h]”jS)�”}”(hjÒ'h]”hŒstruct cfs_rq *cfs_rq”…”�”}”(hjÔ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÐ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M×hjÌ'ubjÉ)�”}”(hhh]”jM)�”}”(hŒcfs_rq to attach to”h]”hŒcfs_rq to attach to”…”�”}”(hjë'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ3``struct sched_entity *se`` sched_entity to attach ”h]”(j¯)�”}”(hŒ``struct sched_entity *se``”h]”jS)�”}”(hj (h]”hŒstruct sched_entity *se”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj (ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MØhj(ubjÉ)�”}”(hhh]”jM)�”}”(hŒsched_entity to attach”h]”hŒsched_entity to attach”…”�”}”(hj$(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj­'ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÚhj­'ubjM)�”}”(hŒlMust call update_cfs_rq_load_avg() before this, since we rely on cfs_rq->avg.last_update_time being current.”h]”hŒlMust call update_cfs_rq_load_avg() before this, since we rely on cfs_rq->avg.last_update_time being current.”…”�”}”(hj\(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÙhj­'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#detach_entity_load_avg (C function)”Œc.detach_entity_load_avg”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒLvoid detach_entity_load_avg (struct cfs_rq *cfs_rq, struct sched_entity *se)”h]”hù)�”}”(hŒKvoid detach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‹(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‡(h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš(h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡(h²hh³j™(h´M ubhÿ)�”}”(hŒdetach_entity_load_avg”h]”j)�”}”(hŒdetach_entity_load_avg”h]”hŒdetach_entity_load_avg”…”�”}”(hj¬(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨(ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‡(h²hh³j™(h´M ubj4)�”}”(hŒ0(struct cfs_rq *cfs_rq, struct sched_entity *se)”h]”(j:)�”}”(hŒstruct cfs_rq *cfs_rq”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÈ(h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÄ(ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ(h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÄ(ubh)�”}”(hhh]”j)�”}”(hŒcfs_rq”h]”hŒcfs_rq”…”�”}”(hjæ(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjã(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jè(Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj®(sbŒc.detach_entity_load_avg”†”asbuh1hhjÄ(ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÄ(ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÄ(ubj)�”}”(hŒcfs_rq”h]”hŒcfs_rq”…”�”}”(hj!)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄ(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÀ(ubj:)�”}”(hŒstruct sched_entity *se”h]”(j?)�”}”(hjBh]”h•Œstruct”…”�”}”(hj:)h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj6)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6)ubh)�”}”(hhh]”j)�”}”(hŒ sched_entity”h]”hŒ sched_entity”…”�”}”(hjX)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjU)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jZ)Œmodname”NŒ classname”Njwjz)�”}”j}]”j)Œc.detach_entity_load_avg”†”asbuh1hhj6)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6)ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj„)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj6)ubj)�”}”(hŒse”h]”hŒse”…”�”}”(hj‘)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÀ(ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‡(h²hh³j™(h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjƒ(h²hh³j™(h´M ubah}”(h]”j~(ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j™(h´M hj€(h²hubj4)�”}”(hhh]”jM)�”}”(hŒ+detach this entity from its cfs_rq load avg”h]”hŒ+detach this entity from its cfs_rq load avg”…”�”}”(hj»)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M hj¸)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj€(h²hh³j™(h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÓ)jHjÓ)jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒö**Parameters** ``struct cfs_rq *cfs_rq`` cfs_rq to detach from ``struct sched_entity *se`` sched_entity to detach **Description** Must call update_cfs_rq_load_avg() before this, since we rely on cfs_rq->avg.last_update_time being current.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mhj×)ubj¤)�”}”(hhh]”(j©)�”}”(hŒ0``struct cfs_rq *cfs_rq`` cfs_rq to detach from ”h]”(j¯)�”}”(hŒ``struct cfs_rq *cfs_rq``”h]”jS)�”}”(hjü)h]”hŒstruct cfs_rq *cfs_rq”…”�”}”(hjþ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjú)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mhjö)ubjÉ)�”}”(hhh]”jM)�”}”(hŒcfs_rq to detach from”h]”hŒcfs_rq to detach from”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j*h´Mhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjö)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j*h´Mhjó)ubj©)�”}”(hŒ3``struct sched_entity *se`` sched_entity to detach ”h]”(j¯)�”}”(hŒ``struct sched_entity *se``”h]”jS)�”}”(hj5*h]”hŒstruct sched_entity *se”…”�”}”(hj7*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj3*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mhj/*ubjÉ)�”}”(hhh]”jM)�”}”(hŒsched_entity to detach”h]”hŒsched_entity to detach”…”�”}”(hjN*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJ*h´MhjK*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJ*h´Mhjó)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj×)ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjp*h]”hŒ Description”…”�”}”(hjr*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjn*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mhj×)ubjM)�”}”(hŒlMust call update_cfs_rq_load_avg() before this, since we rely on cfs_rq->avg.last_update_time being current.”h]”hŒlMust call update_cfs_rq_load_avg() before this, since we rely on cfs_rq->avg.last_update_time being current.”…”�”}”(hj†*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mhj×)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒcpu_util (C function)”Œ c.cpu_util”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒOunsigned long cpu_util (int cpu, struct task_struct *p, int dst_cpu, int boost)”h]”hù)�”}”(hŒNunsigned long cpu_util(int cpu, struct task_struct *p, int dst_cpu, int boost)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjµ*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj±*h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MR$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±*h²hh³jÃ*h´MR$ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÒ*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj±*h²hh³jÃ*h´MR$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±*h²hh³jÃ*h´MR$ubhÿ)�”}”(hŒcpu_util”h]”j)�”}”(hŒcpu_util”h]”hŒcpu_util”…”�”}”(hjò*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî*ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj±*h²hh³jÃ*h´MR$ubj4)�”}”(hŒ8(int cpu, struct task_struct *p, int dst_cpu, int boost)”h]”(j:)�”}”(hŒint cpu”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj +ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj +ubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hj*+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj +ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj+ubj:)�”}”(hŒstruct task_struct *p”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjC+h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj?+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?+ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hja+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jc+Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjô*sbŒ c.cpu_util”†”asbuh1hhj?+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?+ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj?+ubj)�”}”(hj h]”hŒp”…”�”}”(hjœ+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj+ubj:)�”}”(hŒ int dst_cpu”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj´+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj°+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°+ubj)�”}”(hŒdst_cpu”h]”hŒdst_cpu”…”�”}”(hjÐ+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj+ubj:)�”}”(hŒ int boost”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjé+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjå+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjå+ubj)�”}”(hŒboost”h]”hŒboost”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjå+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj+ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj±*h²hh³jÃ*h´MR$ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj­*h²hh³jÃ*h´MR$ubah}”(h]”j¨*ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÃ*h´MR$hjª*h²hubj4)�”}”(hhh]”jM)�”}”(hŒ7Estimates the amount of CPU capacity used by CFS tasks.”h]”hŒ7Estimates the amount of CPU capacity used by CFS tasks.”…”�”}”(hj/,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MR$hj,,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjª*h²hh³jÃ*h´MR$ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjG,jHjG,jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hX`**Parameters** ``int cpu`` the CPU to get the utilization for ``struct task_struct *p`` task for which the CPU utilization should be predicted or NULL ``int dst_cpu`` CPU **p** migrates to, -1 if **p** moves from **cpu** or **p** == NULL ``int boost`` 1 to enable boosting, otherwise 0 **Description** The unit of the return value must be the same as the one of CPU capacity so that CPU utilization can be compared with CPU capacity. CPU utilization is the sum of running time of runnable tasks plus the recent utilization of currently non-runnable tasks on that CPU. It represents the amount of CPU capacity currently used by CFS tasks in the range [0..max CPU capacity] with max CPU capacity being the CPU capacity at f_max. The estimated CPU utilization is defined as the maximum between CPU utilization and sum of the estimated utilization of the currently runnable tasks on that CPU. It preserves a utilization "snapshot" of previously-executed tasks, which helps better deduce how busy a CPU will be when a long-sleeping task wakes up. The contribution to CPU utilization of such a task would be significantly decayed at this point of time. Boosted CPU utilization is defined as max(CPU runnable, CPU utilization). CPU contention for CFS tasks can be detected by CPU runnable > CPU utilization. Boosting is implemented in cpu_util() so that internal users (e.g. EAS) can use it next to external users (e.g. schedutil), latter via cpu_util_cfs_boost(). CPU utilization can be higher than the current CPU capacity (f_curr/f_max * max CPU capacity) or even the max CPU capacity because of rounding errors as well as task migrations or wakeups of new tasks. CPU utilization has to be capped to fit into the [0..max CPU capacity] range. Otherwise a group of CPUs (CPU0 util = 121% + CPU1 util = 80%) could be seen as over-utilized even though CPU1 has 20% of spare CPU capacity. CPU utilization is allowed to overshoot current CPU capacity though since this is useful for predicting the CPU capacity required after task migrations (scheduler-driven DVFS). **Return** (Boosted) (estimated) utilization for the specified CPU.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjQ,h]”hŒ Parameters”…”�”}”(hjS,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjO,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MV$hjK,ubj¤)�”}”(hhh]”(j©)�”}”(hŒ/``int cpu`` the CPU to get the utilization for ”h]”(j¯)�”}”(hŒ ``int cpu``”h]”jS)�”}”(hjp,h]”hŒint cpu”…”�”}”(hjr,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjn,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MS$hjj,ubjÉ)�”}”(hhh]”jM)�”}”(hŒ"the CPU to get the utilization for”h]”hŒ"the CPU to get the utilization for”…”�”}”(hj‰,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j…,h´MS$hj†,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…,h´MS$hjg,ubj©)�”}”(hŒY``struct task_struct *p`` task for which the CPU utilization should be predicted or NULL ”h]”(j¯)�”}”(hŒ``struct task_struct *p``”h]”jS)�”}”(hj©,h]”hŒstruct task_struct *p”…”�”}”(hj«,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj§,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MT$hj£,ubjÉ)�”}”(hhh]”jM)�”}”(hŒ>task for which the CPU utilization should be predicted or NULL”h]”hŒ>task for which the CPU utilization should be predicted or NULL”…”�”}”(hjÂ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¾,h´MT$hj¿,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj£,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¾,h´MT$hjg,ubj©)�”}”(hŒW``int dst_cpu`` CPU **p** migrates to, -1 if **p** moves from **cpu** or **p** == NULL ”h]”(j¯)�”}”(hŒ``int dst_cpu``”h]”jS)�”}”(hjâ,h]”hŒ int dst_cpu”…”�”}”(hjä,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjà,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MU$hjÜ,ubjÉ)�”}”(hhh]”jM)�”}”(hŒFCPU **p** migrates to, -1 if **p** moves from **cpu** or **p** == NULL”h]”(hŒCPU ”…”�”}”(hjû,h²hh³Nh´NubjŽ)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjû,ubhŒ migrates to, -1 if ”…”�”}”(hjû,h²hh³Nh´NubjŽ)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjû,ubhŒ moves from ”…”�”}”(hjû,h²hh³Nh´NubjŽ)�”}”(hŒ**cpu**”h]”hŒcpu”…”�”}”(hj'-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjû,ubhŒ or ”…”�”}”(hjû,h²hh³Nh´NubjŽ)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hj9-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjû,ubhŒ == NULL”…”�”}”(hjû,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j÷,h´MU$hjø,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÜ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j÷,h´MU$hjg,ubj©)�”}”(hŒ0``int boost`` 1 to enable boosting, otherwise 0 ”h]”(j¯)�”}”(hŒ ``int boost``”h]”jS)�”}”(hjc-h]”hŒ int boost”…”�”}”(hje-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhja-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MV$hj]-ubjÉ)�”}”(hhh]”jM)�”}”(hŒ!1 to enable boosting, otherwise 0”h]”hŒ!1 to enable boosting, otherwise 0”…”�”}”(hj|-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jx-h´MV$hjy-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jx-h´MV$hjg,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjK,ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MX$hjK,ubjM)�”}”(hŒƒThe unit of the return value must be the same as the one of CPU capacity so that CPU utilization can be compared with CPU capacity.”h]”hŒƒThe unit of the return value must be the same as the one of CPU capacity so that CPU utilization can be compared with CPU capacity.”…”�”}”(hj´-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MW$hjK,ubjM)�”}”(hX$CPU utilization is the sum of running time of runnable tasks plus the recent utilization of currently non-runnable tasks on that CPU. It represents the amount of CPU capacity currently used by CFS tasks in the range [0..max CPU capacity] with max CPU capacity being the CPU capacity at f_max.”h]”hX$CPU utilization is the sum of running time of runnable tasks plus the recent utilization of currently non-runnable tasks on that CPU. It represents the amount of CPU capacity currently used by CFS tasks in the range [0..max CPU capacity] with max CPU capacity being the CPU capacity at f_max.”…”�”}”(hjÃ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MZ$hjK,ubjM)�”}”(hX£The estimated CPU utilization is defined as the maximum between CPU utilization and sum of the estimated utilization of the currently runnable tasks on that CPU. It preserves a utilization "snapshot" of previously-executed tasks, which helps better deduce how busy a CPU will be when a long-sleeping task wakes up. The contribution to CPU utilization of such a task would be significantly decayed at this point of time.”h]”hX§The estimated CPU utilization is defined as the maximum between CPU utilization and sum of the estimated utilization of the currently runnable tasks on that CPU. It preserves a utilization “snapshotâ€� of previously-executed tasks, which helps better deduce how busy a CPU will be when a long-sleeping task wakes up. The contribution to CPU utilization of such a task would be significantly decayed at this point of time.”…”�”}”(hjÒ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M`$hjK,ubjM)�”}”(hX6Boosted CPU utilization is defined as max(CPU runnable, CPU utilization). CPU contention for CFS tasks can be detected by CPU runnable > CPU utilization. Boosting is implemented in cpu_util() so that internal users (e.g. EAS) can use it next to external users (e.g. schedutil), latter via cpu_util_cfs_boost().”h]”hX6Boosted CPU utilization is defined as max(CPU runnable, CPU utilization). CPU contention for CFS tasks can be detected by CPU runnable > CPU utilization. Boosting is implemented in cpu_util() so that internal users (e.g. EAS) can use it next to external users (e.g. schedutil), latter via cpu_util_cfs_boost().”…”�”}”(hjá-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mg$hjK,ubjM)�”}”(hXVCPU utilization can be higher than the current CPU capacity (f_curr/f_max * max CPU capacity) or even the max CPU capacity because of rounding errors as well as task migrations or wakeups of new tasks. CPU utilization has to be capped to fit into the [0..max CPU capacity] range. Otherwise a group of CPUs (CPU0 util = 121% + CPU1 util = 80%) could be seen as over-utilized even though CPU1 has 20% of spare CPU capacity. CPU utilization is allowed to overshoot current CPU capacity though since this is useful for predicting the CPU capacity required after task migrations (scheduler-driven DVFS).”h]”hXVCPU utilization can be higher than the current CPU capacity (f_curr/f_max * max CPU capacity) or even the max CPU capacity because of rounding errors as well as task migrations or wakeups of new tasks. CPU utilization has to be capped to fit into the [0..max CPU capacity] range. Otherwise a group of CPUs (CPU0 util = 121% + CPU1 util = 80%) could be seen as over-utilized even though CPU1 has 20% of spare CPU capacity. CPU utilization is allowed to overshoot current CPU capacity though since this is useful for predicting the CPU capacity required after task migrations (scheduler-driven DVFS).”…”�”}”(hjð-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mm$hjK,ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj.h]”hŒReturn”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mw$hjK,ubjM)�”}”(hŒ8(Boosted) (estimated) utilization for the specified CPU.”h]”hŒ8(Boosted) (estimated) utilization for the specified CPU.”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mx$hjK,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ sched_use_asym_prio (C function)”Œc.sched_use_asym_prio”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;bool sched_use_asym_prio (struct sched_domain *sd, int cpu)”h]”hù)�”}”(hŒ:bool sched_use_asym_prio(struct sched_domain *sd, int cpu)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjF.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjB.h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M´.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjB.h²hh³jS.h´M´.ubhÿ)�”}”(hŒsched_use_asym_prio”h]”j)�”}”(hŒsched_use_asym_prio”h]”hŒsched_use_asym_prio”…”�”}”(hjf.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjb.ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjB.h²hh³jS.h´M´.ubj4)�”}”(hŒ"(struct sched_domain *sd, int cpu)”h]”(j:)�”}”(hŒstruct sched_domain *sd”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‚.h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj~.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~.ubh)�”}”(hhh]”j)�”}”(hŒ sched_domain”h]”hŒ sched_domain”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¢.Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjh.sbŒc.sched_use_asym_prio”†”asbuh1hhj~.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~.ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÎ.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj~.ubj)�”}”(hŒsd”h]”hŒsd”…”�”}”(hjÛ.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjz.ubj:)�”}”(hŒint cpu”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjô.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjð.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjð.ubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjð.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjz.ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjB.h²hh³jS.h´M´.ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj>.h²hh³jS.h´M´.ubah}”(h]”j9.ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jS.h´M´.hj;.h²hubj4)�”}”(hhh]”jM)�”}”(hŒ0Check whether asym_packing priority must be used”h]”hŒ0Check whether asym_packing priority must be used”…”�”}”(hj:/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M´.hj7/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj;.h²hh³jS.h´M´.ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjR/jHjR/jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hX‘**Parameters** ``struct sched_domain *sd`` The scheduling domain of the load balancing ``int cpu`` A CPU **Description** Always use CPU priority when balancing load between SMT siblings. When balancing load between cores, it is not sufficient that **cpu** is idle. Only use CPU priority if the whole core is idle. **Return** True if the priority of **cpu** must be followed. False otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj\/h]”hŒ Parameters”…”�”}”(hj^/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¸.hjV/ubj¤)�”}”(hhh]”(j©)�”}”(hŒH``struct sched_domain *sd`` The scheduling domain of the load balancing ”h]”(j¯)�”}”(hŒ``struct sched_domain *sd``”h]”jS)�”}”(hj{/h]”hŒstruct sched_domain *sd”…”�”}”(hj}/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjy/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mµ.hju/ubjÉ)�”}”(hhh]”jM)�”}”(hŒ+The scheduling domain of the load balancing”h]”hŒ+The scheduling domain of the load balancing”…”�”}”(hj”/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�/h´Mµ.hj‘/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhju/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�/h´Mµ.hjr/ubj©)�”}”(hŒ``int cpu`` A CPU ”h]”(j¯)�”}”(hŒ ``int cpu``”h]”jS)�”}”(hj´/h]”hŒint cpu”…”�”}”(hj¶/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¶.hj®/ubjÉ)�”}”(hhh]”jM)�”}”(hŒA CPU”h]”hŒA CPU”…”�”}”(hjÍ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÉ/h´M¶.hjÊ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj®/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÉ/h´M¶.hjr/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjV/ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¸.hjV/ubjM)�”}”(hŒÀAlways use CPU priority when balancing load between SMT siblings. When balancing load between cores, it is not sufficient that **cpu** is idle. Only use CPU priority if the whole core is idle.”h]”(hŒAlways use CPU priority when balancing load between SMT siblings. When balancing load between cores, it is not sufficient that ”…”�”}”(hj0h²hh³Nh´NubjŽ)�”}”(hŒ**cpu**”h]”hŒcpu”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ubhŒ: is idle. Only use CPU priority if the whole core is idle.”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M·.hjV/ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj(0h]”hŒReturn”…”�”}”(hj*0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M».hjV/ubjM)�”}”(hŒBTrue if the priority of **cpu** must be followed. False otherwise.”h]”(hŒTrue if the priority of ”…”�”}”(hj>0h²hh³Nh´NubjŽ)�”}”(hŒ**cpu**”h]”hŒcpu”…”�”}”(hjF0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>0ubhŒ# must be followed. False otherwise.”…”�”}”(hj>0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¼.hjV/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsched_group_asym (C function)”Œc.sched_group_asym”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ^bool sched_group_asym (struct lb_env *env, struct sg_lb_stats *sgs, struct sched_group *group)”h]”hù)�”}”(hŒ]bool sched_group_asym(struct lb_env *env, struct sg_lb_stats *sgs, struct sched_group *group)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj{0h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÔ.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{0h²hh³jŒ0h´MÔ.ubhÿ)�”}”(hŒsched_group_asym”h]”j)�”}”(hŒsched_group_asym”h]”hŒsched_group_asym”…”�”}”(hjŸ0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›0ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj{0h²hh³jŒ0h´MÔ.ubj4)�”}”(hŒH(struct lb_env *env, struct sg_lb_stats *sgs, struct sched_group *group)”h]”(j:)�”}”(hŒstruct lb_env *env”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj»0h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj·0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·0ubh)�”}”(hhh]”j)�”}”(hŒlb_env”h]”hŒlb_env”…”�”}”(hjÙ0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÛ0Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¡0sbŒc.sched_group_asym”†”asbuh1hhj·0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·0ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj·0ubj)�”}”(hŒenv”h]”hŒenv”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj³0ubj:)�”}”(hŒstruct sg_lb_stats *sgs”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj-1h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj)1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)1ubh)�”}”(hhh]”j)�”}”(hŒ sg_lb_stats”h]”hŒ sg_lb_stats”…”�”}”(hjK1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjH1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jM1Œmodname”NŒ classname”Njwjz)�”}”j}]”jõ0Œc.sched_group_asym”†”asbuh1hhj)1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)1ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjw1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj)1ubj)�”}”(hŒsgs”h]”hŒsgs”…”�”}”(hj„1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj³0ubj:)�”}”(hŒstruct sched_group *group”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™1ubh)�”}”(hhh]”j)�”}”(hŒ sched_group”h]”hŒ sched_group”…”�”}”(hj»1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j½1Œmodname”NŒ classname”Njwjz)�”}”j}]”jõ0Œc.sched_group_asym”†”asbuh1hhj™1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™1ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjç1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj™1ubj)�”}”(hŒgroup”h]”hŒgroup”…”�”}”(hjô1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj³0ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj{0h²hh³jŒ0h´MÔ.ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjw0h²hh³jŒ0h´MÔ.ubah}”(h]”jr0ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŒ0h´MÔ.hjt0h²hubj4)�”}”(hhh]”jM)�”}”(hŒ8Check if the destination CPU can do asym_packing balance”h]”hŒ8Check if the destination CPU can do asym_packing balance”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÔ.hj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjt0h²hh³jŒ0h´MÔ.ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj62jHj62jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hX°**Parameters** ``struct lb_env *env`` The load balancing environment ``struct sg_lb_stats *sgs`` Load-balancing statistics of the candidate busiest group ``struct sched_group *group`` The candidate busiest group **Description** **env**::dst_cpu can do asym_packing if it has higher priority than the preferred CPU of **group**. **Return** true if **env**::dst_cpu can do with asym_packing load balance. False otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj@2h]”hŒ Parameters”…”�”}”(hjB2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MØ.hj:2ubj¤)�”}”(hhh]”(j©)�”}”(hŒ6``struct lb_env *env`` The load balancing environment ”h]”(j¯)�”}”(hŒ``struct lb_env *env``”h]”jS)�”}”(hj_2h]”hŒstruct lb_env *env”…”�”}”(hja2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj]2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÕ.hjY2ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe load balancing environment”h]”hŒThe load balancing environment”…”�”}”(hjx2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jt2h´MÕ.hju2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjY2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jt2h´MÕ.hjV2ubj©)�”}”(hŒU``struct sg_lb_stats *sgs`` Load-balancing statistics of the candidate busiest group ”h]”(j¯)�”}”(hŒ``struct sg_lb_stats *sgs``”h]”jS)�”}”(hj˜2h]”hŒstruct sg_lb_stats *sgs”…”�”}”(hjš2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj–2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÖ.hj’2ubjÉ)�”}”(hhh]”jM)�”}”(hŒ8Load-balancing statistics of the candidate busiest group”h]”hŒ8Load-balancing statistics of the candidate busiest group”…”�”}”(hj±2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j­2h´MÖ.hj®2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj’2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j­2h´MÖ.hjV2ubj©)�”}”(hŒ:``struct sched_group *group`` The candidate busiest group ”h]”(j¯)�”}”(hŒ``struct sched_group *group``”h]”jS)�”}”(hjÑ2h]”hŒstruct sched_group *group”…”�”}”(hjÓ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÏ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M×.hjË2ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe candidate busiest group”h]”hŒThe candidate busiest group”…”�”}”(hjê2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jæ2h´M×.hjç2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjË2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jæ2h´M×.hjV2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj:2ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj 3h]”hŒ Description”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj 3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÙ.hj:2ubjM)�”}”(hŒc**env**::dst_cpu can do asym_packing if it has higher priority than the preferred CPU of **group**.”h]”(jŽ)�”}”(hŒ**env**”h]”hŒenv”…”�”}”(hj&3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"3ubhŒR::dst_cpu can do asym_packing if it has higher priority than the preferred CPU of ”…”�”}”(hj"3h²hh³Nh´NubjŽ)�”}”(hŒ **group**”h]”hŒgroup”…”�”}”(hj83h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"3ubhŒ.”…”�”}”(hj"3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MØ.hj:2ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjS3h]”hŒReturn”…”�”}”(hjU3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÛ.hj:2ubjM)�”}”(hŒPtrue if **env**::dst_cpu can do with asym_packing load balance. False otherwise.”h]”(hŒtrue if ”…”�”}”(hji3h²hh³Nh´NubjŽ)�”}”(hŒ**env**”h]”hŒenv”…”�”}”(hjq3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hji3ubhŒA::dst_cpu can do with asym_packing load balance. False otherwise.”…”�”}”(hji3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÜ.hj:2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒupdate_sg_lb_stats (C function)”Œc.update_sg_lb_stats”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒŽvoid update_sg_lb_stats (struct lb_env *env, struct sd_lb_stats *sds, struct sched_group *group, struct sg_lb_stats *sgs, bool *sg_overloaded)”h]”hù)�”}”(hŒ�void update_sg_lb_stats(struct lb_env *env, struct sd_lb_stats *sds, struct sched_group *group, struct sg_lb_stats *sgs, bool *sg_overloaded)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjª3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¦3h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¸/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¦3h²hh³j¸3h´M¸/ubhÿ)�”}”(hŒupdate_sg_lb_stats”h]”j)�”}”(hŒupdate_sg_lb_stats”h]”hŒupdate_sg_lb_stats”…”�”}”(hjË3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇ3ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¦3h²hh³j¸3h´M¸/ubj4)�”}”(hŒv(struct lb_env *env, struct sd_lb_stats *sds, struct sched_group *group, struct sg_lb_stats *sgs, bool *sg_overloaded)”h]”(j:)�”}”(hŒstruct lb_env *env”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjç3h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjã3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjã3ubh)�”}”(hhh]”j)�”}”(hŒlb_env”h]”hŒlb_env”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j4Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÍ3sbŒc.update_sg_lb_stats”†”asbuh1hhjã3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjã3ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj34h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjã3ubj)�”}”(hŒenv”h]”hŒenv”…”�”}”(hj@4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjã3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjß3ubj:)�”}”(hŒstruct sd_lb_stats *sds”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjY4h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjU4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjU4ubh)�”}”(hhh]”j)�”}”(hŒ sd_lb_stats”h]”hŒ sd_lb_stats”…”�”}”(hjw4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jy4Œmodname”NŒ classname”Njwjz)�”}”j}]”j!4Œc.update_sg_lb_stats”†”asbuh1hhjU4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjU4ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj£4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjU4ubj)�”}”(hŒsds”h]”hŒsds”…”�”}”(hj°4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjU4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjß3ubj:)�”}”(hŒstruct sched_group *group”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÉ4h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÅ4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅ4ubh)�”}”(hhh]”j)�”}”(hŒ sched_group”h]”hŒ sched_group”…”�”}”(hjç4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jé4Œmodname”NŒ classname”Njwjz)�”}”j}]”j!4Œc.update_sg_lb_stats”†”asbuh1hhjÅ4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅ4ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÅ4ubj)�”}”(hŒgroup”h]”hŒgroup”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅ4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjß3ubj:)�”}”(hŒstruct sg_lb_stats *sgs”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj95h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj55ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj55ubh)�”}”(hhh]”j)�”}”(hŒ sg_lb_stats”h]”hŒ sg_lb_stats”…”�”}”(hjW5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjT5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jY5Œmodname”NŒ classname”Njwjz)�”}”j}]”j!4Œc.update_sg_lb_stats”†”asbuh1hhj55ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj55ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjƒ5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj55ubj)�”}”(hŒsgs”h]”hŒsgs”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj55ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjß3ubj:)�”}”(hŒbool *sg_overloaded”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj©5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¥5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¥5ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÄ5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¥5ubj)�”}”(hŒ sg_overloaded”h]”hŒ sg_overloaded”…”�”}”(hjÑ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjß3ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¦3h²hh³j¸3h´M¸/ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¢3h²hh³j¸3h´M¸/ubah}”(h]”j�3ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¸3h´M¸/hjŸ3h²hubj4)�”}”(hhh]”jM)�”}”(hŒ3Update sched_group's statistics for load balancing.”h]”hŒ5Update sched_group’s statistics for load balancing.”…”�”}”(hjû5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¸/hjø5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŸ3h²hh³j¸3h´M¸/ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj6jHj6jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hXt**Parameters** ``struct lb_env *env`` The load balancing environment. ``struct sd_lb_stats *sds`` Load-balancing data with statistics of the local group. ``struct sched_group *group`` sched_group whose statistics are to be updated. ``struct sg_lb_stats *sgs`` variable to hold the statistics for this group. ``bool *sg_overloaded`` sched_group is overloaded”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj6h]”hŒ Parameters”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¼/hj6ubj¤)�”}”(hhh]”(j©)�”}”(hŒ7``struct lb_env *env`` The load balancing environment. ”h]”(j¯)�”}”(hŒ``struct lb_env *env``”h]”jS)�”}”(hj<6h]”hŒstruct lb_env *env”…”�”}”(hj>6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¹/hj66ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe load balancing environment.”h]”hŒThe load balancing environment.”…”�”}”(hjU6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ6h´M¹/hjR6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj66ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQ6h´M¹/hj36ubj©)�”}”(hŒT``struct sd_lb_stats *sds`` Load-balancing data with statistics of the local group. ”h]”(j¯)�”}”(hŒ``struct sd_lb_stats *sds``”h]”jS)�”}”(hju6h]”hŒstruct sd_lb_stats *sds”…”�”}”(hjw6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjs6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´Mº/hjo6ubjÉ)�”}”(hhh]”jM)�”}”(hŒ7Load-balancing data with statistics of the local group.”h]”hŒ7Load-balancing data with statistics of the local group.”…”�”}”(hjŽ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠ6h´Mº/hj‹6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjo6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠ6h´Mº/hj36ubj©)�”}”(hŒN``struct sched_group *group`` sched_group whose statistics are to be updated. ”h]”(j¯)�”}”(hŒ``struct sched_group *group``”h]”jS)�”}”(hj®6h]”hŒstruct sched_group *group”…”�”}”(hj°6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¬6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M»/hj¨6ubjÉ)�”}”(hhh]”jM)�”}”(hŒ/sched_group whose statistics are to be updated.”h]”hŒ/sched_group whose statistics are to be updated.”…”�”}”(hjÇ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÃ6h´M»/hjÄ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¨6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÃ6h´M»/hj36ubj©)�”}”(hŒL``struct sg_lb_stats *sgs`` variable to hold the statistics for this group. ”h]”(j¯)�”}”(hŒ``struct sg_lb_stats *sgs``”h]”jS)�”}”(hjç6h]”hŒstruct sg_lb_stats *sgs”…”�”}”(hjé6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjå6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¼/hjá6ubjÉ)�”}”(hhh]”jM)�”}”(hŒ/variable to hold the statistics for this group.”h]”hŒ/variable to hold the statistics for this group.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jü6h´M¼/hjý6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjá6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jü6h´M¼/hj36ubj©)�”}”(hŒ1``bool *sg_overloaded`` sched_group is overloaded”h]”(j¯)�”}”(hŒ``bool *sg_overloaded``”h]”jS)�”}”(hj 7h]”hŒbool *sg_overloaded”…”�”}”(hj"7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¾/hj7ubjÉ)�”}”(hhh]”jM)�”}”(hŒsched_group is overloaded”h]”hŒsched_group is overloaded”…”�”}”(hj97h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M½/hj67ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j57h´M¾/hj36ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#update_sd_pick_busiest (C function)”Œc.update_sd_pick_busiest”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒzbool update_sd_pick_busiest (struct lb_env *env, struct sd_lb_stats *sds, struct sched_group *sg, struct sg_lb_stats *sgs)”h]”hù)�”}”(hŒybool update_sd_pick_busiest(struct lb_env *env, struct sd_lb_stats *sds, struct sched_group *sg, struct sg_lb_stats *sgs)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjz7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjv7h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M90ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjv7h²hh³j‡7h´M90ubhÿ)�”}”(hŒupdate_sd_pick_busiest”h]”j)�”}”(hŒupdate_sd_pick_busiest”h]”hŒupdate_sd_pick_busiest”…”�”}”(hjš7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–7ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjv7h²hh³j‡7h´M90ubj4)�”}”(hŒ^(struct lb_env *env, struct sd_lb_stats *sds, struct sched_group *sg, struct sg_lb_stats *sgs)”h]”(j:)�”}”(hŒstruct lb_env *env”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¶7h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj²7ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²7ubh)�”}”(hhh]”j)�”}”(hŒlb_env”h]”hŒlb_env”…”�”}”(hjÔ7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑ7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÖ7Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjœ7sbŒc.update_sd_pick_busiest”†”asbuh1hhj²7ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²7ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj²7ubj)�”}”(hŒenv”h]”hŒenv”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®7ubj:)�”}”(hŒstruct sd_lb_stats *sds”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj(8h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj$8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj58h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$8ubh)�”}”(hhh]”j)�”}”(hŒ sd_lb_stats”h]”hŒ sd_lb_stats”…”�”}”(hjF8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjC8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jH8Œmodname”NŒ classname”Njwjz)�”}”j}]”jð7Œc.update_sd_pick_busiest”†”asbuh1hhj$8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$8ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjr8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj$8ubj)�”}”(hŒsds”h]”hŒsds”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®7ubj:)�”}”(hŒstruct sched_group *sg”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj˜8h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj”8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj”8ubh)�”}”(hhh]”j)�”}”(hŒ sched_group”h]”hŒ sched_group”…”�”}”(hj¶8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¸8Œmodname”NŒ classname”Njwjz)�”}”j}]”jð7Œc.update_sd_pick_busiest”†”asbuh1hhj”8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj”8ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjâ8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj”8ubj)�”}”(hŒsg”h]”hŒsg”…”�”}”(hjï8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®7ubj:)�”}”(hŒstruct sg_lb_stats *sgs”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9ubh)�”}”(hhh]”j)�”}”(hŒ sg_lb_stats”h]”hŒ sg_lb_stats”…”�”}”(hj&9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j(9Œmodname”NŒ classname”Njwjz)�”}”j}]”jð7Œc.update_sd_pick_busiest”†”asbuh1hhj9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjR9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj9ubj)�”}”(hŒsgs”h]”hŒsgs”…”�”}”(hj_9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®7ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjv7h²hh³j‡7h´M90ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjr7h²hh³j‡7h´M90ubah}”(h]”jm7ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‡7h´M90hjo7h²hubj4)�”}”(hhh]”jM)�”}”(hŒreturn 1 on busiest group”h]”hŒreturn 1 on busiest group”…”�”}”(hj‰9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M90hj†9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjo7h²hh³j‡7h´M90ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¡9jHj¡9jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hXä**Parameters** ``struct lb_env *env`` The load balancing environment. ``struct sd_lb_stats *sds`` sched_domain statistics ``struct sched_group *sg`` sched_group candidate to be checked for being the busiest ``struct sg_lb_stats *sgs`` sched_group statistics **Description** Determine if **sg** is a busier group than the previously selected busiest group. **Return** ``true`` if **sg** is a busier group than the previously selected busiest group. ``false`` otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj«9h]”hŒ Parameters”…”�”}”(hj­9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj©9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M=0hj¥9ubj¤)�”}”(hhh]”(j©)�”}”(hŒ7``struct lb_env *env`` The load balancing environment. ”h]”(j¯)�”}”(hŒ``struct lb_env *env``”h]”jS)�”}”(hjÊ9h]”hŒstruct lb_env *env”…”�”}”(hjÌ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÈ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M:0hjÄ9ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe load balancing environment.”h]”hŒThe load balancing environment.”…”�”}”(hjã9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jß9h´M:0hjà9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÄ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jß9h´M:0hjÁ9ubj©)�”}”(hŒ4``struct sd_lb_stats *sds`` sched_domain statistics ”h]”(j¯)�”}”(hŒ``struct sd_lb_stats *sds``”h]”jS)�”}”(hj:h]”hŒstruct sd_lb_stats *sds”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M;0hjý9ubjÉ)�”}”(hhh]”jM)�”}”(hŒsched_domain statistics”h]”hŒsched_domain statistics”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j:h´M;0hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjý9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j:h´M;0hjÁ9ubj©)�”}”(hŒU``struct sched_group *sg`` sched_group candidate to be checked for being the busiest ”h]”(j¯)�”}”(hŒ``struct sched_group *sg``”h]”jS)�”}”(hj<:h]”hŒstruct sched_group *sg”…”�”}”(hj>:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj::ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M<0hj6:ubjÉ)�”}”(hhh]”jM)�”}”(hŒ9sched_group candidate to be checked for being the busiest”h]”hŒ9sched_group candidate to be checked for being the busiest”…”�”}”(hjU:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ:h´M<0hjR:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQ:h´M<0hjÁ9ubj©)�”}”(hŒ3``struct sg_lb_stats *sgs`` sched_group statistics ”h]”(j¯)�”}”(hŒ``struct sg_lb_stats *sgs``”h]”jS)�”}”(hju:h]”hŒstruct sg_lb_stats *sgs”…”�”}”(hjw:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjs:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M=0hjo:ubjÉ)�”}”(hhh]”jM)�”}”(hŒsched_group statistics”h]”hŒsched_group statistics”…”�”}”(hjŽ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠ:h´M=0hj‹:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjo:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠ:h´M=0hjÁ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¥9ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M?0hj¥9ubjM)�”}”(hŒQDetermine if **sg** is a busier group than the previously selected busiest group.”h]”(hŒ Determine if ”…”�”}”(hjÆ:h²hh³Nh´NubjŽ)�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hjÎ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆ:ubhŒ> is a busier group than the previously selected busiest group.”…”�”}”(hjÆ:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M>0hj¥9ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjé:h]”hŒReturn”…”�”}”(hjë:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjç:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MA0hj¥9ubjM)�”}”(hŒe``true`` if **sg** is a busier group than the previously selected busiest group. ``false`` otherwise.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÿ:ubhŒ if ”…”�”}”(hjÿ:h²hh³Nh´NubjŽ)�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿ:ubhŒ? is a busier group than the previously selected busiest group. ”…”�”}”(hjÿ:h²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj';h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÿ:ubhŒ otherwise.”…”�”}”(hjÿ:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MB0hj¥9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒidle_cpu_without (C function)”Œc.idle_cpu_without”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int idle_cpu_without (int cpu, struct task_struct *p)”h]”hù)�”}”(hŒ4int idle_cpu_without(int cpu, struct task_struct *p)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj`;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj\;h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M 1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\;h²hh³jn;h´M 1ubhÿ)�”}”(hŒidle_cpu_without”h]”j)�”}”(hŒidle_cpu_without”h]”hŒidle_cpu_without”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj};ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj\;h²hh³jn;h´M 1ubj4)�”}”(hŒ (int cpu, struct task_struct *p)”h]”(j:)�”}”(hŒint cpu”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj™;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™;ubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hj¹;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj•;ubj:)�”}”(hŒstruct task_struct *p”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÒ;h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÎ;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÎ;ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hjð;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjí;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jò;Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjƒ;sbŒc.idle_cpu_without”†”asbuh1hhjÎ;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÎ;ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÎ;ubj)�”}”(hj h]”hŒp”…”�”}”(hj+<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎ;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj•;ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj\;h²hh³jn;h´M 1ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjX;h²hh³jn;h´M 1ubah}”(h]”jS;ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jn;h´M 1hjU;h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%would a given CPU be idle without p ?”h]”hŒ%would a given CPU be idle without p ?”…”�”}”(hjT<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M 1hjQ<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjU;h²hh³jn;h´M 1ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjl<jHjl<jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒ¹**Parameters** ``int cpu`` the processor on which idleness is tested. ``struct task_struct *p`` task which should be ignored. **Return** 1 if the CPU would be idle. 0 otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjv<h]”hŒ Parameters”…”�”}”(hjx<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M1hjp<ubj¤)�”}”(hhh]”(j©)�”}”(hŒ7``int cpu`` the processor on which idleness is tested. ”h]”(j¯)�”}”(hŒ ``int cpu``”h]”jS)�”}”(hj•<h]”hŒint cpu”…”�”}”(hj—<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj“<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M 1hj�<ubjÉ)�”}”(hhh]”jM)�”}”(hŒ*the processor on which idleness is tested.”h]”hŒ*the processor on which idleness is tested.”…”�”}”(hj®<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jª<h´M 1hj«<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jª<h´M 1hjŒ<ubj©)�”}”(hŒ8``struct task_struct *p`` task which should be ignored. ”h]”(j¯)�”}”(hŒ``struct task_struct *p``”h]”jS)�”}”(hjÎ<h]”hŒstruct task_struct *p”…”�”}”(hjÐ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÌ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M1hjÈ<ubjÉ)�”}”(hhh]”jM)�”}”(hŒtask which should be ignored.”h]”hŒtask which should be ignored.”…”�”}”(hjç<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jã<h´M1hjä<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÈ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jã<h´M1hjŒ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjp<ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj =h]”hŒReturn”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M1hjp<ubjM)�”}”(hŒ(1 if the CPU would be idle. 0 otherwise.”h]”hŒ(1 if the CPU would be idle. 0 otherwise.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M1hjp<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒupdate_sd_lb_stats (C function)”Œc.update_sd_lb_stats”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒEvoid update_sd_lb_stats (struct lb_env *env, struct sd_lb_stats *sds)”h]”hù)�”}”(hŒDvoid update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sds)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjN=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjJ=h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M‹2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJ=h²hh³j\=h´M‹2ubhÿ)�”}”(hŒupdate_sd_lb_stats”h]”j)�”}”(hŒupdate_sd_lb_stats”h]”hŒupdate_sd_lb_stats”…”�”}”(hjo=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk=ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjJ=h²hh³j\=h´M‹2ubj4)�”}”(hŒ-(struct lb_env *env, struct sd_lb_stats *sds)”h]”(j:)�”}”(hŒstruct lb_env *env”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‹=h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‡=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡=ubh)�”}”(hhh]”j)�”}”(hŒlb_env”h]”hŒlb_env”…”�”}”(hj©=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j«=Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjq=sbŒc.update_sd_lb_stats”†”asbuh1hhj‡=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡=ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj×=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‡=ubj)�”}”(hŒenv”h]”hŒenv”…”�”}”(hjä=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƒ=ubj:)�”}”(hŒstruct sd_lb_stats *sds”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjý=h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjù=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjù=ubh)�”}”(hhh]”j)�”}”(hŒ sd_lb_stats”h]”hŒ sd_lb_stats”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j>Œmodname”NŒ classname”Njwjz)�”}”j}]”jÅ=Œc.update_sd_lb_stats”†”asbuh1hhjù=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9>h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjù=ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjG>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjù=ubj)�”}”(hŒsds”h]”hŒsds”…”�”}”(hjT>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjù=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƒ=ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjJ=h²hh³j\=h´M‹2ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjF=h²hh³j\=h´M‹2ubah}”(h]”jA=ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j\=h´M‹2•NhjC=h²hubj4)�”}”(hhh]”jM)�”}”(hŒ4Update sched_domain's statistics for load balancing.”h]”hŒ6Update sched_domain’s statistics for load balancing.”…”�”}”(hj~>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M‹2hj{>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjC=h²hh³j\=h´M‹2ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj–>jHj–>jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒž**Parameters** ``struct lb_env *env`` The load balancing environment. ``struct sd_lb_stats *sds`` variable to hold the statistics for this sched_domain.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M�2hjš>ubj¤)�”}”(hhh]”(j©)�”}”(hŒ7``struct lb_env *env`` The load balancing environment. ”h]”(j¯)�”}”(hŒ``struct lb_env *env``”h]”jS)�”}”(hj¿>h]”hŒstruct lb_env *env”…”�”}”(hjÁ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj½>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MŒ2hj¹>ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe load balancing environment.”h]”hŒThe load balancing environment.”…”�”}”(hjØ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÔ>h´MŒ2hjÕ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¹>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÔ>h´MŒ2hj¶>ubj©)�”}”(hŒR``struct sd_lb_stats *sds`` variable to hold the statistics for this sched_domain.”h]”(j¯)�”}”(hŒ``struct sd_lb_stats *sds``”h]”jS)�”}”(hjø>h]”hŒstruct sd_lb_stats *sds”…”�”}”(hjú>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjö>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MŽ2hjò>ubjÉ)�”}”(hhh]”jM)�”}”(hŒ6variable to hold the statistics for this sched_domain.”h]”hŒ6variable to hold the statistics for this sched_domain.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M�2hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjò>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j ?h´MŽ2hj¶>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjš>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ calculate_imbalance (C function)”Œc.calculate_imbalance”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒFvoid calculate_imbalance (struct lb_env *env, struct sd_lb_stats *sds)”h]”hù)�”}”(hŒEvoid calculate_imbalance(struct lb_env *env, struct sd_lb_stats *sds)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjR?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjN?h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÓ2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjN?h²hh³j`?h´MÓ2ubhÿ)�”}”(hŒcalculate_imbalance”h]”j)�”}”(hŒcalculate_imbalance”h]”hŒcalculate_imbalance”…”�”}”(hjs?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjo?ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjN?h²hh³j`?h´MÓ2ubj4)�”}”(hŒ-(struct lb_env *env, struct sd_lb_stats *sds)”h]”(j:)�”}”(hŒstruct lb_env *env”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‹?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‹?ubh)�”}”(hhh]”j)�”}”(hŒlb_env”h]”hŒlb_env”…”�”}”(hj­?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¯?Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsju?sbŒc.calculate_imbalance”†”asbuh1hhj‹?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‹?ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÛ?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‹?ubj)�”}”(hŒenv”h]”hŒenv”…”�”}”(hjè?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‡?ubj:)�”}”(hŒstruct sd_lb_stats *sds”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjý?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjý?ubh)�”}”(hhh]”j)�”}”(hŒ sd_lb_stats”h]”hŒ sd_lb_stats”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j!@Œmodname”NŒ classname”Njwjz)�”}”j}]”jÉ?Œc.calculate_imbalance”†”asbuh1hhjý?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjý?ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjK@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjý?ubj)�”}”(hŒsds”h]”hŒsds”…”�”}”(hjX@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjý?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‡?ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjN?h²hh³j`?h´MÓ2ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjJ?h²hh³j`?h´MÓ2ubah}”(h]”jE?ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j`?h´MÓ2hjG?h²hubj4)�”}”(hhh]”jM)�”}”(hŒhCalculate the amount of imbalance present within the groups of a given sched_domain during load balance.”h]”hŒhCalculate the amount of imbalance present within the groups of a given sched_domain during load balance.”…”�”}”(hj‚@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÓ2hj@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjG?h²hh³j`?h´MÓ2ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjš@jHjš@jI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒ¤**Parameters** ``struct lb_env *env`` load balance environment ``struct sd_lb_stats *sds`` statistics of the sched_domain whose imbalance is to be calculated.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M×2hjž@ubj¤)�”}”(hhh]”(j©)�”}”(hŒ0``struct lb_env *env`` load balance environment ”h]”(j¯)�”}”(hŒ``struct lb_env *env``”h]”jS)�”}”(hjÃ@h]”hŒstruct lb_env *env”…”�”}”(hjÅ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÁ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÕ2hj½@ubjÉ)�”}”(hhh]”jM)�”}”(hŒload balance environment”h]”hŒload balance environment”…”�”}”(hjÜ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jØ@h´MÕ2hjÙ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj½@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jØ@h´MÕ2hjº@ubj©)�”}”(hŒ_``struct sd_lb_stats *sds`` statistics of the sched_domain whose imbalance is to be calculated.”h]”(j¯)�”}”(hŒ``struct sd_lb_stats *sds``”h]”jS)�”}”(hjü@h]”hŒstruct sd_lb_stats *sds”…”�”}”(hjþ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjú@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M×2hjö@ubjÉ)�”}”(hhh]”jM)�”}”(hŒCstatistics of the sched_domain whose imbalance is to be calculated.”h]”hŒCstatistics of the sched_domain whose imbalance is to be calculated.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´MÖ2hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjö@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jAh´M×2hjº@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjž@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)sched_balance_find_src_group (C function)”Œc.sched_balance_find_src_group”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒFstruct sched_group * sched_balance_find_src_group (struct lb_env *env)”h]”hù)�”}”(hŒDstruct sched_group *sched_balance_find_src_group(struct lb_env *env)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjVAh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjRAh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¢3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdAh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRAh²hh³jcAh´M¢3ubh)�”}”(hhh]”j)�”}”(hŒ sched_group”h]”hŒ sched_group”…”�”}”(hjuAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jwAŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒsched_balance_find_src_group”sbŒc.sched_balance_find_src_group”†”asbuh1hhjRAh²hh³jcAh´M¢3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Ah²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRAh²hh³jcAh´M¢3ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¤Ah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRAh²hh³jcAh´M¢3ubhÿ)�”}”(hŒsched_balance_find_src_group”h]”j)�”}”(hj“Ah]”hŒsched_balance_find_src_group”…”�”}”(hjµAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±Aubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjRAh²hh³jcAh´M¢3ubj4)�”}”(hŒ(struct lb_env *env)”h]”j:)�”}”(hŒstruct lb_env *env”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÐAh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÌAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝAh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÌAubh)�”}”(hhh]”j)�”}”(hŒlb_env”h]”hŒlb_env”…”�”}”(hjîAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jðAŒmodname”NŒ classname”Njwjz)�”}”j}]”j‘AŒc.sched_balance_find_src_group”†”asbuh1hhjÌAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÌAubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÌAubj)�”}”(hŒenv”h]”hŒenv”…”�”}”(hj'Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÈAubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjRAh²hh³jcAh´M¢3ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjNAh²hh³jcAh´M¢3ubah}”(h]”jIAah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jcAh´M¢3hjKAh²hubj4)�”}”(hhh]”jM)�”}”(hŒKReturns the busiest group within the sched_domain if there is an imbalance.”h]”hŒKReturns the busiest group within the sched_domain if there is an imbalance.”…”�”}”(hjQBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¢3hjNBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjKAh²hh³jcAh´M¢3ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjiBjHjiBjI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒæ**Parameters** ``struct lb_env *env`` The load balancing environment. **Description** Also calculates the amount of runnable load which should be moved to restore balance. **Return** - The busiest group if imbalance exists.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjsBh]”hŒ Parameters”…”�”}”(hjuBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqBubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¦3hjmBubj¤)�”}”(hhh]”j©)�”}”(hŒ7``struct lb_env *env`` The load balancing environment. ”h]”(j¯)�”}”(hŒ``struct lb_env *env``”h]”jS)�”}”(hj’Bh]”hŒstruct lb_env *env”…”�”}”(hj”Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¤3hjŒBubjÉ)�”}”(hhh]”jM)�”}”(hŒThe load balancing environment.”h]”hŒThe load balancing environment.”…”�”}”(hj«Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j§Bh´M¤3hj¨Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŒBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j§Bh´M¤3hj‰Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjmBubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÍBh]”hŒ Description”…”�”}”(hjÏBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËBubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¦3hjmBubjM)�”}”(hŒUAlso calculates the amount of runnable load which should be moved to restore balance.”h]”hŒUAlso calculates the amount of runnable load which should be moved to restore balance.”…”�”}”(hjãBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¥3hjmBubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjôBh]”hŒReturn”…”�”}”(hjöBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòBubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M¨3hjmBubhŒ bullet_list”“”)�”}”(hhh]”j„)�”}”(hŒ&The busiest group if imbalance exists.”h]”jM)�”}”(hjCh]”hŒ&The busiest group if imbalance exists.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:30: ./kernel/sched/fair.c”h´M©3hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj Cubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j Ch³j Ch´M©3hjmBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDECLARE_COMPLETION (C macro)”Œc.DECLARE_COMPLETION”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDECLARE_COMPLETION”h]”hù)�”}”(hŒDECLARE_COMPLETION”h]”hÿ)�”}”(hŒDECLARE_COMPLETION”h]”j)�”}”(hjICh]”hŒDECLARE_COMPLETION”…”�”}”(hjSCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOCubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjKCh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K-ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjGCh²hh³jfCh´K-ubah}”(h]”jBCah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jfCh´K-hjDCh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjDCh²hh³jfCh´K-ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjCjHjCjI‰jJ‰jK‰uh1híh²hhj‰h³Nh´NubjM)�”}”(hŒ``DECLARE_COMPLETION (work)``”h]”jS)�”}”(hj…Ch]”hŒDECLARE_COMPLETION (work)”…”�”}”(hj‡Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒCubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K/hj‰h²hubji)�”}”(hŒ.declare and initialize a completion structure ”h]”jM)�”}”(hŒ-declare and initialize a completion structure”h]”hŒ-declare and initialize a completion structure”…”�”}”(hjŸCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K-hj›Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j­Ch´K-hj‰h²hubj„)�”}”(hŒõ**Parameters** ``work`` identifier for the completion structure **Description** This macro declares and initializes a completion structure. Generally used for static declarations. You should use the _ONSTACK variant for automatic variables.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjºCh]”hŒ Parameters”…”�”}”(hj¼Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K1hj´Cubj¤)�”}”(hhh]”j©)�”}”(hŒ1``work`` identifier for the completion structure ”h]”(j¯)�”}”(hŒ``work``”h]”jS)�”}”(hjÙCh]”hŒwork”…”�”}”(hjÛCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj×Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K.hjÓCubjÉ)�”}”(hhh]”jM)�”}”(hŒ'identifier for the completion structure”h]”hŒ'identifier for the completion structure”…”�”}”(hjòCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jîCh´K.hjïCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÓCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jîCh´K.hjÐCubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj´CubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjDh]”hŒ Description”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K0hj´CubjM)�”}”(hŒ This macro declares and initializes a completion structure. Generally used for static declarations. You should use the _ONSTACK variant for automatic variables.”h]”hŒ This macro declares and initializes a completion structure. Generally used for static declarations. You should use the _ONSTACK variant for automatic variables.”…”�”}”(hj*Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K/hj´Cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$DECLARE_COMPLETION_ONSTACK (C macro)”Œc.DECLARE_COMPLETION_ONSTACK”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDECLARE_COMPLETION_ONSTACK”h]”hù)�”}”(hŒDECLARE_COMPLETION_ONSTACK”h]”hÿ)�”}”(hŒDECLARE_COMPLETION_ONSTACK”h]”j)�”}”(hjSDh]”hŒDECLARE_COMPLETION_ONSTACK”…”�”}”(hj]Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYDubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjUDh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K=ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjQDh²hh³jpDh´K=ubah}”(h]”jLDah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jpDh´K=hjNDh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjNDh²hh³jpDh´K=ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj‰DjHj‰DjI‰jJ‰jK‰uh1híh²hhj‰h³Nh´NubjM)�”}”(hŒ%``DECLARE_COMPLETION_ONSTACK (work)``”h]”jS)�”}”(hj�Dh]”hŒ!DECLARE_COMPLETION_ONSTACK (work)”…”�”}”(hj‘Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K?hj‰h²hubji)�”}”(hŒ.declare and initialize a completion structure ”h]”jM)�”}”(hŒ-declare and initialize a completion structure”h]”hŒ-declare and initialize a completion structure”…”�”}”(hj©Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K=hj¥Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j·Dh´K=hj‰h²hubj„)�”}”(hŒ¤**Parameters** ``work`` identifier for the completion structure **Description** This macro declares and initializes a completion structure on the kernel stack.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÄDh]”hŒ Parameters”…”�”}”(hjÆDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´KAhj¾Dubj¤)�”}”(hhh]”j©)�”}”(hŒ1``work`` identifier for the completion structure ”h]”(j¯)�”}”(hŒ``work``”h]”jS)�”}”(hjãDh]”hŒwork”…”�”}”(hjåDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjáDubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K>hjÝDubjÉ)�”}”(hhh]”jM)�”}”(hŒ'identifier for the completion structure”h]”hŒ'identifier for the completion structure”…”�”}”(hjüDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jøDh´K>hjùDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÝDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jøDh´K>hjÚDubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¾DubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjEh]”hŒ Description”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K@hj¾DubjM)�”}”(hŒOThis macro declares and initializes a completion structure on the kernel stack.”h]”hŒOThis macro declares and initializes a completion structure on the kernel stack.”…”�”}”(hj4Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K?hj¾Dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒinit_completion (C function)”Œc.init_completion”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void init_completion (struct completion *x)”h]”hù)�”}”(hŒ*void init_completion(struct completion *x)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjcEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj_Eh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´KNubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrEh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj_Eh²hh³jqEh´KNubhÿ)�”}”(hŒinit_completion”h]”j)�”}”(hŒinit_completion”h]”hŒinit_completion”…”�”}”(hj„Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Eubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj_Eh²hh³jqEh´KNubj4)�”}”(hŒ(struct completion *x)”h]”j:)�”}”(hŒstruct completion *x”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjœEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœEubh)�”}”(hhh]”j)�”}”(hŒ completion”h]”hŒ completion”…”�”}”(hj¾Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÀEŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj†EsbŒc.init_completion”†”asbuh1hhjœEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞEh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœEubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjìEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjœEubj)�”}”(hŒx”h]”hŒx”…”�”}”(hjùEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj˜Eubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj_Eh²hh³jqEh´KNubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj[Eh²hh³jqEh´KNubah}”(h]”jVEah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jqEh´KNhjXEh²hubj4)�”}”(hhh]”jM)�”}”(hŒ-Initialize a dynamically allocated completion”h]”hŒ-Initialize a dynamically allocated completion”…”�”}”(hj#Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´KNhj Fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjXEh²hh³jqEh´KNubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj;FjHj;FjI‰jJ‰jK‰uh1híh²hhj‰h³Nh´Nubj„)�”}”(hŒÇ**Parameters** ``struct completion *x`` pointer to completion structure that is to be initialized **Description** This inline function will initialize a dynamically created completion structure.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjEFh]”hŒ Parameters”…”�”}”(hjGFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCFubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´KRhj?Fubj¤)�”}”(hhh]”j©)�”}”(hŒS``struct completion *x`` pointer to completion structure that is to be initialized ”h]”(j¯)�”}”(hŒ``struct completion *x``”h]”jS)�”}”(hjdFh]”hŒstruct completion *x”…”�”}”(hjfFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbFubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´KOhj^FubjÉ)�”}”(hhh]”jM)�”}”(hŒ9pointer to completion structure that is to be initialized”h]”hŒ9pointer to completion structure that is to be initialized”…”�”}”(hj}Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jyFh´KOhjzFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jyFh´KOhj[Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj?FubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjŸFh]”hŒ Description”…”�”}”(hj¡Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´KQhj?FubjM)�”}”(hŒPThis inline function will initialize a dynamically created completion structure.”h]”hŒPThis inline function will initialize a dynamically created completion structure.”…”�”}”(hjµFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´KPhj?Fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒreinit_completion (C function)”Œc.reinit_completion”hNt”auh1hÜhj‰h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-void reinit_completion (struct completion *x)”h]”hù)�”}”(hŒ,void reinit_completion(struct completion *x)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjäFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjàFh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/basics:33: ./include/linux/completion.h”h´K[ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàFh²hh³jòFh´K[ubhÿ)�”}”(hŒreinit_completion”h]”j)�”}”(hŒreinit_completion”h]”hŒreinit_completion”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjàFh²hh³jòFh´K[ubj4)�”}”(hŒ(struct completion *x)”h]”j:)�”}”(hŒstruct completion *x”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj!Gh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjGubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Gh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGubh)�”}”(hhh]”j)�”}”(hŒ completion”h]”hŒ completion”…”�”}”(hj?Gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=0" to only test the sign of the result. A good compiler would generate better code (and a really good compiler wouldn't care). Gcc is currently neither. **Return** ``true`` is time a is after time b, otherwise ``false``.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjLJh]”hŒ Parameters”…”�”}”(hjNJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJJubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KuhjFJubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``a`` first comparable as unsigned long ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hjkJh]”hŒa”…”�”}”(hjmJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjiJubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KrhjeJubjÉ)�”}”(hhh]”jM)�”}”(hŒ!first comparable as unsigned long”h]”hŒ!first comparable as unsigned long”…”�”}”(hj„Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€Jh´Krhj�Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjeJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€Jh´KrhjbJubj©)�”}”(hŒ)``b`` second comparable as unsigned long ”h]”(j¯)�”}”(hŒ``b``”h]”jS)�”}”(hj¤Jh]”hŒb”…”�”}”(hj¦Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¢Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KshjžJubjÉ)�”}”(hhh]”jM)�”}”(hŒ"second comparable as unsigned long”h]”hŒ"second comparable as unsigned long”…”�”}”(hj½Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¹Jh´KshjºJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjžJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¹Jh´KshjbJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjFJubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjßJh]”hŒ Description”…”�”}”(hjáJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝJubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KuhjFJubjM)�”}”(hŒ±Do this with "<0" and ">=0" to only test the sign of the result. A good compiler would generate better code (and a really good compiler wouldn't care). Gcc is currently neither.”h]”hŒ»Do this with “<0â€� and “>=0â€� to only test the sign of the result. A good compiler would generate better code (and a really good compiler wouldn’t care). Gcc is currently neither.”…”�”}”(hjõJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KthjFJubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjKh]”hŒReturn”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KxhjFJubjM)�”}”(hŒ8``true`` is time a is after time b, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKubhŒ& is time a is after time b, otherwise ”…”�”}”(hjKh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj2Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKubhŒ.”…”�”}”(hjKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KyhjFJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtime_before (C macro)”Œ c.time_before”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ time_before”h]”hù)�”}”(hŒ time_before”h]”hÿ)�”}”(hŒ time_before”h]”j)�”}”(hjeKh]”hŒ time_before”…”�”}”(hjoKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkKubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjgKh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K€ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjcKh²hh³j‚Kh´K€ubah}”(h]”j^Kah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‚Kh´K€hj`Kh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj`Kh²hh³j‚Kh´K€ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj›KjHj›KjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ``time_before (a, b)``”h]”jS)�”}”(hj¡Kh]”hŒtime_before (a, b)”…”�”}”(hj£Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸKubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K‚hjSHh²hubji)�”}”(hŒ-returns true if the time a is before time b. ”h]”jM)�”}”(hŒ,returns true if the time a is before time b.”h]”hŒ,returns true if the time a is before time b.”…”�”}”(hj»Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K€hj·Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jÉKh´K€hjSHh²hubj„)�”}”(hŒ¬**Parameters** ``a`` first comparable as unsigned long ``b`` second comparable as unsigned long **Return** ``true`` is time a is before time b, otherwise ``false``.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÖKh]”hŒ Parameters”…”�”}”(hjØKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔKubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K„hjÐKubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``a`` first comparable as unsigned long ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hjõKh]”hŒa”…”�”}”(hj÷Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjóKubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K�hjïKubjÉ)�”}”(hhh]”jM)�”}”(hŒ!first comparable as unsigned long”h]”hŒ!first comparable as unsigned long”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j Lh´K�hj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjïKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j Lh´K�hjìKubj©)�”}”(hŒ)``b`` second comparable as unsigned long ”h]”(j¯)�”}”(hŒ``b``”h]”jS)�”}”(hj.Lh]”hŒb”…”�”}”(hj0Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj,Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K‚hj(LubjÉ)�”}”(hhh]”jM)�”}”(hŒ"second comparable as unsigned long”h]”hŒ"second comparable as unsigned long”…”�”}”(hjGLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jCLh´K‚hjDLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj(Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jCLh´K‚hjìKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÐKubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjiLh]”hŒReturn”…”�”}”(hjkLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgLubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K„hjÐKubjM)�”}”(hŒ9``true`` is time a is before time b, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjƒLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjLubhŒ' is time a is before time b, otherwise ”…”�”}”(hjLh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj•Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjLubhŒ.”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K„hjÐKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtime_after_eq (C macro)”Œc.time_after_eq”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ time_after_eq”h]”hù)�”}”(hŒ time_after_eq”h]”hÿ)�”}”(hŒ time_after_eq”h]”j)�”}”(hjÈLh]”hŒ time_after_eq”…”�”}”(hjÒLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎLubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÊLh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K‰ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÆLh²hh³jåLh´K‰ubah}”(h]”jÁLah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jåLh´K‰hjÃLh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÃLh²hh³jåLh´K‰ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjþLjHjþLjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ``time_after_eq (a, b)``”h]”jS)�”}”(hjMh]”hŒtime_after_eq (a, b)”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K‹hjSHh²hubji)�”}”(hŒ;returns true if the time a is after or the same as time b. ”h]”jM)�”}”(hŒ:returns true if the time a is after or the same as time b.”h]”hŒ:returns true if the time a is after or the same as time b.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K‰hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j,Mh´K‰hjSHh²hubj„)�”}”(hŒº**Parameters** ``a`` first comparable as unsigned long ``b`` second comparable as unsigned long **Return** ``true`` is time a is after or the same as time b, otherwise ``false``.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj9Mh]”hŒ Parameters”…”�”}”(hj;Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K�hj3Mubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``a`` first comparable as unsigned long ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hjXMh]”hŒa”…”�”}”(hjZMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjVMubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KŠhjRMubjÉ)�”}”(hhh]”jM)�”}”(hŒ!first comparable as unsigned long”h]”hŒ!first comparable as unsigned long”…”�”}”(hjqMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmMh´KŠhjnMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmMh´KŠhjOMubj©)�”}”(hŒ)``b`` second comparable as unsigned long ”h]”(j¯)�”}”(hŒ``b``”h]”jS)�”}”(hj‘Mh]”hŒb”…”�”}”(hj“Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K‹hj‹MubjÉ)�”}”(hhh]”jM)�”}”(hŒ"second comparable as unsigned long”h]”hŒ"second comparable as unsigned long”…”�”}”(hjªMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¦Mh´K‹hj§Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‹Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¦Mh´K‹hjOMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj3MubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÌMh]”hŒReturn”…”�”}”(hjÎMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊMubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K�hj3MubjM)�”}”(hŒG``true`` is time a is after or the same as time b, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjæMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjâMubhŒ5 is time a is after or the same as time b, otherwise ”…”�”}”(hjâMh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjøMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjâMubhŒ.”…”�”}”(hjâMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K�hj3Mubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtime_before_eq (C macro)”Œc.time_before_eq”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒtime_before_eq”h]”hù)�”}”(hŒtime_before_eq”h]”hÿ)�”}”(hŒtime_before_eq”h]”j)�”}”(hj+Nh]”hŒtime_before_eq”…”�”}”(hj5Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1Nubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj-Nh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K”ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj)Nh²hh³jHNh´K”ubah}”(h]”j$Nah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jHNh´K”hj&Nh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj&Nh²hh³jHNh´K”ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjaNjHjaNjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ``time_before_eq (a, b)``”h]”jS)�”}”(hjgNh]”hŒtime_before_eq (a, b)”…”�”}”(hjiNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjeNubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K–hjSHh²hubji)�”}”(hŒVh´KÓhjSHh²hubj„)�”}”(hX**Parameters** ``a`` first comparable as __u64 ``b`` second comparable as __u64 **Description** This must be used when utilizing jiffies_64 (i.e. return value of get_jiffies_64()). **Return** ``true`` is time a is after or the same as time b, otherwise ``false``.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjKVh]”hŒ Parameters”…”�”}”(hjMVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIVubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K×hjEVubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``a`` first comparable as __u64 ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hjjVh]”hŒa”…”�”}”(hjlVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjhVubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KÔhjdVubjÉ)�”}”(hhh]”jM)�”}”(hŒfirst comparable as __u64”h]”hŒfirst comparable as __u64”…”�”}”(hjƒVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jVh´KÔhj€Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjdVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jVh´KÔhjaVubj©)�”}”(hŒ!``b`` second comparable as __u64 ”h]”(j¯)�”}”(hŒ``b``”h]”jS)�”}”(hj£Vh]”hŒb”…”�”}”(hj¥Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¡Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KÕhj�VubjÉ)�”}”(hhh]”jM)�”}”(hŒsecond comparable as __u64”h]”hŒsecond comparable as __u64”…”�”}”(hj¼Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¸Vh´KÕhj¹Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¸Vh´KÕhjaVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjEVubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÞVh]”hŒ Description”…”�”}”(hjàVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜVubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´K×hjEVubjM)�”}”(hŒTThis must be used when utilizing jiffies_64 (i.e. return value of get_jiffies_64()).”h]”hŒTThis must be used when utilizing jiffies_64 (i.e. return value of get_jiffies_64()).”…”�”}”(hjôVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KÖhjEVubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjWh]”hŒReturn”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KÙhjEVubjM)�”}”(hŒG``true`` is time a is after or the same as time b, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjWubhŒ5 is time a is after or the same as time b, otherwise ”…”�”}”(hjWh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj1Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjWubhŒ.”…”�”}”(hjWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KÚhjEVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtime_before_eq64 (C macro)”Œc.time_before_eq64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒtime_before_eq64”h]”hù)�”}”(hŒtime_before_eq64”h]”hÿ)�”}”(hŒtime_before_eq64”h]”j)�”}”(hjdWh]”hŒtime_before_eq64”…”�”}”(hjnWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjjWubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjfWh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Káubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjbWh²hh³j�Wh´Káubah}”(h]”j]Wah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�Wh´Káhj_Wh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj_Wh²hh³j�Wh´Káubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjšWjHjšWjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ``time_before_eq64 (a, b)``”h]”jS)�”}”(hj Wh]”hŒtime_before_eq64 (a, b)”…”�”}”(hj¢Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjžWubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´KãhjSHh²hubji)�”}”(hŒ\ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%time (__u64) to compare to jiffies_64”h]”hŒ%time (__u64) to compare to jiffies_64”…”�”}”(hj]\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jY\h´MhjZ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj>\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jY\h´Mhj;\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj\ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj\h]”hŒReturn”…”�”}”(hj�\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhj\ubjM)�”}”(hŒ=``true`` is time a is before jiffies_64, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj™\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj•\ubhŒ+ is time a is before jiffies_64, otherwise ”…”�”}”(hj•\h²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj«\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj•\ubhŒ.”…”�”}”(hj•\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhj\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtime_is_after_jiffies (C macro)”Œc.time_is_after_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒtime_is_after_jiffies”h]”hù)�”}”(hŒtime_is_after_jiffies”h]”hÿ)�”}”(hŒtime_is_after_jiffies”h]”j)�”}”(hjÞ\h]”hŒtime_is_after_jiffies”…”�”}”(hjè\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä\ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjà\h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÜ\h²hh³jû\h´M ubah}”(h]”j×\ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jû\h´M hjÙ\h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÙ\h²hh³jû\h´M ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj]jHj]jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ``time_is_after_jiffies (a)``”h]”jS)�”}”(hj]h]”hŒtime_is_after_jiffies (a)”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjSHh²hubji)�”}”(hŒ"return true if a is after jiffies ”h]”jM)�”}”(hŒ!return true if a is after jiffies”h]”hŒ!return true if a is after jiffies”…”�”}”(hj4]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M hj0]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jB]h´M hjSHh²hubj„)�”}”(hŒ‰**Parameters** ``a`` time (unsigned long) to compare to jiffies **Return** ``true`` is time a is after jiffies, otherwise ``false``.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjO]h]”hŒ Parameters”…”�”}”(hjQ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjI]ubj¤)�”}”(hhh]”j©)�”}”(hŒ1``a`` time (unsigned long) to compare to jiffies ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hjn]h]”hŒa”…”�”}”(hjp]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjl]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M hjh]ubjÉ)�”}”(hhh]”jM)�”}”(hŒ*time (unsigned long) to compare to jiffies”h]”hŒ*time (unsigned long) to compare to jiffies”…”�”}”(hj‡]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jƒ]h´M hj„]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjh]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jƒ]h´M hje]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjI]ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj©]h]”hŒReturn”…”�”}”(hj«]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjI]ubjM)�”}”(hŒ9``true`` is time a is after jiffies, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÃ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¿]ubhŒ' is time a is after jiffies, otherwise ”…”�”}”(hj¿]h²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjÕ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¿]ubhŒ.”…”�”}”(hj¿]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjI]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!time_is_after_jiffies64 (C macro)”Œc.time_is_after_jiffies64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒtime_is_after_jiffies64”h]”hù)�”}”(hŒtime_is_after_jiffies64”h]”hÿ)�”}”(hŒtime_is_after_jiffies64”h]”j)�”}”(hj^h]”hŒtime_is_after_jiffies64”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj ^h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj^h²hh³j%^h´Mubah}”(h]”j^ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j%^h´Mhj^h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj^h²hh³j%^h´Mubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj>^jHj>^jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ``time_is_after_jiffies64 (a)``”h]”jS)�”}”(hjD^h]”hŒtime_is_after_jiffies64 (a)”…”�”}”(hjF^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjB^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjSHh²hubji)�”}”(hŒ%return true if a is after jiffies_64 ”h]”jM)�”}”(hŒ$return true if a is after jiffies_64”h]”hŒ$return true if a is after jiffies_64”…”�”}”(hj^^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjZ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jl^h´MhjSHh²hubj„)�”}”(hŒ‡**Parameters** ``a`` time (__u64) to compare to jiffies_64 **Return** ``true`` is time a is after jiffies_64, otherwise ``false``.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjy^h]”hŒ Parameters”…”�”}”(hj{^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhjs^ubj¤)�”}”(hhh]”j©)�”}”(hŒ,``a`` time (__u64) to compare to jiffies_64 ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hj˜^h]”hŒa”…”�”}”(hjš^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj–^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhj’^ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%time (__u64) to compare to jiffies_64”h]”hŒ%time (__u64) to compare to jiffies_64”…”�”}”(hj±^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j­^h´Mhj®^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj’^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j­^h´Mhj�^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjs^ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÓ^h]”hŒReturn”…”�”}”(hjÕ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhjs^ubjM)�”}”(hŒ<``true`` is time a is after jiffies_64, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjí^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjé^ubhŒ* is time a is after jiffies_64, otherwise ”…”�”}”(hjé^h²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjÿ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjé^ubhŒ.”…”�”}”(hjé^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhjs^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#time_is_before_eq_jiffies (C macro)”Œc.time_is_before_eq_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒtime_is_before_eq_jiffies”h]”hù)�”}”(hŒtime_is_before_eq_jiffies”h]”hÿ)�”}”(hŒtime_is_before_eq_jiffies”h]”j)�”}”(hj2_h]”hŒtime_is_before_eq_jiffies”…”�”}”(hj<_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8_ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj4_h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj0_h²hh³jO_h´Mubah}”(h]”j+_ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jO_h´Mhj-_h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj-_h²hh³jO_h´Mubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjh_jHjh_jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ!``time_is_before_eq_jiffies (a)``”h]”jS)�”}”(hjn_h]”hŒtime_is_before_eq_jiffies (a)”…”�”}”(hjp_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjl_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjSHh²hubji)�”}”(hŒ/return true if a is before or equal to jiffies ”h]”jM)�”}”(hŒ.return true if a is before or equal to jiffies”h]”hŒ.return true if a is before or equal to jiffies”…”�”}”(hjˆ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhj„_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j–_h´MhjSHh²hubj„)�”}”(hŒ™**Parameters** ``a`` time (unsigned long) to compare to jiffies **Return** ``true`` is time a is before or the same as jiffies, otherwise ``false``.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhj�_ubj¤)�”}”(hhh]”j©)�”}”(hŒ1``a`` time (unsigned long) to compare to jiffies ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hjÂ_h]”hŒa”…”�”}”(hjÄ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÀ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhj¼_ubjÉ)�”}”(hhh]”jM)�”}”(hŒ*time (unsigned long) to compare to jiffies”h]”hŒ*time (unsigned long) to compare to jiffies”…”�”}”(hjÛ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j×_h´MhjØ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¼_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j×_h´Mhj¹_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�_ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjý_h]”hŒReturn”…”�”}”(hjÿ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjû_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhj�_ubjM)�”}”(hŒI``true`` is time a is before or the same as jiffies, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj`ubhŒ7 is time a is before or the same as jiffies, otherwise ”…”�”}”(hj`h²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj)`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj`ubhŒ.”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhj�_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%time_is_before_eq_jiffies64 (C macro)”Œc.time_is_before_eq_jiffies64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒtime_is_before_eq_jiffies64”h]”hù)�”}”(hŒtime_is_before_eq_jiffies64”h]”hÿ)�”}”(hŒtime_is_before_eq_jiffies64”h]”j)�”}”(hj\`h]”hŒtime_is_before_eq_jiffies64”…”�”}”(hjf`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjb`ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj^`h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M"ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjZ`h²hh³jy`h´M"ubah}”(h]”jU`ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jy`h´M"hjW`h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjW`h²hh³jy`h´M"ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj’`jHj’`jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ#``time_is_before_eq_jiffies64 (a)``”h]”jS)�”}”(hj˜`h]”hŒtime_is_before_eq_jiffies64 (a)”…”�”}”(hjš`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj–`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M$hjSHh²hubji)�”}”(hŒ2return true if a is before or equal to jiffies_64 ”h]”jM)�”}”(hŒ1return true if a is before or equal to jiffies_64”h]”hŒ1return true if a is before or equal to jiffies_64”…”�”}”(hj²`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M"hj®`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jÀ`h´M"hjSHh²hubj„)�”}”(hŒ”**Parameters** ``a`` time (__u64) to compare to jiffies_64 **Return** ``true`` is time a is before or the same jiffies_64, otherwise ``false``.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M&hjÇ`ubj¤)�”}”(hhh]”j©)�”}”(hŒ,``a`` time (__u64) to compare to jiffies_64 ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hjì`h]”hŒa”…”�”}”(hjî`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjê`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M#hjæ`ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%time (__u64) to compare to jiffies_64”h]”hŒ%time (__u64) to compare to jiffies_64”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jah´M#hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjæ`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jah´M#hjã`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÇ`ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj'ah]”hŒReturn”…”�”}”(hj)ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M%hjÇ`ubjM)�”}”(hŒI``true`` is time a is before or the same jiffies_64, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjAah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=aubhŒ7 is time a is before or the same jiffies_64, otherwise ”…”�”}”(hj=ah²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjSah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=aubhŒ.”…”�”}”(hj=ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M%hjÇ`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"time_is_after_eq_jiffies (C macro)”Œc.time_is_after_eq_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒtime_is_after_eq_jiffies”h]”hù)�”}”(hŒtime_is_after_eq_jiffies”h]”hÿ)�”}”(hŒtime_is_after_eq_jiffies”h]”j)�”}”(hj†ah]”hŒtime_is_after_eq_jiffies”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒaubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjˆah²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M*ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj„ah²hh³j£ah´M*ubah}”(h]”jaah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j£ah´M*hj�ah²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�ah²hh³j£ah´M*ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj¼ajHj¼ajI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ ``time_is_after_eq_jiffies (a)``”h]”jS)�”}”(hjÂah]”hŒtime_is_after_eq_jiffies (a)”…”�”}”(hjÄah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÀaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M,hjSHh²hubji)�”}”(hŒ.return true if a is after or equal to jiffies ”h]”jM)�”}”(hŒ-return true if a is after or equal to jiffies”h]”hŒ-return true if a is after or equal to jiffies”…”�”}”(hjÜah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M*hjØaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jêah´M*hjSHh²hubj„)�”}”(hŒ˜**Parameters** ``a`` time (unsigned long) to compare to jiffies **Return** ``true`` is time a is after or the same as jiffies, otherwise ``false``.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj÷ah]”hŒ Parameters”…”�”}”(hjùah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M.hjñaubj¤)�”}”(hhh]”j©)�”}”(hŒ1``a`` time (unsigned long) to compare to jiffies ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hjbh]”hŒa”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M+hjbubjÉ)�”}”(hhh]”jM)�”}”(hŒ*time (unsigned long) to compare to jiffies”h]”hŒ*time (unsigned long) to compare to jiffies”…”�”}”(hj/bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j+bh´M+hj,bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j+bh´M+hj bubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjñaubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjQbh]”hŒReturn”…”�”}”(hjSbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjObubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M-hjñaubjM)�”}”(hŒH``true`` is time a is after or the same as jiffies, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjkbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgbubhŒ6 is time a is after or the same as jiffies, otherwise ”…”�”}”(hjgbh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj}bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgbubhŒ.”…”�”}”(hjgbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M-hjñaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$time_is_after_eq_jiffies64 (C macro)”Œc.time_is_after_eq_jiffies64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒtime_is_after_eq_jiffies64”h]”hù)�”}”(hŒtime_is_after_eq_jiffies64”h]”hÿ)�”}”(hŒtime_is_after_eq_jiffies64”h]”j)�”}”(hj°bh]”hŒtime_is_after_eq_jiffies64”…”�”}”(hjºbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶bubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj²bh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M1ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj®bh²hh³jÍbh´M1ubah}”(h]”j©bah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÍbh´M1hj«bh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj«bh²hh³jÍbh´M1ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjæbjHjæbjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ"``time_is_after_eq_jiffies64 (a)``”h]”jS)�”}”(hjìbh]”hŒtime_is_after_eq_jiffies64 (a)”…”�”}”(hjîbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjêbubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M3hjSHh²hubji)�”}”(hŒ1return true if a is after or equal to jiffies_64 ”h]”jM)�”}”(hŒ0return true if a is after or equal to jiffies_64”h]”hŒ0return true if a is after or equal to jiffies_64”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M1hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jch´M1hjSHh²hubj„)�”}”(hŒ–**Parameters** ``a`` time (__u64) to compare to jiffies_64 **Return** ``true`` is time a is after or the same as jiffies_64, otherwise ``false``.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj!ch]”hŒ Parameters”…”�”}”(hj#ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M5hjcubj¤)�”}”(hhh]”j©)�”}”(hŒ,``a`` time (__u64) to compare to jiffies_64 ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hj@ch]”hŒa”…”�”}”(hjBch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj>cubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M2hj:cubjÉ)�”}”(hhh]”jM)�”}”(hŒ%time (__u64) to compare to jiffies_64”h]”hŒ%time (__u64) to compare to jiffies_64”…”�”}”(hjYch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jUch´M2hjVcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jUch´M2hj7cubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjcubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj{ch]”hŒReturn”…”�”}”(hj}ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjycubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M4hjcubjM)�”}”(hŒK``true`` is time a is after or the same as jiffies_64, otherwise ``false``.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj•ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘cubhŒ9 is time a is after or the same as jiffies_64, otherwise ”…”�”}”(hj‘ch²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj§ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘cubhŒ.”…”�”}”(hj‘ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M4hjcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒjiffies_to_msecs (C function)”Œc.jiffies_to_msecs”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5unsigned int jiffies_to_msecs (const unsigned long j)”h]”hù)�”}”(hŒ4unsigned int jiffies_to_msecs(const unsigned long j)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjàch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÜch²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜch²hh³jîch´M´ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjých²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÜch²hh³jîch´M´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜch²hh³jîch´M´ubhÿ)�”}”(hŒjiffies_to_msecs”h]”j)�”}”(hŒjiffies_to_msecs”h]”hŒjiffies_to_msecs”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÜch²hh³jîch´M´ubj4)�”}”(hŒ(const unsigned long j)”h]”j:)�”}”(hŒconst unsigned long j”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj9dh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj5dubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5dubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjTdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj5dubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5dubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjpdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj5dubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5dubj)�”}”(hŒj”h]”hŒj”…”�”}”(hjŒdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj1dubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÜch²hh³jîch´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjØch²hh³jîch´M´ubah}”(h]”jÓcah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jîch´M´hjÕch²hubj4)�”}”(hhh]”jM)�”}”(hŒConvert jiffies to milliseconds”h]”hŒConvert jiffies to milliseconds”…”�”}”(hj¶dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M´hj³dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÕch²hh³jîch´M´ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÎdjHjÎdjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒ£**Parameters** ``const unsigned long j`` jiffies value **Description** This inline version takes care of HZ in {100,250,1000}. **Return** milliseconds value”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjØdh]”hŒ Parameters”…”�”}”(hjÚdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖdubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M¸hjÒdubj¤)�”}”(hhh]”j©)�”}”(hŒ(``const unsigned long j`` jiffies value ”h]”(j¯)�”}”(hŒ``const unsigned long j``”h]”jS)�”}”(hj÷dh]”hŒconst unsigned long j”…”�”}”(hjùdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjõdubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MµhjñdubjÉ)�”}”(hhh]”jM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j eh´Mµhj eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjñdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j eh´Mµhjîdubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÒdubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj2eh]”hŒ Description”…”�”}”(hj4eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0eubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M·hjÒdubjM)�”}”(hŒ7This inline version takes care of HZ in {100,250,1000}.”h]”hŒ7This inline version takes care of HZ in {100,250,1000}.”…”�”}”(hjHeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M¶hjÒdubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjYeh]”hŒReturn”…”�”}”(hj[eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M¸hjÒdubjM)�”}”(hŒmilliseconds value”h]”hŒmilliseconds value”…”�”}”(hjoeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M¹hjÒdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒjiffies_to_usecs (C function)”Œc.jiffies_to_usecs”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5unsigned int jiffies_to_usecs (const unsigned long j)”h]”hù)�”}”(hŒ4unsigned int jiffies_to_usecs(const unsigned long j)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjžeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjšeh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MÅubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjšeh²hh³j¬eh´MÅubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj»eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjšeh²hh³j¬eh´MÅubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉeh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjšeh²hh³j¬eh´MÅubhÿ)�”}”(hŒjiffies_to_usecs”h]”j)�”}”(hŒjiffies_to_usecs”h]”hŒjiffies_to_usecs”…”�”}”(hjÛeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×eubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjšeh²hh³j¬eh´MÅubj4)�”}”(hŒ(const unsigned long j)”h]”j:)�”}”(hŒconst unsigned long j”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj÷eh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjóeubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjóeubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjóeubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjóeubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj.fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjóeubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhj‚gubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“gh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚gubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¡gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‚gubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯gh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚gubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj½gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‚gubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËgh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚gubj)�”}”(hjŽdh]”hŒj”…”�”}”(hjÙgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj~gubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj0gh²hh³jXgh´MÙubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,gh²hh³jXgh´MÙubah}”(h]”j'gah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jXgh´MÙhj)gh²hubj4)�”}”(hhh]”jM)�”}”(hŒConvert jiffies to nanoseconds”h]”hŒConvert jiffies to nanoseconds”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MÙhjÿgh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj)gh²hh³jXgh´MÙubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjhjHjhjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒX**Parameters** ``const unsigned long j`` jiffies value **Return** nanoseconds value”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj$hh]”hŒ Parameters”…”�”}”(hj&hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"hubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MÝhjhubj¤)�”}”(hhh]”j©)�”}”(hŒ(``const unsigned long j`` jiffies value ”h]”(j¯)�”}”(hŒ``const unsigned long j``”h]”jS)�”}”(hjChh]”hŒconst unsigned long j”…”�”}”(hjEhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAhubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MÚhj=hubjÉ)�”}”(hhh]”jM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hj\hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jXhh´MÚhjYhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jXhh´MÚhj:hubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjhubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj~hh]”hŒReturn”…”�”}”(hj€hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj|hubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MÜhjhubjM)�”}”(hŒnanoseconds value”h]”hŒnanoseconds value”…”�”}”(hj”hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MÜhjhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒmsecs_to_jiffies (C function)”Œc.msecs_to_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5unsigned long msecs_to_jiffies (const unsigned int m)”•h]”hù)�”}”(hŒ4unsigned long msecs_to_jiffies(const unsigned int m)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÃhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¿hh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿hh²hh³jÑhh´M ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjàhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¿hh²hh³jÑhh´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿hh²hh³jÑhh´M ubhÿ)�”}”(hŒmsecs_to_jiffies”h]”j)�”}”(hŒmsecs_to_jiffies”h]”hŒmsecs_to_jiffies”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjühubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¿hh²hh³jÑhh´M ubj4)�”}”(hŒ(const unsigned int m)”h]”j:)�”}”(hŒconst unsigned int m”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjiubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjiubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj7ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjiubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjiubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjSih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjiubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjiubj)�”}”(hŒm”h]”hŒm”…”�”}”(hjoih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjiubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¿hh²hh³jÑhh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj»hh²hh³jÑhh´M ubah}”(h]”j¶hah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÑhh´M hj¸hh²hubj4)�”}”(hhh]”j C)�”}”(hhh]”j„)�”}”(hŒconvert milliseconds to jiffies”h]”jM)�”}”(hjžih]”hŒconvert milliseconds to jiffies”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M hjœiubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj™ih²hh³j­ih´Nubah}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³j­ih´M hj–ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¸hh²hh³jÑhh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÃijHjÃijI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX¹**Parameters** ``const unsigned int m`` time in milliseconds **Description** conversion is done as follows: - negative values mean 'infinite timeout' (MAX_JIFFY_OFFSET) - 'too large' values [that would result in larger than MAX_JIFFY_OFFSET values] mean 'infinite timeout' too. - all other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows. for the details see _msecs_to_jiffies() msecs_to_jiffies() checks for the passed in value being a constant via __builtin_constant_p() allowing gcc to eliminate most of the code. __msecs_to_jiffies() is called if the value passed does not allow constant folding and the actual conversion must be done at runtime. The HZ range specific helpers _msecs_to_jiffies() are called both directly here and from __msecs_to_jiffies() in the case where constant folding is not possible. **Return** jiffies value”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÍih]”hŒ Parameters”…”�”}”(hjÏih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËiubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjÇiubj¤)�”}”(hhh]”j©)�”}”(hŒ.``const unsigned int m`` time in milliseconds ”h]”(j¯)�”}”(hŒ``const unsigned int m``”h]”jS)�”}”(hjìih]”hŒconst unsigned int m”…”�”}”(hjîih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjêiubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M hjæiubjÉ)�”}”(hhh]”jM)�”}”(hŒtime in milliseconds”h]”hŒtime in milliseconds”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jjh´M hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjæiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jjh´M hjãiubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÇiubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj'jh]”hŒ Description”…”�”}”(hj)jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%jubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjÇiubjM)�”}”(hŒconversion is done as follows:”h]”hŒconversion is done as follows:”…”�”}”(hj=jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjÇiubj C)�”}”(hhh]”(j„)�”}”(hŒ;negative values mean 'infinite timeout' (MAX_JIFFY_OFFSET) ”h]”jM)�”}”(hŒ:negative values mean 'infinite timeout' (MAX_JIFFY_OFFSET)”h]”hŒ>negative values mean ‘infinite timeout’ (MAX_JIFFY_OFFSET)”…”�”}”(hjSjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjOjubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjLjubj„)�”}”(hŒk'too large' values [that would result in larger than MAX_JIFFY_OFFSET values] mean 'infinite timeout' too. ”h]”jM)�”}”(hŒj'too large' values [that would result in larger than MAX_JIFFY_OFFSET values] mean 'infinite timeout' too.”h]”hŒr‘too large’ values [that would result in larger than MAX_JIFFY_OFFSET values] mean ‘infinite timeout’ too.”…”�”}”(hjljh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhjhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjLjubj„)�”}”(hŒÄall other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows. for the details see _msecs_to_jiffies() ”h]”jM)�”}”(hŒÃall other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows. for the details see _msecs_to_jiffies()”h]”hŒÃall other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows. for the details see _msecs_to_jiffies()”…”�”}”(hj…jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´Mhj�jubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjLjubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³jajh´MhjÇiubjM)�”}”(hX±msecs_to_jiffies() checks for the passed in value being a constant via __builtin_constant_p() allowing gcc to eliminate most of the code. __msecs_to_jiffies() is called if the value passed does not allow constant folding and the actual conversion must be done at runtime. The HZ range specific helpers _msecs_to_jiffies() are called both directly here and from __msecs_to_jiffies() in the case where constant folding is not possible.”h]”hX±msecs_to_jiffies() checks for the passed in value being a constant via __builtin_constant_p() allowing gcc to eliminate most of the code. __msecs_to_jiffies() is called if the value passed does not allow constant folding and the actual conversion must be done at runtime. The HZ range specific helpers _msecs_to_jiffies() are called both directly here and from __msecs_to_jiffies() in the case where constant folding is not possible.”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MhjÇiubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj±jh]”hŒReturn”…”�”}”(hj³jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¯jubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M#hjÇiubjM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hjÇjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M$hjÇiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsecs_to_jiffies (C macro)”Œc.secs_to_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒsecs_to_jiffies”h]”hù)�”}”(hŒsecs_to_jiffies”h]”hÿ)�”}”(hŒsecs_to_jiffies”h]”j)�”}”(hjðjh]”hŒsecs_to_jiffies”…”�”}”(hjújh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjòjh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M2ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjîjh²hh³j kh´M2ubah}”(h]”jéjah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j kh´M2hjëjh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjëjh²hh³j kh´M2ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj&kjHj&kjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´NubjM)�”}”(hŒ``secs_to_jiffies (_secs)``”h]”jS)�”}”(hj,kh]”hŒsecs_to_jiffies (_secs)”…”�”}”(hj.kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj*kubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M4hjSHh²hubji)�”}”(hŒ- convert seconds to jiffies ”h]”j C)�”}”(hhh]”j„)�”}”(hŒconvert seconds to jiffies ”h]”jM)�”}”(hŒconvert seconds to jiffies”h]”hŒconvert seconds to jiffies”…”�”}”(hjMkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M2hjIkubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjFkubah}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³j[kh´M2hjBkubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j[kh´M2hjSHh²hubj„)�”}”(hX**Parameters** ``_secs`` time in seconds **Description** Conversion is done by simple multiplication with HZ secs_to_jiffies() is defined as a macro rather than a static inline function so it can be used in static initializers. **Return** jiffies value”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjtkh]”hŒ Parameters”…”�”}”(hjvkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrkubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M6hjnkubj¤)�”}”(hhh]”j©)�”}”(hŒ``_secs`` time in seconds ”h]”(j¯)�”}”(hŒ ``_secs``”h]”jS)�”}”(hj“kh]”hŒ_secs”…”�”}”(hj•kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘kubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M3hj�kubjÉ)�”}”(hhh]”jM)�”}”(hŒtime in seconds”h]”hŒtime in seconds”…”�”}”(hj¬kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¨kh´M3hj©kubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¨kh´M3hjŠkubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjnkubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÎkh]”hŒ Description”…”�”}”(hjÐkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌkubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M5hjnkubjM)�”}”(hŒ3Conversion is done by simple multiplication with HZ”h]”hŒ3Conversion is done by simple multiplication with HZ”…”�”}”(hjäkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M4hjnkubjM)�”}”(hŒvsecs_to_jiffies() is defined as a macro rather than a static inline function so it can be used in static initializers.”h]”hŒvsecs_to_jiffies() is defined as a macro rather than a static inline function so it can be used in static initializers.”…”�”}”(hjókh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M6hjnkubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjlh]”hŒReturn”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M9hjnkubjM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´M:hjnkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒusecs_to_jiffies (C function)”Œc.usecs_to_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5unsigned long usecs_to_jiffies (const unsigned int u)”h]”hù)�”}”(hŒ4unsigned long usecs_to_jiffies(const unsigned int u)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjIlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjElh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXlh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjElh²hh³jWlh´MMubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjflh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjElh²hh³jWlh´MMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtlh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjElh²hh³jWlh´MMubhÿ)�”}”(hŒusecs_to_jiffies”h]”j)�”}”(hŒusecs_to_jiffies”h]”hŒusecs_to_jiffies”…”�”}”(hj†lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚lubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjElh²hh³jWlh´MMubj4)�”}”(hŒ(const unsigned int u)”h]”j:)�”}”(hŒconst unsigned int u”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj¢lh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjžlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯lh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjžlubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj½lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjžlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËlh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjžlubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÙlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjžlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçlh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjžlubj)�”}”(hŒu”h]”hŒu”…”�”}”(hjõlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjšlubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjElh²hh³jWlh´MMubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjAlh²hh³jWlh´MMubah}”(h]”jlh²hubj4)�”}”(hhh]”j C)�”}”(hhh]”j„)�”}”(hŒconvert microseconds to jiffies”h]”jM)�”}”(hj$mh]”hŒconvert microseconds to jiffies”…”�”}”(hj&mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MMhj"mubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjmh²hh³j3mh´Nubah}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³j3mh´MMhjmh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj>lh²hh³jWlh´MMubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjImjHjImjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXi**Parameters** ``const unsigned int u`` time in microseconds **Description** conversion is done as follows: - 'too large' values [that would result in larger than MAX_JIFFY_OFFSET values] mean 'infinite timeout' too. - all other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows as for msecs_to_jiffies. usecs_to_jiffies() checks for the passed in value being a constant via __builtin_constant_p() allowing gcc to eliminate most of the code. __usecs_to_jiffies() is called if the value passed does not allow constant folding and the actual conversion must be done at runtime. The HZ range specific helpers _usecs_to_jiffies() are called both directly here and from __msecs_to_jiffies() in the case where constant folding is not possible. **Return** jiffies value”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjSmh]”hŒ Parameters”…”�”}”(hjUmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQmubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MQhjMmubj¤)�”}”(hhh]”j©)�”}”(hŒ.``const unsigned int u`` time in microseconds ”h]”(j¯)�”}”(hŒ``const unsigned int u``”h]”jS)�”}”(hjrmh]”hŒconst unsigned int u”…”�”}”(hjtmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjpmubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MNhjlmubjÉ)�”}”(hhh]”jM)�”}”(hŒtime in microseconds”h]”hŒtime in microseconds”…”�”}”(hj‹mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‡mh´MNhjˆmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjlmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‡mh´MNhjimubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjMmubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj­mh]”hŒ Description”…”�”}”(hj¯mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«mubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MPhjMmubjM)�”}”(hŒconversion is done as follows:”h]”hŒconversion is done as follows:”…”�”}”(hjÃmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MOhjMmubj C)�”}”(hhh]”(j„)�”}”(hŒk'too large' values [that would result in larger than MAX_JIFFY_OFFSET values] mean 'infinite timeout' too. ”h]”jM)�”}”(hŒj'too large' values [that would result in larger than MAX_JIFFY_OFFSET values] mean 'infinite timeout' too.”h]”hŒr‘too large’ values [that would result in larger than MAX_JIFFY_OFFSET values] mean ‘infinite timeout’ too.”…”�”}”(hjÙmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MQhjÕmubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjÒmubj„)�”}”(hŒ´all other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows as for msecs_to_jiffies. ”h]”jM)�”}”(hŒ³all other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows as for msecs_to_jiffies.”h]”hŒ³all other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows as for msecs_to_jiffies.”…”�”}”(hjòmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MThjîmubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjÒmubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³jçmh´MQhjMmubjM)�”}”(hX±usecs_to_jiffies() checks for the passed in value being a constant via __builtin_constant_p() allowing gcc to eliminate most of the code. __usecs_to_jiffies() is called if the value passed does not allow constant folding and the actual conversion must be done at runtime. The HZ range specific helpers _usecs_to_jiffies() are called both directly here and from __msecs_to_jiffies() in the case where constant folding is not possible.”h]”hX±usecs_to_jiffies() checks for the passed in value being a constant via __builtin_constant_p() allowing gcc to eliminate most of the code. __usecs_to_jiffies() is called if the value passed does not allow constant folding and the actual conversion must be done at runtime. The HZ range specific helpers _usecs_to_jiffies() are called both directly here and from __msecs_to_jiffies() in the case where constant folding is not possible.”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MXhjMmubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjnh]”hŒReturn”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MahjMmubjM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hj4nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:39: ./include/linux/jiffies.h”h´MbhjMmubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒjiffies_to_msecs (C function)”Œc.jiffies_to_msecs”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5unsigned int jiffies_to_msecs (const unsigned long j)”h]”hù)�”}”(hŒ4unsigned int jiffies_to_msecs(const unsigned long j)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjcnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj_nh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MƒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrnh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj_nh²hh³jqnh´Mƒubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj€nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj_nh²hh³jqnh´MƒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽnh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj_nh²hh³jqnh´Mƒubhÿ)�”}”(hŒjiffies_to_msecs”h]”j)�”}”(hŒjiffies_to_msecs”h]”hŒjiffies_to_msecs”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœnubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj_nh²hh³jqnh´Mƒubj4)�”}”(hŒ(const unsigned long j)”h]”j:)�”}”(hŒconst unsigned long j”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj¼nh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¸nubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉnh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸nubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj×nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¸nubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjånh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸nubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjónh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¸nubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸nubj)�”}”(hjŽdh]”hŒj”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj´nubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj_nh²hh³jqnh´Mƒubeh}”(h]”h ]”h"]”h$]”h&]”jjj%‰uh1høj&j'hj[nh²hh³jqnh´Mƒubah}”(h]”h ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jqnh´MƒhjXnh²hubj4)�”}”(hhh]”jM)�”}”(hŒConvert jiffies to milliseconds”h]”hŒConvert jiffies to milliseconds”…”�”}”(hj8oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mƒhj5oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjXnh²hh³jqnh´Mƒubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjPojHjPojI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒY**Parameters** ``const unsigned long j`` jiffies value **Return** milliseconds value”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjZoh]”hŒ Parameters”…”�”}”(hj\oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXoubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M‡hjToubj¤)�”}”(hhh]”j©)�”}”(hŒ(``const unsigned long j`` jiffies value ”h]”(j¯)�”}”(hŒ``const unsigned long j``”h]”jS)�”}”(hjyoh]”hŒconst unsigned long j”…”�”}”(hj{oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjwoubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M„hjsoubjÉ)�”}”(hhh]”jM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hj’oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŽoh´M„hj�oubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjsoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŽoh´M„hjpoubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjToubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj´oh]”hŒReturn”…”�”}”(hj¶oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj²oubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M†hjToubjM)�”}”(hŒmilliseconds value”h]”hŒmilliseconds value”…”�”}”(hjÊoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M†hjToubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒjiffies_to_usecs (C function)”Œc.jiffies_to_usecs”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5unsigned int jiffies_to_usecs (const unsigned long j)”h]”hù)�”}”(hŒ4unsigned int jiffies_to_usecs(const unsigned long j)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjùoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjõoh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MšubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjõoh²hh³jph´Mšubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjõoh²hh³jph´MšubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$ph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjõoh²hh³jph´Mšubhÿ)�”}”(hŒjiffies_to_usecs”h]”j)�”}”(hŒjiffies_to_usecs”h]”hŒjiffies_to_usecs”…”�”}”(hj6ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2pubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjõoh²hh³jph´Mšubj4)�”}”(hŒ(const unsigned long j)”h]”j:)�”}”(hŒconst unsigned long j”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjRph²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjNpubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_ph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjNpubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjmph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjNpubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{ph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjNpubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj‰ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjNpubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjNpubj)�”}”(hjŽdh]”hŒj”…”�”}”(hj¥ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjJpubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjõoh²hh³jph´Mšubeh}”(h]”h ]”h"]”h$]”h&]”jjj%‰uh1høj&j'hjñoh²hh³jph´Mšubah}”(h]”h ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jph´Mšhjîoh²hubj4)�”}”(hhh]”jM)�”}”(hŒConvert jiffies to microseconds”h]”hŒConvert jiffies to microseconds”…”�”}”(hjÎph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MšhjËph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjîoh²hh³jph´Mšubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjæpjHjæpjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒY**Parameters** ``const unsigned long j`` jiffies value **Return** microseconds value”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjðph]”hŒ Parameters”…”�”}”(hjòph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîpubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mžhjêpubj¤)�”}”(hhh]”j©)�”}”(hŒ(``const unsigned long j`` jiffies value ”h]”(j¯)�”}”(hŒ``const unsigned long j``”h]”jS)�”}”(hjqh]”hŒconst unsigned long j”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj qubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M›hj qubjÉ)�”}”(hhh]”jM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hj(qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j$qh´M›hj%qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j$qh´M›hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjêpubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjJqh]”hŒReturn”…”�”}”(hjLqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHqubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M�hjêpubjM)�”}”(hŒmicroseconds value”h]”hŒmicroseconds value”…”�”}”(hj`qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M�hjêpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒmktime64 (C function)”Œ c.mktime64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ¦time64_t mktime64 (const unsigned int year0, const unsigned int mon0, const unsigned int day, const unsigned int hour, const unsigned int min, const unsigned int sec)”h]”hù)�”}”(hŒ¥time64_t mktime64(const unsigned int year0, const unsigned int mon0, const unsigned int day, const unsigned int hour, const unsigned int min, const unsigned int sec)”h]”(h)�”}”(hhh]”j)�”}”(hŒtime64_t”h]”hŒtime64_t”…”�”}”(hj’qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j”qŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒmktime64”sbŒ c.mktime64”†”asbuh1hhj‹qh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´qh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‹qh²hh³j³qh´M±ubhÿ)�”}”(hŒmktime64”h]”j)�”}”(hj°qh]”hŒmktime64”…”�”}”(hjÆqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂqubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‹qh²hh³j³qh´M±ubj4)�”}”(hŒ”(const unsigned int year0, const unsigned int mon0, const unsigned int day, const unsigned int hour, const unsigned int min, const unsigned int sec)”h]”(j:)�”}”(hŒconst unsigned int year0”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjáqh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÝqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîqh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝqubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjüqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÝqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝqubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÝqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&rh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝqubj)�”}”(hŒyear0”h]”hŒyear0”…”�”}”(hj4rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙqubj:)�”}”(hŒconst unsigned int mon0”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjMrh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjIrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZrh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjIrubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjhrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjIrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvrh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjIrubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj„rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjIrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’rh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjIrubj)�”}”(hŒmon0”h]”hŒmon0”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙqubj:)�”}”(hŒconst unsigned int day”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj¹rh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjµrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆrh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµrubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÔrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjârh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµrubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjðrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþrh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµrubj)�”}”(hŒday”h]”hŒday”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙqubj:)�”}”(hŒconst unsigned int hour”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj%sh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj!subjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2sh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!subjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj@sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj!subjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNsh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!subjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj\sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj!subjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjsh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!subj)�”}”(hŒhour”h]”hŒhour”…”�”}”(hjxsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙqubj:)�”}”(hŒconst unsigned int min”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj‘sh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�subjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžsh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�subjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¬sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�subjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºsh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�subjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÈsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�subjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖsh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�subj)�”}”(hŒmin”h]”hŒmin”…”�”}”(hjäsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙqubj:)�”}”(hŒconst unsigned int sec”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjýsh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjùsubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùsubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjùsubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùsubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj4th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjùsubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùsubj)�”}”(hŒsec”h]”hŒsec”…”�”}”(hjPth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙqubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‹qh²hh³j³qh´M±ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‡qh²hh³j³qh´M±ubah}”(h]”j‚qah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j³qh´M±hj„qh²hubj4)�”}”(hhh]”jM)�”}”(hŒConverts date to seconds.”h]”hŒConverts date to seconds.”…”�”}”(hjzth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M±hjwth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj„qh²hh³j³qh´M±ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj’tjHj’tjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXˆ**Parameters** ``const unsigned int year0`` year to convert ``const unsigned int mon0`` month to convert ``const unsigned int day`` day to convert ``const unsigned int hour`` hour to convert ``const unsigned int min`` minute to convert ``const unsigned int sec`` second to convert **Description** Converts Gregorian date to seconds since 1970-01-01 00:00:00. Assumes input in normal date format, i.e. 1980-12-31 23:59:59 => year=1980, mon=12, day=31, hour=23, min=59, sec=59. [For the Julian calendar (which was used in Russia before 1917, Britain & colonies before 1752, anywhere else before 1582, and is still in use by some communities) leave out the -year/100+year/400 terms, and add 10.] This algorithm was first published by Gauss (I think). A leap second can be indicated by calling this function with sec as 60 (allowable under ISO 8601). The leap second is treated the same as the following second since they don't exist in UNIX time. An encoding of midnight at the end of the day as 24:00:00 - ie. midnight tomorrow - (allowable under ISO 8601) is supported. **Return** seconds since the epoch time for the given input date”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjœth]”hŒ Parameters”…”�”}”(hjžth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjštubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mµhj–tubj¤)�”}”(hhh]”(j©)�”}”(hŒ-``const unsigned int year0`` year to convert ”h]”(j¯)�”}”(hŒ``const unsigned int year0``”h]”jS)�”}”(hj»th]”hŒconst unsigned int year0”…”�”}”(hj½th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¹tubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M²hjµtubjÉ)�”}”(hhh]”jM)�”}”(hŒyear to convert”h]”hŒyear to convert”…”�”}”(hjÔth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÐth´M²hjÑtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjµtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÐth´M²hj²tubj©)�”}”(hŒ-``const unsigned int mon0`` month to convert ”h]”(j¯)�”}”(hŒ``const unsigned int mon0``”h]”jS)�”}”(hjôth]”hŒconst unsigned int mon0”…”�”}”(hjöth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjòtubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M³hjîtubjÉ)�”}”(hhh]”jM)�”}”(hŒmonth to convert”h]”hŒmonth to convert”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j uh´M³hj uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjîtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j uh´M³hj²tubj©)�”}”(hŒ*``const unsigned int day`` day to convert ”h]”(j¯)�”}”(hŒ``const unsigned int day``”h]”jS)�”}”(hj-uh]”hŒconst unsigned int day”…”�”}”(hj/uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj+uubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M´hj'uubjÉ)�”}”(hhh]”jM)�”}”(hŒday to convert”h]”hŒday to convert”…”�”}”(hjFuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jBuh´M´hjCuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj'uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jBuh´M´hj²tubj©)�”}”(hŒ,``const unsigned int hour`` hour to convert ”h]”(j¯)�”}”(hŒ``const unsigned int hour``”h]”jS)�”}”(hjfuh]”hŒconst unsigned int hour”…”�”}”(hjhuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjduubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mµhj`uubjÉ)�”}”(hhh]”jM)�”}”(hŒhour to convert”h]”hŒhour to convert”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j{uh´Mµhj|uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj`uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j{uh´Mµhj²tubj©)�”}”(hŒ-``const unsigned int min`` minute to convert ”h]”(j¯)�”}”(hŒ``const unsigned int min``”h]”jS)�”}”(hjŸuh]”hŒconst unsigned int min”…”�”}”(hj¡uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�uubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M¶hj™uubjÉ)�”}”(hhh]”jM)�”}”(hŒminute to convert”h]”hŒminute to convert”…”�”}”(hj¸uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j´uh´M¶hjµuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj™uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j´uh´M¶hj²tubj©)�”}”(hŒ-``const unsigned int sec`` second to convert ”h]”(j¯)�”}”(hŒ``const unsigned int sec``”h]”jS)�”}”(hjØuh]”hŒconst unsigned int sec”…”�”}”(hjÚuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÖuubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M·hjÒuubjÉ)�”}”(hhh]”jM)�”}”(hŒsecond to convert”h]”hŒsecond to convert”…”�”}”(hjñuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jíuh´M·hjîuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÒuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jíuh´M·hj²tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj–tubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjvh]”hŒ Description”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M¹hj–tubjM)�”}”(hŒ²Converts Gregorian date to seconds since 1970-01-01 00:00:00. Assumes input in normal date format, i.e. 1980-12-31 23:59:59 => year=1980, mon=12, day=31, hour=23, min=59, sec=59.”h]”hŒ²Converts Gregorian date to seconds since 1970-01-01 00:00:00. Assumes input in normal date format, i.e. 1980-12-31 23:59:59 => year=1980, mon=12, day=31, hour=23, min=59, sec=59.”…”�”}”(hj)vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M¸hj–tubjM)�”}”(hŒØ[For the Julian calendar (which was used in Russia before 1917, Britain & colonies before 1752, anywhere else before 1582, and is still in use by some communities) leave out the -year/100+year/400 terms, and add 10.]”h]”hŒØ[For the Julian calendar (which was used in Russia before 1917, Britain & colonies before 1752, anywhere else before 1582, and is still in use by some communities) leave out the -year/100+year/400 terms, and add 10.]”…”�”}”(hj8vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M¼hj–tubjM)�”}”(hŒ6This algorithm was first published by Gauss (I think).”h]”hŒ6This algorithm was first published by Gauss (I think).”…”�”}”(hjGvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÁhj–tubjM)�”}”(hŒÄA leap second can be indicated by calling this function with sec as 60 (allowable under ISO 8601). The leap second is treated the same as the following second since they don't exist in UNIX time.”h]”hŒÆA leap second can be indicated by calling this function with sec as 60 (allowable under ISO 8601). The leap second is treated the same as the following second since they don’t exist in UNIX time.”…”�”}”(hjVvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÃhj–tubjM)�”}”(hŒ|An encoding of midnight at the end of the day as 24:00:00 - ie. midnight tomorrow - (allowable under ISO 8601) is supported.”h]”hŒ|An encoding of midnight at the end of the day as 24:00:00 - ie. midnight tomorrow - (allowable under ISO 8601) is supported.”…”�”}”(hjevh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÇhj–tubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjvvh]”hŒReturn”…”�”}”(hjxvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjtvubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÊhj–tubjM)�”}”(hŒ5seconds since the epoch time for the given input date”h]”hŒ5seconds since the epoch time for the given input date”…”�”}”(hjŒvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MËhj–tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&set_normalized_timespec64 (C function)”Œc.set_normalized_timespec64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒNvoid set_normalized_timespec64 (struct timespec64 *ts, time64_t sec, s64 nsec)”h]”hù)�”}”(hŒMvoid set_normalized_timespec64(struct timespec64 *ts, time64_t sec, s64 nsec)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj»vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj·vh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊvh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·vh²hh³jÉvh´Mïubhÿ)�”}”(hŒset_normalized_timespec64”h]”j)�”}”(hŒset_normalized_timespec64”h]”hŒset_normalized_timespec64”…”�”}”(hjÜvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØvubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj·vh²hh³jÉvh´Mïubj4)�”}”(hŒ/(struct timespec64 *ts, time64_t sec, s64 nsec)”h]”(j:)�”}”(hŒstruct timespec64 *ts”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjøvh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjôvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôvubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jwŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÞvsbŒc.set_normalized_timespec64”†”asbuh1hhjôvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6wh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôvubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjDwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjôvubj)�”}”(hŒts”h]”hŒts”…”�”}”(hjQwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjðvubj:)�”}”(hŒ time64_t sec”h]”(h)�”}”(hhh]”j)�”}”(hŒtime64_t”h]”hŒtime64_t”…”�”}”(hjmwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjjwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jowŒmodname”NŒ classname”Njwjz)�”}”j}]”j2wŒc.set_normalized_timespec64”†”asbuh1hhjfwubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹wh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfwubj)�”}”(hŒsec”h]”hŒsec”…”�”}”(hj™wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjðvubj:)�”}”(hŒs64 nsec”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjµwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j·wŒmodname”NŒ classname”Njwjz)�”}”j}]”j2wŒc.set_normalized_timespec64”†”asbuh1hhj®wubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓwh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj®wubj)�”}”(hŒnsec”h]”hŒnsec”…”�”}”(hjáwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjðvubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj·vh²hh³jÉvh´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj³vh²hh³jÉvh´Mïubah}”(h]”j®vah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÉvh´Mïhj°vh²hubj4)�”}”(hhh]”jM)�”}”(hŒ-set timespec sec and nsec parts and normalize”h]”hŒ-set timespec sec and nsec parts and normalize”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mïhjxh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj°vh²hh³jÉvh´Mïubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj#xjHj#xjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX›**Parameters** ``struct timespec64 *ts`` pointer to timespec variable to be set ``time64_t sec`` seconds to set ``s64 nsec`` nanoseconds to set **Description** Set seconds and nanoseconds field of a timespec variable and normalize to the timespec storage format **Note** The tv_nsec part is always in the range of 0 <= tv_nsec < NSEC_PER_SEC. For negative values only the tv_sec field is negative !”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj-xh]”hŒ Parameters”…”�”}”(hj/xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj+xubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Móhj'xubj¤)�”}”(hhh]”(j©)�”}”(hŒA``struct timespec64 *ts`` pointer to timespec variable to be set ”h]”(j¯)�”}”(hŒ``struct timespec64 *ts``”h]”jS)�”}”(hjLxh]”hŒstruct timespec64 *ts”…”�”}”(hjNxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJxubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MñhjFxubjÉ)�”}”(hhh]”jM)�”}”(hŒ&pointer to timespec variable to be set”h]”hŒ&pointer to timespec variable to be set”…”�”}”(hjexh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jaxh´Mñhjbxubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jaxh´MñhjCxubj©)�”}”(hŒ ``time64_t sec`` seconds to set ”h]”(j¯)�”}”(hŒ``time64_t sec``”h]”jS)�”}”(hj…xh]”hŒ time64_t sec”…”�”}”(hj‡xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒxubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MòhjxubjÉ)�”}”(hhh]”jM)�”}”(hŒseconds to set”h]”hŒseconds to set”…”�”}”(hjžxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jšxh´Mòhj›xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jšxh´MòhjCxubj©)�”}”(hŒ ``s64 nsec`` nanoseconds to set ”h]”(j¯)�”}”(hŒ ``s64 nsec``”h]”jS)�”}”(hj¾xh]”hŒs64 nsec”…”�”}”(hjÀxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¼xubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Móhj¸xubjÉ)�”}”(hhh]”jM)�”}”(hŒnanoseconds to set”h]”hŒnanoseconds to set”…”�”}”(hj×xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÓxh´MóhjÔxubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¸xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÓxh´MóhjCxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj'xubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjùxh]”hŒ Description”…”�”}”(hjûxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj÷xubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mõhj'xubjM)�”}”(hŒeSet seconds and nanoseconds field of a timespec variable and normalize to the timespec storage format”h]”hŒeSet seconds and nanoseconds field of a timespec variable and normalize to the timespec storage format”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Môhj'xubjM)�”}”(hŒ**Note**”h]”jŽ)�”}”(hj yh]”hŒNote”…”�”}”(hj"yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M÷hj'xubjM)�”}”(hŒThe tv_nsec part is always in the range of 0 <= tv_nsec < NSEC_PER_SEC. For negative values only the tv_sec field is negative !”h]”hŒThe tv_nsec part is always in the range of 0 <= tv_nsec < NSEC_PER_SEC. For negative values only the tv_sec field is negative !”…”�”}”(hj6yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Møhj'xubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒns_to_timespec64 (C function)”Œc.ns_to_timespec64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-struct timespec64 ns_to_timespec64 (s64 nsec)”h]”hù)�”}”(hŒ,struct timespec64 ns_to_timespec64(s64 nsec)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjeyh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjayh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsyh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjayh²hh³jryh´Mubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj„yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j†yŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒns_to_timespec64”sbŒc.ns_to_timespec64”†”asbuh1hhjayh²hh³jryh´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjayh²hh³jryh´Mubhÿ)�”}”(hŒns_to_timespec64”h]”j)�”}”(hj¢yh]”hŒns_to_timespec64”…”�”}”(hj·yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³yubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjayh²hh³jryh´Mubj4)�”}”(hŒ (s64 nsec)”h]”j:)�”}”(hŒs64 nsec”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÕyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j×yŒmodname”NŒ classname”Njwjz)�”}”j}]”j yŒc.ns_to_timespec64”†”asbuh1hhjÎyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóyh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÎyubj)�”}”(hŒnsec”h]”hŒnsec”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÊyubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjayh²hh³jryh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj]yh²hh³jryh´Mubah}”(h]”jXyah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jryh´MhjZyh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!Convert nanoseconds to timespec64”h]”hŒ!Convert nanoseconds to timespec64”…”�”}”(hj+zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mhj(zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjZyh²hh³jryh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjCzjHjCzjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒ†**Parameters** ``s64 nsec`` the nanoseconds value to be converted **Return** the timespec64 representation of the nsec parameter.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjMzh]”hŒ Parameters”…”�”}”(hjOzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKzubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MhjGzubj¤)�”}”(hhh]”j©)�”}”(hŒ3``s64 nsec`` the nanoseconds value to be converted ”h]”(j¯)�”}”(hŒ ``s64 nsec``”h]”jS)�”}”(hjlzh]”hŒs64 nsec”…”�”}”(hjnzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MhjfzubjÉ)�”}”(hhh]”jM)�”}”(hŒ%the nanoseconds value to be converted”h]”hŒ%the nanoseconds value to be converted”…”�”}”(hj…zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�zh´Mhj‚zubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjfzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�zh´Mhjczubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjGzubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj§zh]”hŒReturn”…”�”}”(hj©zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MhjGzubjM)�”}”(hŒ4the timespec64 representation of the nsec parameter.”h]”hŒ4the timespec64 representation of the nsec parameter.”…”�”}”(hj½zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MhjGzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ__msecs_to_jiffies (C function)”Œc.__msecs_to_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7unsigned long __msecs_to_jiffies (const unsigned int m)”h]”hù)�”}”(hŒ6unsigned long __msecs_to_jiffies(const unsigned int m)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjìzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjèzh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûzh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjèzh²hh³júzh´M.ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjèzh²hh³júzh´M.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjèzh²hh³júzh´M.ubhÿ)�”}”(hŒ__msecs_to_jiffies”h]”j)�”}”(hŒ__msecs_to_jiffies”h]”hŒ__msecs_to_jiffies”…”�”}”(hj){h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%{ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjèzh²hh³júzh´M.ubj4)�”}”(hŒ(const unsigned int m)”h]”j:)�”}”(hŒconst unsigned int m”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjE{h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjA{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjA{ubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj`{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjA{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjA{ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj|{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjA{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjA{ubj)�”}”(hjqih]”hŒm”…”�”}”(hj˜{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjA{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj={ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjèzh²hh³júzh´M.ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjäzh²hh³júzh´M.ubah}”(h]”jßzah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³júzh´M.hjázh²hubj4)�”}”(hhh]”j C)�”}”(hhh]”j„)�”}”(hŒconvert milliseconds to jiffies”h]”jM)�”}”(hjÆ{h]”hŒconvert milliseconds to jiffies”…”�”}”(hjÈ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M.hjÄ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjÁ{h²hh³jÕ{h´Nubah}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³jÕ{h´M.hj¾{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjázh²hh³júzh´M.ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjë{jHjë{jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX**Parameters** ``const unsigned int m`` time in milliseconds **Description** conversion is done as follows: - negative values mean 'infinite timeout' (MAX_JIFFY_OFFSET) - 'too large' values [that would result in larger than MAX_JIFFY_OFFSET values] mean 'infinite timeout' too. - all other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows. for the details see _msecs_to_jiffies() msecs_to_jiffies() checks for the passed in value being a constant via __builtin_constant_p() allowing gcc to eliminate most of the code, __msecs_to_jiffies() is called if the value passed does not allow constant folding and the actual conversion must be done at runtime. The _msecs_to_jiffies helpers are the HZ dependent conversion routines found in include/linux/jiffies.h **Return** jiffies value”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M2hjï{ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``const unsigned int m`` time in milliseconds ”h]”(j¯)�”}”(hŒ``const unsigned int m``”h]”jS)�”}”(hj|h]”hŒconst unsigned int m”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M/hj|ubjÉ)�”}”(hhh]”jM)�”}”(hŒtime in milliseconds”h]”hŒtime in milliseconds”…”�”}”(hj-|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjï{ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjO|h]”hŒ Description”…”�”}”(hjQ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M1hjï{ubjM)�”}”(hŒconversion is done as follows:”h]”hŒconversion is done as follows:”…”�”}”(hje|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M0hjï{ubj C)�”}”(hhh]”(j„)�”}”(hŒ;negative values mean 'infinite timeout' (MAX_JIFFY_OFFSET) ”h]”jM)�”}”(hŒ:negative values mean 'infinite timeout' (MAX_JIFFY_OFFSET)”h]”hŒ>negative values mean ‘infinite timeout’ (MAX_JIFFY_OFFSET)”…”�”}”(hj{|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M2hjw|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjt|ubj„)�”}”(hŒk'too large' values [that would result in larger than MAX_JIFFY_OFFSET values] mean 'infinite timeout' too. ”h]”jM)�”}”(hŒj'too large' values [that would result in larger than MAX_JIFFY_OFFSET values] mean 'infinite timeout' too.”h]”hŒr‘too large’ values [that would result in larger than MAX_JIFFY_OFFSET values] mean ‘infinite timeout’ too.”…”�”}”(hj”|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M4hj�|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjt|ubj„)�”}”(hŒÄall other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows. for the details see _msecs_to_jiffies() ”h]”jM)�”}”(hŒÃall other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows. for the details see _msecs_to_jiffies()”h]”hŒÃall other values are converted to jiffies by either multiplying the input value by a factor or dividing it with a factor and handling any 32-bit overflows. for the details see _msecs_to_jiffies()”…”�”}”(hj­|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M7hj©|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjt|ubeh}”(h]”h ]”h"]”h$•]”h&]”j-Cj.Cuh1j Ch³j‰|h´M2hjï{ubjM)�”}”(hXwmsecs_to_jiffies() checks for the passed in value being a constant via __builtin_constant_p() allowing gcc to eliminate most of the code, __msecs_to_jiffies() is called if the value passed does not allow constant folding and the actual conversion must be done at runtime. The _msecs_to_jiffies helpers are the HZ dependent conversion routines found in include/linux/jiffies.h”h]”hXwmsecs_to_jiffies() checks for the passed in value being a constant via __builtin_constant_p() allowing gcc to eliminate most of the code, __msecs_to_jiffies() is called if the value passed does not allow constant folding and the actual conversion must be done at runtime. The _msecs_to_jiffies helpers are the HZ dependent conversion routines found in include/linux/jiffies.h”…”�”}”(hjÈ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M<hjï{ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÙ|h]”hŒReturn”…”�”}”(hjÛ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MDhjï{ubjM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hjï|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MEhjï{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ__usecs_to_jiffies (C function)”Œc.__usecs_to_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7unsigned long __usecs_to_jiffies (const unsigned int u)”h]”hù)�”}”(hŒ6unsigned long __usecs_to_jiffies(const unsigned int u)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj}h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MSubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}h²hh³j,}h´MSubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj;}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj}h²hh³j,}h´MSubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}h²hh³j,}h´MSubhÿ)�”}”(hŒ__usecs_to_jiffies”h]”j)�”}”(hŒ__usecs_to_jiffies”h]”hŒ__usecs_to_jiffies”…”�”}”(hj[}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW}ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj}h²hh³j,}h´MSubj4)�”}”(hŒ(const unsigned int u)”h]”j:)�”}”(hŒconst unsigned int u”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjw}h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjs}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjs}ubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj’}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjs}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjs}ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj®}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjs}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjs}ubj)�”}”(hj÷lh]”hŒu”…”�”}”(hjÊ}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjo}ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj}h²hh³j,}h´MSubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj}h²hh³j,}h´MSubah}”(h]”j}ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j,}h´MShj}h²hubj4)�”}”(hhh]”j C)�”}”(hhh]”j„)�”}”(hŒconvert microseconds to jiffies”h]”jM)�”}”(hjø}h]”hŒconvert microseconds to jiffies”…”�”}”(hjú}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MShjö}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjó}h²hh³j~h´Nubah}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³j~h´MShjð}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj}h²hh³j,}h´MSubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj~jHj~jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒZ**Parameters** ``const unsigned int u`` time in milliseconds **Return** jiffies value”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MWhj!~ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``const unsigned int u`` time in milliseconds ”h]”(j¯)�”}”(hŒ``const unsigned int u``”h]”jS)�”}”(hjF~h]”hŒconst unsigned int u”…”�”}”(hjH~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjD~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MThj@~ubjÉ)�”}”(hhh]”jM)�”}”(hŒtime in milliseconds”h]”hŒtime in milliseconds”…”�”}”(hj_~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j[~h´MThj\~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj@~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j[~h´MThj=~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj!~ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�~h]”hŒReturn”…”�”}”(hjƒ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MVhj!~ubjM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hj—~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MVhj!~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"timespec64_to_jiffies (C function)”Œc.timespec64_to_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDunsigned long timespec64_to_jiffies (const struct timespec64 *value)”h]”hù)�”}”(hŒCunsigned long timespec64_to_jiffies(const struct timespec64 *value)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÆ~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÂ~h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MaubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ~h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÂ~h²hh³jÔ~h´Maubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjã~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÂ~h²hh³jÔ~h´MaubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ~h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÂ~h²hh³jÔ~h´Maubhÿ)�”}”(hŒtimespec64_to_jiffies”h]”j)�”}”(hŒtimespec64_to_jiffies”h]”hŒtimespec64_to_jiffies”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿ~ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÂ~h²hh³jÔ~h´Maubj4)�”}”(hŒ (const struct timespec64 *value)”h]”j:)�”}”(hŒconst struct timespec64 *value”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jZŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjsbŒc.timespec64_to_jiffies”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÂ~h²hh³jÔ~h´Maubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¾~h²hh³jÔ~h´Maubah}”(h]”j¹~ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÔ~h´Mahj»~h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%convert a timespec64 value to jiffies”h]”hŒ%convert a timespec64 value to jiffies”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mahjºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj»~h²hh³jÔ~h´Maubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÕjHjÕjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXù**Parameters** ``const struct timespec64 *value`` pointer to :c:type:`struct timespec64 ` **Description** The TICK_NSEC - 1 rounds up the value to the next resolution. Note that a remainder subtract here would not do the right thing as the resolution values don't fall on second boundaries. I.e. the line: nsec -= nsec % TICK_NSEC; is NOT a correct resolution rounding. Note that due to the small error in the multiplier here, this rounding is incorrect for sufficiently large values of tv_nsec, but well formed timespecs should have tv_nsec < NSEC_PER_SEC, so we're OK. Rather, we just shift the bits off the right. The >> (NSEC_JIFFIE_SC - SEC_JIFFIE_SC) converts the scaled nsec value to a scaled second value. **Return** jiffies value”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MehjÙubj¤)�”}”(hhh]”j©)�”}”(hŒW``const struct timespec64 *value`` pointer to :c:type:`struct timespec64 ` ”h]”(j¯)�”}”(hŒ"``const struct timespec64 *value``”h]”jS)�”}”(hjþh]”hŒconst struct timespec64 *value”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MbhjøubjÉ)�”}”(hhh]”jM)�”}”(hŒ3pointer to :c:type:`struct timespec64 `”h]”(hŒ pointer to ”…”�”}”(hj€h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct timespec64 `”h]”jS)�”}”(hj!€h]”hŒstruct timespec64”…”�”}”(hj#€h²hh³Nh´Nubah}”(h]”h ]”(Œxref”jAŒc-type”eh"]”h$]”h&]”uh1jRhj€ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/basics”Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwjz)�”}”j}]”sbŒ reftarget”Œ timespec64”uh1hh³j€h´Mbhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€h´Mbhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€h´Mbhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÙubjM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MdhjÙubjM)�”}”(hXÒThe TICK_NSEC - 1 rounds up the value to the next resolution. Note that a remainder subtract here would not do the right thing as the resolution values don't fall on second boundaries. I.e. the line: nsec -= nsec % TICK_NSEC; is NOT a correct resolution rounding. Note that due to the small error in the multiplier here, this rounding is incorrect for sufficiently large values of tv_nsec, but well formed timespecs should have tv_nsec < NSEC_PER_SEC, so we're OK.”h]”hXÖThe TICK_NSEC - 1 rounds up the value to the next resolution. Note that a remainder subtract here would not do the right thing as the resolution values don’t fall on second boundaries. I.e. the line: nsec -= nsec % TICK_NSEC; is NOT a correct resolution rounding. Note that due to the small error in the multiplier here, this rounding is incorrect for sufficiently large values of tv_nsec, but well formed timespecs should have tv_nsec < NSEC_PER_SEC, so we’re OK.”…”�”}”(hjt€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MchjÙubjM)�”}”(hŒ-Rather, we just shift the bits off the right.”h]”hŒ-Rather, we just shift the bits off the right.”…”�”}”(hjƒ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MlhjÙubjM)�”}”(hŒ`The >> (NSEC_JIFFIE_SC - SEC_JIFFIE_SC) converts the scaled nsec value to a scaled second value.”h]”hŒ`The >> (NSEC_JIFFIE_SC - SEC_JIFFIE_SC) converts the scaled nsec value to a scaled second value.”…”�”}”(hj’€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MnhjÙubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj£€h]”hŒReturn”…”�”}”(hj¥€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MqhjÙubjM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hj¹€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MrhjÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"jiffies_to_timespec64 (C function)”Œc.jiffies_to_timespec64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒRvoid jiffies_to_timespec64 (const unsigned long jiffies, struct timespec64 *value)”h]”hù)�”}”(hŒQvoid jiffies_to_timespec64(const unsigned long jiffies, struct timespec64 *value)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjè€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjä€h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M†ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷€h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjä€h²hh³jö€h´M†ubhÿ)�”}”(hŒjiffies_to_timespec64”h]”j)�”}”(hŒjiffies_to_timespec64”h]”hŒjiffies_to_timespec64”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjä€h²hh³jö€h´M†ubj4)�”}”(hŒ7(const unsigned long jiffies, struct timespec64 *value)”h]”(j:)�”}”(hŒconst unsigned long jiffies”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj%�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj!�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!�ubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj@�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj!�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!�ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj\�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj!�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!�ubj)�”}”(hŒjiffies”h]”hŒjiffies”…”�”}”(hjx�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�ubj:)�”}”(hŒstruct timespec64 *value”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‘�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj��ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj��ubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj¯�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j±�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj �sbŒc.jiffies_to_timespec64”†”asbuh1hhj��ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj��ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÝ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj��ubj)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj��ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjä€h²hh³jö€h´M†ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjà€h²hh³jö€h´M†ubah}”(h]”jÛ€ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jö€h´M†hjÝ€h²hubj4)�”}”(hhh]”jM)�”}”(hŒAconvert jiffies value to :c:type:`struct timespec64 `”h]”(hŒconvert jiffies value to ”…”�”}”(hj‚h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct timespec64 `”h]”jS)�”}”(hj‚h]”hŒstruct timespec64”…”�”}”(hj ‚h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj‚ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwjz)�”}”j}]”jË�Œc.jiffies_to_timespec64”†”asbjB€Œ timespec64”uh1hh³jqnh´Mƒhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M†hj‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÝ€h²hh³jö€h´M†ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjP‚jHjP‚jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒ“**Parameters** ``const unsigned long jiffies`` jiffies value ``struct timespec64 *value`` pointer to :c:type:`struct timespec64 `”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjZ‚h]”hŒ Parameters”…”�”}”(hj\‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjX‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MŠhjT‚ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``const unsigned long jiffies`` jiffies value ”h]”(j¯)�”}”(hŒ``const unsigned long jiffies``”h]”jS)�”}”(hjy‚h]”hŒconst unsigned long jiffies”…”�”}”(hj{‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjw‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M‡hjs‚ubjÉ)�”}”(hhh]”jM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hj’‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŽ‚h´M‡hj�‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjs‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŽ‚h´M‡hjp‚ubj©)�”}”(hŒP``struct timespec64 *value`` pointer to :c:type:`struct timespec64 `”h]”(j¯)�”}”(hŒ``struct timespec64 *value``”h]”jS)�”}”(hj²‚h]”hŒstruct timespec64 *value”…”�”}”(hj´‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M‰hj¬‚ubjÉ)�”}”(hhh]”jM)�”}”(hŒ3pointer to :c:type:`struct timespec64 `”h]”(hŒ pointer to ”…”�”}”(hjË‚h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct timespec64 `”h]”jS)�”}”(hjÕ‚h]”hŒstruct timespec64”…”�”}”(hjׂh²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjÓ‚ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ timespec64”uh1hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MˆhjË‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jò‚h´MˆhjÈ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¬‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÇ‚h´M‰hjp‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjT‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒjiffies_to_clock_t (C function)”Œc.jiffies_to_clock_t”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,clock_t jiffies_to_clock_t (unsigned long x)”h]”hù)�”}”(hŒ+clock_t jiffies_to_clock_t(unsigned long x)”h]”(h)�”}”(hhh]”j)�”}”(hŒclock_t”h]”hŒclock_t”…”�”}”(hj.ƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j0ƒŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒjiffies_to_clock_t”sbŒc.jiffies_to_clock_t”†”asbuh1hhj'ƒh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPƒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'ƒh²hh³jOƒh´M�ubhÿ)�”}”(hŒjiffies_to_clock_t”h]”j)�”}”(hjLƒh]”hŒjiffies_to_clock_t”…”�”}”(hjbƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^ƒubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj'ƒh²hh³jOƒh´M�ubj4)�”}”(hŒ(unsigned long x)”h]”j:)�”}”(hŒunsigned long x”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj}ƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjyƒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹ƒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyƒubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj™ƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjyƒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§ƒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyƒubj)�”}”(hjûEh]”hŒx”…”�”}”(hjµƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjuƒubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj'ƒh²hh³jOƒh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj#ƒh²hh³jOƒh´M�ubah}”(h]”jƒah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jOƒh´M�hj ƒh²hubj4)�”}”(hhh]”jM)�”}”(hŒConvert jiffies to clock_t”h]”hŒConvert jiffies to clock_t”…”�”}”(hjÞƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M�hjÛƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj ƒh²hh³jOƒh´M�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjöƒjHjöƒjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒn**Parameters** ``unsigned long x`` jiffies value **Return** jiffies converted to clock_t (CLOCKS_PER_SEC)”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M¡hjúƒubj¤)�”}”(hhh]”j©)�”}”(hŒ"``unsigned long x`` jiffies value ”h]”(j¯)�”}”(hŒ``unsigned long x``”h]”jS)�”}”(hj„h]”hŒunsigned long x”…”�”}”(hj!„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mžhj„ubjÉ)�”}”(hhh]”jM)�”}”(hŒ jiffies value”h]”hŒ jiffies value”…”�”}”(hj8„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4„h´Mžhj5„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4„h´Mžhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjúƒubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjZ„h]”hŒReturn”…”�”}”(hj\„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjX„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M hjúƒubjM)�”}”(hŒ-jiffies converted to clock_t (CLOCKS_PER_SEC)”h]”hŒ-jiffies converted to clock_t (CLOCKS_PER_SEC)”…”�”}”(hjp„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M hjúƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒclock_t_to_jiffies (C function)”Œc.clock_t_to_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2unsigned long clock_t_to_jiffies (unsigned long x)”h]”hù)�”}”(hŒ1unsigned long clock_t_to_jiffies(unsigned long x)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjŸ„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj›„h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›„h²hh³j­„h´M±ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¼„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj›„h²hh³j­„h´M±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›„h²hh³j­„h´M±ubhÿ)�”}”(hŒclock_t_to_jiffies”h]”j)�”}”(hŒclock_t_to_jiffies”h]”hŒclock_t_to_jiffies”…”�”}”(hjÜ„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ„ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj›„h²hh³j­„h´M±ubj4)�”}”(hŒ(unsigned long x)”h]”j:)�”}”(hŒunsigned long x”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjø„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjô„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjô„ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjô„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"…h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjô„ubj)�”}”(hjûEh]”hŒx”…”�”}”(hj0…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjð„ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj›„h²hh³j­„h´M±ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj—„h²hh³j­„h´M±ubah}”(h]”j’„ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j­„h´M±hj”„h²hubj4)�”}”(hhh]”jM)�”}”(hŒConvert clock_t to jiffies”h]”hŒConvert clock_t to jiffies”…”�”}”(hjY…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M±hjV…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj”„h²hh³j­„h´M±ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjq…jHjq…jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒc**Parameters** ``unsigned long x`` clock_t value **Return** clock_t value converted to jiffies”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj{…h]”hŒ Parameters”…”�”}”(hj}…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mµhju…ubj¤)�”}”(hhh]”j©)�”}”(hŒ"``unsigned long x`` clock_t value ”h]”(j¯)�”}”(hŒ``unsigned long x``”h]”jS)�”}”(hjš…h]”hŒunsigned long x”…”�”}”(hjœ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj˜…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M²hj”…ubjÉ)�”}”(hhh]”jM)�”}”(hŒ clock_t value”h]”hŒ clock_t value”…”�”}”(hj³…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hju…ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÕ…h]”hŒReturn”…”�”}”(hj×…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M´hju…ubjM)�”}”(hŒ"clock_t value converted to jiffies”h]”hŒ"clock_t value converted to jiffies”…”�”}”(hjë…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M´hju…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"jiffies_64_to_clock_t (C function)”Œc.jiffies_64_to_clock_t”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ)notrace u64 jiffies_64_to_clock_t (u64 x)”h]”hù)�”}”(hŒ(notrace u64 jiffies_64_to_clock_t(u64 x)”h]”(hŒnotrace”…”�”}”(hj†h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÈubh)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj0†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j2†Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒjiffies_64_to_clock_t”sbŒc.jiffies_64_to_clock_t”†”asbuh1hhj†h²hh³j,†h´MÈubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ†h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†h²hh³j,†h´MÈubhÿ)�”}”(hŒjiffies_64_to_clock_t”h]”j)�”}”(hjN†h]”hŒjiffies_64_to_clock_t”…”�”}”(hjc†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_†ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj†h²hh³j,†h´MÈubj4)�”}”(hŒ(u64 x)”h]”j:)�”}”(hŒu64 x”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj�†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jƒ†Œmodname”NŒ classname”Njwjz)�”}”j}]”jL†Œc.jiffies_64_to_clock_t”†”asbuh1hhjz†ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ†h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjz†ubj)�”}”(hjûEh]”hŒx”…”�”}”(hj­†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjv†ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj†h²hh³j,†h´MÈubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj†h²hh³j,†h´MÈubah}”(h]”j †ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j,†h´MÈhj†h²hubj4)�”}”(hhh]”jM)�”}”(hŒConvert jiffies_64 to clock_t”h]”hŒConvert jiffies_64 to clock_t”…”�”}”(hjÖ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÈhjÓ†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj†h²hh³j,†h´MÈubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjî†jHjî†jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒy**Parameters** ``u64 x`` jiffies_64 value **Return** jiffies_64 value converted to 64-bit "clock_t" (CLOCKS_PER_SEC)”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÌhjò†ubj¤)�”}”(hhh]”j©)�”}”(hŒ``u64 x`` jiffies_64 value ”h]”(j¯)�”}”(hŒ ``u64 x``”h]”jS)�”}”(hj‡h]”hŒu64 x”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÉhj‡ubjÉ)�”}”(hhh]”jM)�”}”(hŒjiffies_64 value”h]”hŒjiffies_64 value”…”�”}”(hj0‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjò†ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjR‡h]”hŒReturn”…”�”}”(hjT‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MËhjò†ubjM)�”}”(hŒ?jiffies_64 value converted to 64-bit "clock_t" (CLOCKS_PER_SEC)”h]”hŒCjiffies_64 value converted to 64-bit “clock_tâ€� (CLOCKS_PER_SEC)”…”�”}”(hjh‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MËhjò†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒjiffies64_to_nsecs (C function)”Œc.jiffies64_to_nsecs”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒu64 jiffies64_to_nsecs (u64 j)”h]”hù)�”}”(hŒu64 jiffies64_to_nsecs(u64 j)”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjš‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jœ‡Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒjiffies64_to_nsecs”sbŒc.jiffies64_to_nsecs”†”asbuh1hhj“‡h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MúubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼‡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“‡h²hh³j»‡h´Múubhÿ)�”}”(hŒjiffies64_to_nsecs”h]”j)�”}”(hj¸‡h]”hŒjiffies64_to_nsecs”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjʇubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj“‡h²hh³j»‡h´Múubj4)�”}”(hŒ(u64 j)”h]”j:)�”}”(hŒu64 j”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjì‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jmodname”NŒ classname”Njwjz)�”}”j}]”j¶‡Œc.jiffies64_to_nsecs”†”asbuh1hhjå‡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjå‡ubj)�”}”(hjŽdh]”hŒj”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjå‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjá‡ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj“‡h²hh³j»‡h´Múubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�‡h²hh³j»‡h´Múubah}”(h]”jЇah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j»‡h´MúhjŒ‡h²hubj4)�”}”(hhh]”jM)�”}”(hŒ Convert jiffies64 to nanoseconds”h]”hŒ Convert jiffies64 to nanoseconds”…”�”}”(hjAˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Múhj>ˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŒ‡h²hh³j»‡h´Múubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjYˆjHjYˆjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒJ**Parameters** ``u64 j`` jiffies64 value **Return** nanoseconds value”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjcˆh]”hŒ Parameters”…”�”}”(hjeˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mþhj]ˆubj¤)�”}”(hhh]”j©)�”}”(hŒ``u64 j`` jiffies64 value ”h]”(j¯)�”}”(hŒ ``u64 j``”h]”jS)�”}”(hj‚ˆh]”hŒu64 j”…”�”}”(hj„ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj€ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mûhj|ˆubjÉ)�”}”(hhh]”jM)�”}”(hŒjiffies64 value”h]”hŒjiffies64 value”…”�”}”(hj›ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j—ˆh´Mûhj˜ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj|ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j—ˆh´Mûhjyˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj]ˆubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj½ˆh]”hŒReturn”…”�”}”(hj¿ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mýhj]ˆubjM)�”}”(hŒnanoseconds value”h]”hŒnanoseconds value”…”�”}”(hjÓˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mýhj]ˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒjiffies64_to_msecs (C function)”Œc.jiffies64_to_msecs”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ$u64 jiffies64_to_msecs (const u64 j)”h]”hù)�”}”(hŒ#u64 jiffies64_to_msecs(const u64 j)”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‰Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒjiffies64_to_msecs”sbŒc.jiffies64_to_msecs”†”asbuh1hhjþˆh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþˆh²hh³j&‰h´M ubhÿ)�”}”(hŒjiffies64_to_msecs”h]”j)�”}”(hj#‰h]”hŒjiffies64_to_msecs”…”�”}”(hj9‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5‰ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjþˆh²hh³j&‰h´M ubj4)�”}”(hŒ (const u64 j)”h]”j:)�”}”(hŒ const u64 j”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjT‰h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjP‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjP‰ubh)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjr‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjo‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jt‰Œmodname”NŒ classname”Njwjz)�”}”j}]”j!‰Œc.jiffies64_to_msecs”†”asbuh1hhjP‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjP‰ubj)�”}”(hjŽdh]”hŒj”…”�”}”(hjž‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjL‰ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjþˆh²hh³j&‰h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjúˆh²hh³j&‰h´M ubah}”(h]”jõˆah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j&‰h´M hj÷ˆh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!Convert jiffies64 to milliseconds”h]”hŒ!Convert jiffies64 to milliseconds”…”�”}”(hjljh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M hjĉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj÷ˆh²hh³j&‰h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj߉jHj߉jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒQ**Parameters** ``const u64 j`` jiffies64 value **Return** milliseconds value”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mhjã‰ubj¤)�”}”(hhh]”j©)�”}”(hŒ ``const u64 j`` jiffies64 value ”h]”(j¯)�”}”(hŒ``const u64 j``”h]”jS)�”}”(hjŠh]”hŒ const u64 j”…”�”}”(hj Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M hjŠubjÉ)�”}”(hhh]”jM)�”}”(hŒjiffies64 value”h]”hŒjiffies64 value”…”�”}”(hj!Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjã‰ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjCŠh]”hŒReturn”…”�”}”(hjEŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M hjã‰ubjM)�”}”(hŒmilliseconds value”h]”hŒmilliseconds value”…”�”}”(hjYŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M hjã‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒnsecs_to_jiffies64 (C function)”Œc.nsecs_to_jiffies64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒu64 nsecs_to_jiffies64 (u64 n)”h]”hù)�”}”(hŒu64 nsecs_to_jiffies64(u64 n)”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj‹Šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�ŠŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒnsecs_to_jiffies64”sbŒc.nsecs_to_jiffies64”†”asbuh1hhj„Šh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Šh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„Šh²hh³j¬Šh´Mubhÿ)�”}”(hŒnsecs_to_jiffies64”h]”j)�”}”(hj©Šh]”hŒnsecs_to_jiffies64”…”�”}”(hj¿Šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»Šubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj„Šh²hh³j¬Šh´Mubj4)�”}”(hŒ(u64 n)”h]”j:)�”}”(hŒu64 n”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjÝŠh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jߊŒmodname”NŒ classname”Njwjz)�”}”j}]”j§ŠŒc.nsecs_to_jiffies64”†”asbuh1hhjÖŠubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûŠh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖŠubj)�”}”(hjh]”hŒn”…”�”}”(hj ‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÒŠubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj„Šh²hh³j¬Šh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj€Šh²hh³j¬Šh´Mubah}”(h]”j{Šah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¬Šh´Mhj}Šh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!Convert nsecs in u64 to jiffies64”h]”hŒ!Convert nsecs in u64 to jiffies64”…”�”}”(hj2‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mhj/‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj}Šh²hh³j¬Šh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjJ‹jHjJ‹jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXÄ**Parameters** ``u64 n`` nsecs in u64 **Description** Unlike {m,u}secs_to_jiffies, type of input is not unsigned int but u64. And this doesn't return MAX_JIFFY_OFFSET since this function is designed for scheduler, not for use in device drivers to calculate timeout value. **note** NSEC_PER_SEC = 10^9 = (5^9 * 2^9) = (1953125 * 512) ULLONG_MAX ns = 18446744073.709551615 secs = about 584 years **Return** nsecs converted to jiffies64 value”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjT‹h]”hŒ Parameters”…”�”}”(hjV‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MhjN‹ubj¤)�”}”(hhh]”j©)�”}”(hŒ``u64 n`` nsecs in u64 ”h]”(j¯)�”}”(hŒ ``u64 n``”h]”jS)�”}”(hjs‹h]”hŒu64 n”…”�”}”(hju‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjq‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mhjm‹ubjÉ)�”}”(hhh]”jM)�”}”(hŒ nsecs in u64”h]”hŒ nsecs in u64”…”�”}”(hjŒ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jˆ‹h´Mhj‰‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjm‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆ‹h´Mhjj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjN‹ubjM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MhjN‹ubjM)�”}”(hŒÙUnlike {m,u}secs_to_jiffies, type of input is not unsigned int but u64. And this doesn't return MAX_JIFFY_OFFSET since this function is designed for scheduler, not for use in device drivers to calculate timeout value.”h]”hŒÛUnlike {m,u}secs_to_jiffies, type of input is not unsigned int but u64. And this doesn’t return MAX_JIFFY_OFFSET since this function is designed for scheduler, not for use in device drivers to calculate timeout value.”…”�”}”(hjÄ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MhjN‹ubjM)�”}”(hŒ**note**”h]”jŽ)�”}”(hjÕ‹h]”hŒnote”…”�”}”(hj׋h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M!hjN‹ubji)�”}”(hŒqNSEC_PER_SEC = 10^9 = (5^9 * 2^9) = (1953125 * 512) ULLONG_MAX ns = 18446744073.709551615 secs = about 584 years ”h]”jM)�”}”(hŒpNSEC_PER_SEC = 10^9 = (5^9 * 2^9) = (1953125 * 512) ULLONG_MAX ns = 18446744073.709551615 secs = about 584 years”h]”hŒpNSEC_PER_SEC = 10^9 = (5^9 * 2^9) = (1953125 * 512) ULLONG_MAX ns = 18446744073.709551615 secs = about 584 years”…”�”}”(hjï‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M"hjë‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jý‹h´M"hjN‹ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjŒh]”hŒReturn”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M%hjN‹ubjM)�”}”(hŒ"nsecs converted to jiffies64 value”h]”hŒ"nsecs converted to jiffies64 value”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M&hjN‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒnsecs_to_jiffies (C function)”Œc.nsecs_to_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&unsigned long nsecs_to_jiffies (u64 n)”h]”hù)�”}”(hŒ%unsigned long nsecs_to_jiffies(u64 n)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjKŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjGŒh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZŒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGŒh²hh³jYŒh´M;ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjhŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjGŒh²hh³jYŒh´M;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvŒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGŒh²hh³jYŒh´M;ubhÿ)�”}”(hŒnsecs_to_jiffies”h]”j)�”}”(hŒnsecs_to_jiffies”h]”hŒnsecs_to_jiffies”…”�”}”(hjˆŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„Œubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjGŒh²hh³jYŒh´M;ubj4)�”}”(hŒ(u64 n)”h]”j:)�”}”(hŒu64 n”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj§Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j©ŒŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŠŒsbŒc.nsecs_to_jiffies”†”asbuh1hhj ŒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇŒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Œubj)�”}”(hjh]”hŒn”…”�”}”(hjÕŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœŒubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjGŒh²hh³jYŒh´M;ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjCŒh²hh³jYŒh´M;ubah}”(h]”j>Œah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jYŒh´M;hj@Œh²hubj4)�”}”(hhh]”jM)�”}”(hŒConvert nsecs in u64 to jiffies”h]”hŒConvert nsecs in u64 to jiffies”…”�”}”(hjþŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M;hjûŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj@Œh²hh³jYŒh´M;ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�jHj�jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXÂ**Parameters** ``u64 n`` nsecs in u64 **Description** Unlike {m,u}secs_to_jiffies, type of input is not unsigned int but u64. And this doesn't return MAX_JIFFY_OFFSET since this function is designed for scheduler, not for use in device drivers to calculate timeout value. **note** NSEC_PER_SEC = 10^9 = (5^9 * 2^9) = (1953125 * 512) ULLONG_MAX ns = 18446744073.709551615 secs = about 584 years **Return** nsecs converted to jiffies value”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M?hj�ubj¤)�”}”(hhh]”j©)�”}”(hŒ``u64 n`` nsecs in u64 ”h]”(j¯)�”}”(hŒ ``u64 n``”h]”jS)�”}”(hj?�h]”hŒu64 n”…”�”}”(hjA�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M=hj9�ubjÉ)�”}”(hhh]”jM)�”}”(hŒ nsecs in u64”h]”hŒ nsecs in u64”…”�”}”(hjX�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jT�h´M=hjU�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jT�h´M=hj6�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjz�h]”hŒ Description”…”�”}”(hj|�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M?hj�ubjM)�”}”(hŒÙUnlike {m,u}secs_to_jiffies, type of input is not unsigned int but u64. And this doesn't return MAX_JIFFY_OFFSET since this function is designed for scheduler, not for use in device drivers to calculate timeout value.”h]”hŒÛUnlike {m,u}secs_to_jiffies, type of input is not unsigned int but u64. And this doesn’t return MAX_JIFFY_OFFSET since this function is designed for scheduler, not for use in device drivers to calculate timeout value.”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M>hj�ubjM)�”}”(hŒ**note**”h]”jŽ)�”}”(hj¡�h]”hŒnote”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŸ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MBhj�ubji)�”}”(hŒqNSEC_PER_SEC = 10^9 = (5^9 * 2^9) = (1953125 * 512) ULLONG_MAX ns = 18446744073.709551615 secs = about 584 years ”h]”jM)�”}”(hŒpNSEC_PER_SEC = 10^9 = (5^9 * 2^9) = (1953125 * 512) ULLONG_MAX ns = 18446744073.709551615 secs = about 584 years”h]”hŒpNSEC_PER_SEC = 10^9 = (5^9 * 2^9) = (1953125 * 512) ULLONG_MAX ns = 18446744073.709551615 secs = about 584 years”…”�”}”(hj»�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MChj·�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jÉ�h´MChj�ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÒ�h]”hŒReturn”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MFhj�ubjM)�”}”(hŒ nsecs converted to jiffies value”h]”hŒ nsecs converted to jiffies value”…”�”}”(hjè�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MGhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ timespec64_add_safe (C function)”Œc.timespec64_add_safe”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ`struct timespec64 timespec64_add_safe (const struct timespec64 lhs, const struct timespec64 rhs)”h]”hù)�”}”(hŒ_struct timespec64 timespec64_add_safe(const struct timespec64 lhs, const struct timespec64 rhs)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjŽh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MPubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽh²hh³j$Žh´MPubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj6Žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3Žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j8ŽŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒtimespec64_add_safe”sbŒc.timespec64_add_safe”†”asbuh1hhjŽh²hh³j$Žh´MPubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWŽh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽh²hh³j$Žh´MPubhÿ)�”}”(hŒtimespec64_add_safe”h]”j)�”}”(hjTŽh]”hŒtimespec64_add_safe”…”�”}”(hjiŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeŽubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŽh²hh³j$Žh´MPubj4)�”}”(hŒ:(const struct timespec64 lhs, const struct timespec64 rhs)”h]”(j:)�”}”(hŒconst struct timespec64 lhs”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj„Žh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj€ŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Žubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjŸŽh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj€ŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Žubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj½Žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¿ŽŒmodname”NŒ classname”Njwjz)�”}”j}]”jRŽŒc.timespec64_add_safe”†”asbuh1hhj€ŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛŽh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Žubj)�”}”(hŒlhs”h]”hŒlhs”…”�”}”(hjéŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|Žubj:)�”}”(hŒconst struct timespec64 rhs”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjþŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþŽubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjþŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþŽubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj;�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j=�Œmodname”NŒ classname”Njwjz)�”}”j}]”jRŽŒc.timespec64_add_safe”†”asbuh1hhjþŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþŽubj)�”}”(hŒrhs”h]”hŒrhs”…”�”}”(hjg�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|Žubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŽh²hh³j$Žh´MPubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŽh²hh³j$Žh´MPubah}”(h]”j Žah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j$Žh´MPhj Žh²hubj4)�”}”(hhh]”jM)�”}”(hŒ=Add two timespec64 values and do a safety check for overflow.”h]”hŒ=Add two timespec64 values and do a safety check for overflow.”…”�”}”(hj‘�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MPhjŽ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj Žh²hh³j$Žh´MPubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj©�jHj©�jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX(**Parameters** ``const struct timespec64 lhs`` first (left) timespec64 to add ``const struct timespec64 rhs`` second (right) timespec64 to add **Description** It's assumed that both values are valid (>= 0). And, each timespec64 is in normalized form. **Return** sum of **lhs** + **rhs**”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MThj­�ubj¤)�”}”(hhh]”(j©)�”}”(hŒ?``const struct timespec64 lhs`` first (left) timespec64 to add ”h]”(j¯)�”}”(hŒ``const struct timespec64 lhs``”h]”jS)�”}”(hjÒ�h]”hŒconst struct timespec64 lhs”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÐ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MRhjÌ�ubjÉ)�”}”(hhh]”jM)�”}”(hŒfirst (left) timespec64 to add”h]”hŒfirst (left) timespec64 to add”…”�”}”(hjë�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jç�h´MRhjè�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÌ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jç�h´MRhjÉ�ubj©)�”}”(hŒA``const struct timespec64 rhs`` second (right) timespec64 to add ”h]”(j¯)�”}”(hŒ``const struct timespec64 rhs``”h]”jS)�”}”(hj �h]”hŒconst struct timespec64 rhs”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MShj�ubjÉ)�”}”(hhh]”jM)�”}”(hŒ second (right) timespec64 to add”h]”hŒ second (right) timespec64 to add”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j �h´MShj!�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j �h´MShjÉ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj­�ubjM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MUhj­�ubjM)�”}”(hŒ[It's assumed that both values are valid (>= 0). And, each timespec64 is in normalized form.”h]”hŒ]It’s assumed that both values are valid (>= 0). And, each timespec64 is in normalized form.”…”�”}”(hj\�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MThj­�ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjm�h]”hŒReturn”…”�”}”(hjo�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MWhj­�ubjM)�”}”(hŒsum of **lhs** + **rhs**”h]”(hŒsum of ”…”�”}”(hjƒ�h²hh³Nh´NubjŽ)�”}”(hŒ**lhs**”h]”hŒlhs”…”�”}”(hj‹�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒ�ubhŒ + ”…”�”}”(hjƒ�h²hh³Nh´NubjŽ)�”}”(hŒ**rhs**”h]”hŒrhs”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MXhj­�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒget_timespec64 (C function)”Œc.get_timespec64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒVint get_timespec64 (struct timespec64 *ts, const struct __kernel_timespec __user *uts)”h]”hù)�”}”(hŒUint get_timespec64(struct timespec64 *ts, const struct __kernel_timespec __user *uts)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÒ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÎ�h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÎ�h²hh³jà�h´Mlubhÿ)�”}”(hŒget_timespec64”h]”j)�”}”(hŒget_timespec64”h]”hŒget_timespec64”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjï�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÎ�h²hh³jà�h´Mlubj4)�”}”(hŒC(struct timespec64 *ts, const struct __kernel_timespec __user *uts)”h]”(j:)�”}”(hŒstruct timespec64 *ts”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj ‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ‘ubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj-‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j/‘Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjõ�sbŒc.get_timespec64”†”asbuh1hhj ‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ‘ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj[‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ‘ubj)�”}”(hŒts”h]”hŒts”…”�”}”(hjh‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‘ubj:)�”}”(hŒ*const struct __kernel_timespec __user *uts”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj�‘h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj}‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}‘ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjœ‘h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj}‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}‘ubh)�”}”(hhh]”j)�”}”(hŒ__kernel_timespec”h]”hŒ__kernel_timespec”…”�”}”(hjº‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¼‘Œmodname”NŒ classname”Njwjz)�”}”j}]”jI‘Œc.get_timespec64”†”asbuh1hhj}‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}‘ubhŒ__user”…”�”}”(hj}‘h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}‘ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjø‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj}‘ubj)�”}”(hŒuts”h]”hŒuts”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‘ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÎ�h²hh³jà�h´Mlubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÊ�h²hh³jà�h´Mlubah}”(h]”jÅ�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jà�h´MlhjÇ�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ'get user's time value into kernel space”h]”hŒ)get user’s time value into kernel space”…”�”}”(hj/’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mlhj,’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÇ�h²hh³jà�h´Mlubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjG’jHjG’jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXE**Parameters** ``struct timespec64 *ts`` destination :c:type:`struct timespec64 ` ``const struct __kernel_timespec __user *uts`` user's time value as :c:type:`struct __kernel_timespec <__kernel_timespec>` **Description** Handles compat or 32-bit modes. **Return** 0 on success or negative errno on error”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjQ’h]”hŒ Parameters”…”�”}”(hjS’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjO’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MphjK’ubj¤)�”}”(hhh]”(j©)�”}”(hŒO``struct timespec64 *ts`` destination :c:type:`struct timespec64 ` ”h]”(j¯)�”}”(hŒ``struct timespec64 *ts``”h]”jS)�”}”(hjp’h]”hŒstruct timespec64 *ts”…”�”•¤}”(hjr’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjn’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mmhjj’ubjÉ)�”}”(hhh]”jM)�”}”(hŒ4destination :c:type:`struct timespec64 `”h]”(hŒ destination ”…”�”}”(hj‰’h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct timespec64 `”h]”jS)�”}”(hj“’h]”hŒstruct timespec64”…”�”}”(hj•’h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj‘’ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ timespec64”uh1hh³j…’h´Mmhj‰’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j…’h´Mmhj†’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…’h´Mmhjg’ubj©)�”}”(hŒ{``const struct __kernel_timespec __user *uts`` user's time value as :c:type:`struct __kernel_timespec <__kernel_timespec>` ”h]”(j¯)�”}”(hŒ.``const struct __kernel_timespec __user *uts``”h]”jS)�”}”(hjÈ’h]”hŒ*const struct __kernel_timespec __user *uts”…”�”}”(hjÊ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MnhjÂ’ubjÉ)�”}”(hhh]”jM)�”}”(hŒKuser's time value as :c:type:`struct __kernel_timespec <__kernel_timespec>`”h]”(hŒuser’s time value as ”…”�”}”(hjá’h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct __kernel_timespec <__kernel_timespec>`”h]”jS)�”}”(hjë’h]”hŒstruct __kernel_timespec”…”�”}”(hjí’h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjé’ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ__kernel_timespec”uh1hh³jÝ’h´Mnhjá’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÝ’h´MnhjÞ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÂ’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÝ’h´Mnhjg’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjK’ubjM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MphjK’ubjM)�”}”(hŒHandles compat or 32-bit modes.”h]”hŒHandles compat or 32-bit modes.”…”�”}”(hj8“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MohjK’ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjI“h]”hŒReturn”…”�”}”(hjK“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjG“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MqhjK’ubjM)�”}”(hŒ'0 on success or negative errno on error”h]”hŒ'0 on success or negative errno on error”…”�”}”(hj_“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MrhjK’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒput_timespec64 (C function)”Œc.put_timespec64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒVint put_timespec64 (const struct timespec64 *ts, struct __kernel_timespec __user *uts)”h]”hù)�”}”(hŒUint put_timespec64(const struct timespec64 *ts, struct __kernel_timespec __user *uts)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjŽ“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŠ“h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MŒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠ“h²hh³jœ“h´MŒubhÿ)�”}”(hŒput_timespec64”h]”j)�”}”(hŒput_timespec64”h]”hŒput_timespec64”…”�”}”(hj¯“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«“ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŠ“h²hh³jœ“h´MŒubj4)�”}”(hŒC(const struct timespec64 *ts, struct __kernel_timespec __user *uts)”h]”(j:)�”}”(hŒconst struct timespec64 *ts”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjË“h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÇ“ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ“h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇ“ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjæ“h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÇ“ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó“h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇ“ubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j”Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj±“sbŒc.put_timespec64”†”asbuh1hhjÇ“ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇ“ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj2”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÇ“ubj)�”}”(hŒts”h]”hŒts”…”�”}”(hj?”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇ“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÓubj:)�”}”(hŒ$struct __kernel_timespec __user *uts”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjX”h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjT”ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjT”ubh)�”}”(hhh]”j)�”}”(hŒ__kernel_timespec”h]”hŒ__kernel_timespec”…”�”}”(hjv”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jx”Œmodname”NŒ classname”Njwjz)�”}”j}]”j ”Œc.put_timespec64”†”asbuh1hhjT”ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj””h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjT”ubhŒ__user”…”�”}”(hjT”h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjT”ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj´”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjT”ubj)�”}”(hŒuts”h]”hŒuts”…”�”}”(hjÁ”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjT”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÓubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŠ“h²hh³jœ“h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj†“h²hh³jœ“h´MŒubah}”(h]”j�“ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jœ“h´MŒhjƒ“h²hubj4)�”}”(hhh]”jM)�”}”(hŒUconvert timespec64 value to __kernel_timespec format and copy the latter to userspace”h]”hŒUconvert timespec64 value to __kernel_timespec format and copy the latter to userspace”…”�”}”(hjë”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MŒhjè”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjƒ“h²hh³jœ“h´MŒubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj•jHj•jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒÿ**Parameters** ``const struct timespec64 *ts`` input :c:type:`struct timespec64 ` ``struct __kernel_timespec __user *uts`` user's :c:type:`struct __kernel_timespec <__kernel_timespec>` **Return** 0 on success or negative errno on error”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M�hj•ubj¤)�”}”(hhh]”(j©)�”}”(hŒO``const struct timespec64 *ts`` input :c:type:`struct timespec64 ` ”h]”(j¯)�”}”(hŒ``const struct timespec64 *ts``”h]”jS)�”}”(hj,•h]”hŒconst struct timespec64 *ts”…”�”}”(hj.•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj*•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MŽhj&•ubjÉ)�”}”(hhh]”jM)�”}”(hŒ.input :c:type:`struct timespec64 `”h]”(hŒinput ”…”�”}”(hjE•h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct timespec64 `”h]”jS)�”}”(hjO•h]”hŒstruct timespec64”…”�”}”(hjQ•h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjM•ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ timespec64”uh1hh³jA•h´MŽhjE•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jA•h´MŽhjB•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj&•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jA•h´MŽhj#•ubj©)�”}”(hŒg``struct __kernel_timespec __user *uts`` user's :c:type:`struct __kernel_timespec <__kernel_timespec>` ”h]”(j¯)�”}”(hŒ(``struct __kernel_timespec __user *uts``”h]”jS)�”}”(hj„•h]”hŒ$struct __kernel_timespec __user *uts”…”�”}”(hj†•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‚•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M�hj~•ubjÉ)�”}”(hhh]”jM)�”}”(hŒ=user's :c:type:`struct __kernel_timespec <__kernel_timespec>`”h]”(hŒ user’s ”…”�”}”(hj�•h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct __kernel_timespec <__kernel_timespec>`”h]”jS)�”}”(hj§•h]”hŒstruct __kernel_timespec”…”�”}”(hj©•h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj¥•ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ__kernel_timespec”uh1hh³j™•h´M�hj�•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj•ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÞ•h]”hŒReturn”…”�”}”(hjà•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M‘hj•ubjM)�”}”(hŒ'0 on success or negative errno on error”h]”hŒ'0 on success or negative errno on error”…”�”}”(hjô•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M‘hj•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒget_old_timespec32 (C function)”Œc.get_old_timespec32”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒFint get_old_timespec32 (struct timespec64 *ts, const void __user *uts)”h]”hù)�”}”(hŒEint get_old_timespec32(struct timespec64 *ts, const void __user *uts)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj#–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj–h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MºubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj–h²hh³j1–h´Mºubhÿ)�”}”(hŒget_old_timespec32”h]”j)�”}”(hŒget_old_timespec32”h]”hŒget_old_timespec32”…”�”}”(hjD–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj–h²hh³j1–h´Mºubj4)�”}”(hŒ/(struct timespec64 *ts, const void __user *uts)”h]”(j:)�”}”(hŒstruct timespec64 *ts”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj`–h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj\–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\–ubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj~–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j€–Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjF–sbŒc.get_old_timespec32”†”asbuh1hhj\–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\–ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¬–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj\–ubj)�”}”(hŒts”h]”hŒts”…”�”}”(hj¹–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjX–ubj:)�”}”(hŒconst void __user *uts”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjÒ–h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjΖubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjΖubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjí–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjΖubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjΖubhŒ__user”…”�”}”(hjΖh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj —h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjΖubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjΖubj)�”}”(hŒuts”h]”hŒuts”…”�”}”(hj(—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjΖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjX–ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj–h²hh³j1–h´Mºubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj–h²hh³j1–h´Mºubah}”(h]”j–ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j1–h´Mºhj–h²hubj4)�”}”(hhh]”jM)�”}”(hŒ2get user's old-format time value into kernel space”h]”hŒ4get user’s old-format time value into kernel space”…”�”}”(hjR—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MºhjO—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–h²hh³j1–h´Mºubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjj—jHjj—jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXC**Parameters** ``struct timespec64 *ts`` destination :c:type:`struct timespec64 ` ``const void __user *uts`` user's old-format time value (:c:type:`struct old_timespec32 `) **Description** Handles X86_X32_ABI compatibility conversion. **Return** 0 on success or negative errno on error”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjt—h]”hŒ Parameters”…”�”}”(hjv—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjr—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M¾hjn—ubj¤)�”}”(hhh]”(j©)�”}”(hŒO``struct timespec64 *ts`` destination :c:type:`struct timespec64 ` ”h]”(j¯)�”}”(hŒ``struct timespec64 *ts``”h]”jS)�”}”(hj“—h]”hŒstruct timespec64 *ts”…”�”}”(hj•—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M»hj�—ubjÉ)�”}”(hhh]”jM)�”}”(hŒ4destination :c:type:`struct timespec64 `”h]”(hŒ destination ”…”�”}”(hj¬—h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct timespec64 `”h]”jS)�”}”(hj¶—h]”hŒstruct timespec64”…”�”}”(hj¸—h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj´—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ timespec64”uh1hh³j¨—h´M»hj¬—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œk``const void __user *uts`` user's old-format time value (:c:type:`struct old_timespec32 `) ”h]”(j¯)�”}”(hŒ``const void __user *uts``”h]”jS)�”}”(hjë—h]”hŒconst void __user *uts”…”�”}”(hjí—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjé—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M¼hjå—ubjÉ)�”}”(hhh]”jM)�”}”(hŒOuser's old-format time value (:c:type:`struct old_timespec32 `)”h]”(hŒ user’s old-format time value (”…”�”}”(hj˜h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct old_timespec32 `”h]”jS)�”}”(hj˜h]”hŒstruct old_timespec32”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj ˜ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œold_timespec32”uh1hh³j˜h´M¼hj˜ubhŒ)”…”�”}”(hj˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjn—ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjI˜h]”hŒ Description”…”�”}”(hjK˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjG˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M¾hjn—ubjM)�”}”(hŒ-Handles X86_X32_ABI compatibility conversion.”h]”hŒ-Handles X86_X32_ABI compatibility conversion.”…”�”}”(hj_˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M½hjn—ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjp˜h]”hŒReturn”…”�”}”(hjr˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjn˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M¿hjn—ubjM)�”}”(hŒ'0 on success or negative errno on error”h]”hŒ'0 on success or negative errno on error”…”�”}”(hj†˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÀhjn—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒput_old_timespec32 (C function)”Œc.put_old_timespec32”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒFint put_old_timespec32 (const struct timespec64 *ts, void __user *uts)”h]”hù)�”}”(hŒEint put_old_timespec32(const struct timespec64 *ts, void __user *uts)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjµ˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj±˜h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÌubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjĘh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±˜h²hh³jØh´MÌubhÿ)�”}”(hŒput_old_timespec32”h]”j)�”}”(hŒput_old_timespec32”h]”hŒput_old_timespec32”…”�”}”(hjÖ˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒ˜ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj±˜h²hh³jØh´MÌubj4)�”}”(hŒ/(const struct timespec64 *ts, void __user *uts)”h]”(j:)�”}”(hŒconst struct timespec64 *ts”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjò˜h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjî˜ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ˜h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî˜ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjî˜ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî˜ubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj+™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j-™Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjؘsbŒc.put_old_timespec32”†”asbuh1hhjî˜ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî˜ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjY™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjî˜ubj)�”}”(hŒts”h]”hŒts”…”�”}”(hjf™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê˜ubj:)�”}”(hŒvoid __user *uts”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj{™ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{™ubhŒ__user”…”�”}”(hj{™h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{™ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj­™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj{™ubj)�”}”(hŒuts”h]”hŒuts”…”�”}”(hjº™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê˜ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj±˜h²hh³jØh´MÌubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj­˜h²hh³jØh´MÌubah}”(h]”j¨˜ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jØh´MÌhjª˜h²hubj4)�”}”(hhh]”jM)�”}”(hŒmconvert timespec64 value to :c:type:`struct old_timespec32 ` and copy the latter to userspace”h]”(hŒconvert timespec64 value to ”…”�”}”(hjä™h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct old_timespec32 `”h]”jS)�”}”(hjî™h]”hŒstruct old_timespec32”…”�”}”(hjð™h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjì™ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwjz)�”}”j}]”jG™Œc.put_old_timespec32”†”asbjB€Œold_timespec32”uh1hh³jqnh´Mƒhjä™ubhŒ! and copy the latter to userspace”…”�”}”(hjä™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÌhjá™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjª˜h²hh³jØh´MÌubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj$šjHj$šjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX%**Parameters** ``const struct timespec64 *ts`` input :c:type:`struct timespec64 ` ``void __user *uts`` user's :c:type:`struct old_timespec32 ` **Description** Handles X86_X32_ABI compatibility conversion. **Return** 0 on success or negative errno on error”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj.šh]”hŒ Parameters”…”�”}”(hj0šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,šubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÐhj(šubj¤)�”}”(hhh]”(j©)�”}”(hŒO``const struct timespec64 *ts`` input :c:type:`struct timespec64 ` ”h]”(j¯)�”}”(hŒ``const struct timespec64 *ts``”h]”jS)�”}”(hjMšh]”hŒconst struct timespec64 *ts”…”�”}”(hjOšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKšubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÎhjGšubjÉ)�”}”(hhh]”jM)�”}”(hŒ.input :c:type:`struct timespec64 `”h]”(hŒinput ”…”�”}”(hjfšh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct timespec64 `”h]”jS)�”}”(hjpšh]”hŒstruct timespec64”…”�”}”(hjršh²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjnšubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ timespec64”uh1hh³jbšh´MÎhjfšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jbšh´MÎhjcšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbšh´MÎhjDšubj©)�”}”(hŒM``void __user *uts`` user's :c:type:`struct old_timespec32 ` ”h]”(j¯)�”}”(hŒ``void __user *uts``”h]”jS)�”}”(hj¥šh]”hŒvoid __user *uts”…”�”}”(hj§šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£šubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÏhjŸšubjÉ)�”}”(hhh]”jM)�”}”(hŒ7user's :c:type:`struct old_timespec32 `”h]”(hŒ user’s ”…”�”}”(hj¾šh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct old_timespec32 `”h]”jS)�”}”(hjÈšh]”hŒstruct old_timespec32”…”�”}”(hjÊšh²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjÆšubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œold_timespec32”uh1hh³jºšh´MÏhj¾šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jºšh´MÏhj»šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŸšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jºšh´MÏhjDšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj(šubjM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÑhj(šubjM)�”}”(hŒ-Handles X86_X32_ABI compatibility conversion.”h]”hŒ-Handles X86_X32_ABI compatibility conversion.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÐhj(šubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj&›h]”hŒReturn”…”�”}”(hj(›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÒhj(šubjM)�”}”(hŒ'0 on success or negative errno on error”h]”hŒ'0 on success or negative errno on error”…”�”}”(hj<›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MÓhj(šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒget_itimerspec64 (C function)”Œc.get_itimerspec64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ\int get_itimerspec64 (struct itimerspec64 *it, const struct __kernel_itimerspec __user *uit)”h]”hù)�”}”(hŒ[int get_itimerspec64(struct itimerspec64 *it, const struct __kernel_itimerspec __user *uit)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjk›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjg›h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MßubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjg›h²hh³jy›h´Mßubhÿ)�”}”(hŒget_itimerspec64”h]”j)�”}”(hŒget_itimerspec64”h]”hŒget_itimerspec64”…”�”}”(hjŒ›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆ›ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjg›h²hh³jy›h´Mßubj4)�”}”(hŒG(struct itimerspec64 *it, const struct __kernel_itimerspec __user *uit)”h]”(j:)�”}”(hŒstruct itimerspec64 *it”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¨›h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¤›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤›ubh)�”}”(hhh]”j)�”}”(hŒ itimerspec64”h]”hŒ itimerspec64”…”�”}”(hjÆ›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÈ›Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŽ›sbŒc.get_itimerspec64”†”asbuh1hhj¤›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤›ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjô›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¤›ubj)�”}”(hŒit”h]”hŒit”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ›ubj:)�”}”(hŒ,const struct __kernel_itimerspec __user *uit”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjœubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'œh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj5œh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjœubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBœh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœubh)�”}”(hhh]”j)�”}”(hŒ__kernel_itimerspec”h]”hŒ__kernel_itimerspec”…”�”}”(hjSœh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jUœŒmodname”NŒ classname”Njwjz)�”}”j}]”j⛌c.get_itimerspec64”†”asbuh1hhjœubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqœh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœubhŒ__user”…”�”}”(hjœh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒœh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‘œh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjœubj)�”}”(hŒuit”h]”hŒuit”…”�”}”(hjžœh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ›ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjg›h²hh³jy›h´Mßubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjc›h²hh³jy›h´Mßubah}”(h]”j^›ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jy›h´Mßhj`›h²hubj4)�”}”(hhh]”jM)�”}”(hŒWget user's :c:type:`struct __kernel_itimerspec <__kernel_itimerspec>` into kernel space”h]”(hŒ get user’s ”…”�”}”(hjÈœh²hh³Nh´Nubh)�”}”(hŒ::c:type:`struct __kernel_itimerspec <__kernel_itimerspec>`”h]”jS)�”}”(hjÒœh]”hŒstruct __kernel_itimerspec”…”�”}”(hjÔœh²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjМubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwjz)�”}”j}]”j⛌c.get_itimerspec64”†”asbjB€Œ__kernel_itimerspec”uh1hh³jqnh´MƒhjÈœubhŒ into kernel space”…”�”}”(hjÈœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MßhjÅœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj`›h²hh³jy›h´Mßubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�jHj�jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX**Parameters** ``struct itimerspec64 *it`` destination :c:type:`struct itimerspec64 ` ``const struct __kernel_itimerspec __user *uit`` user's :c:type:`struct __kernel_itimerspec <__kernel_itimerspec>` **Return** 0 on success or negative errno on error”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mãhj �ubj¤)�”}”(hhh]”(j©)�”}”(hŒU``struct itimerspec64 *it`` destination :c:type:`struct itimerspec64 ` ”h]”(j¯)�”}”(hŒ``struct itimerspec64 *it``”h]”jS)�”}”(hj1�h]”hŒstruct itimerspec64 *it”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj/�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Màhj+�ubjÉ)�”}”(hhh]”jM)�”}”(hŒ8destination :c:type:`struct itimerspec64 `”h]”(hŒ destination ”…”�”}”(hjJ�h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct itimerspec64 `”h]”jS)�”}”(hjT�h]”hŒstruct itimerspec64”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjR�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ itimerspec64”uh1hh³jF�h´MàhjJ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jF�h´MàhjG�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj+�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jF�h´Màhj(�ubj©)�”}”(hŒs``const struct __kernel_itimerspec __user *uit`` user's :c:type:`struct __kernel_itimerspec <__kernel_itimerspec>` ”h]”(j¯)�”}”(hŒ0``const struct __kernel_itimerspec __user *uit``”h]”jS)�”}”(hj‰�h]”hŒ,const struct __kernel_itimerspec __user *uit”…”�”}”(hj‹�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‡�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Máhjƒ�ubjÉ)�”}”(hhh]”jM)�”}”(hŒAuser's :c:type:`struct __kernel_itimerspec <__kernel_itimerspec>`”h]”(hŒ user’s ”…”�”}”(hj¢�h²hh³Nh´Nubh)�”}”(hŒ::c:type:`struct __kernel_itimerspec <__kernel_itimerspec>`”h]”jS)�”}”(hj¬�h]”hŒstruct __kernel_itimerspec”…”�”}”(hj®�h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjª�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ__kernel_itimerspec”uh1hh³jž�h´Máhj¢�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj �ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjã�h]”hŒReturn”…”�”}”(hjå�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjá�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mãhj �ubjM)�”}”(hŒ'0 on success or negative errno on error”h]”hŒ'0 on success or negative errno on error”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mãhj �ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒput_itimerspec64 (C function)”Œc.put_itimerspec64”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ\int put_itimerspec64 (const struct itimerspec64 *it, struct __kernel_itimerspec __user *uit)”h]”hù)�”}”(hŒ[int put_itimerspec64(const struct itimerspec64 *it, struct __kernel_itimerspec __user *uit)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj(žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$žh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MõubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$žh²hh³j6žh´Mõubhÿ)�”}”(hŒput_itimerspec64”h]”j)�”}”(hŒput_itimerspec64”h]”hŒput_itimerspec64”…”�”}”(hjIžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEžubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj$žh²hh³j6žh´Mõubj4)�”}”(hŒG(const struct itimerspec64 *it, struct __kernel_itimerspec __user *uit)”h]”(j:)�”}”(hŒconst struct itimerspec64 *it”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hježh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjažubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjržh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjažubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj€žh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjažubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjažubh)�”}”(hhh]”j)�”}”(hŒ itimerspec64”h]”hŒ itimerspec64”…”�”}”(hjžžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j žŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjKžsbŒc.put_itimerspec64”†”asbuh1hhjažubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjažubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÌžh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjažubj)�”}”(hŒit”h]”hŒit”…”�”}”(hjÙžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjažubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]žubj:)�”}”(hŒ&struct __kernel_itimerspec __user *uit”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjòžh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjîžubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿžh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjîžubh)�”}”(hhh]”j)�”}”(hŒ__kernel_itimerspec”h]”hŒ__kernel_itimerspec”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŸŒmodname”NŒ classname”Njwjz)�”}”j}]”jºžŒc.put_itimerspec64”†”asbuh1hhjîžubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjîžubhŒ__user”…”�”}”(hjîžh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjîžubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjNŸh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjîžubj)�”}”(hŒuit”h]”hŒuit”…”�”}”(hj[Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]žubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj$žh²hh³j6žh´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj žh²hh³j6žh´Mõubah}”(h]”jžah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j6žh´Mõhjžh²hubj4)�”}”(hhh]”jM)�”}”(hŒsconvert :c:type:`struct itimerspec64 ` to __kernel_itimerspec format and copy the latter to userspace”h]”(hŒconvert ”…”�”}”(hj…Ÿh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct itimerspec64 `”h]”jS)�”}”(hj�Ÿh]”hŒstruct itimerspec64”…”�”}”(hj‘Ÿh²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj�Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwjz)�”}”j}]”jºžŒc.put_itimerspec64”†”asbjB€Œ itimerspec64”uh1hh³jqnh´Mƒhj…ŸubhŒ? to __kernel_itimerspec format and copy the latter to userspace”…”�”}”(hj…Ÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mõhj‚Ÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjžh²hh³j6žh´Mõubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÅŸjHjÅŸjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX **Parameters** ``const struct itimerspec64 *it`` input :c:type:`struct itimerspec64 ` ``struct __kernel_itimerspec __user *uit`` user's :c:type:`struct __kernel_itimerspec <__kernel_itimerspec>` **Return** 0 on success or negative errno on error”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MùhjÉŸubj¤)�”}”(hhh]”(j©)�”}”(hŒU``const struct itimerspec64 *it`` input :c:type:`struct itimerspec64 ` ”h]”(j¯)�”}”(hŒ!``const struct itimerspec64 *it``”h]”jS)�”}”(hjîŸh]”hŒconst struct itimerspec64 *it”…”�”}”(hjðŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjìŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M÷hjèŸubjÉ)�”}”(hhh]”jM)�”}”(hŒ2input :c:type:`struct itimerspec64 `”h]”(hŒinput ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct itimerspec64 `”h]”jS)�”}”(hj h]”hŒstruct itimerspec64”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ itimerspec64”uh1hh³j h´M÷hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œm``struct __kernel_itimerspec __user *uit`` user's :c:type:`struct __kernel_itimerspec <__kernel_itimerspec>` ”h]”(j¯)�”}”(hŒ*``struct __kernel_itimerspec __user *uit``”h]”jS)�”}”(hjF h]”hŒ&struct __kernel_itimerspec __user *uit”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjD ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Møhj@ ubjÉ)�”}”(hhh]”jM)�”}”(hŒAuser's :c:type:`struct __kernel_itimerspec <__kernel_itimerspec>`”h]”(hŒ user’s ”…”�”}”(hj_ h²hh³Nh´Nubh)�”}”(hŒ::c:type:`struct __kernel_itimerspec <__kernel_itimerspec>`”h]”jS)�”}”(hji h]”hŒstruct __kernel_itimerspec”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjg ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ__kernel_itimerspec”uh1hh³j[ h´Møhj_ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÉŸubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj  h]”hŒReturn”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjž ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MúhjÉŸubjM)�”}”(hŒ'0 on success or negative errno on error”h]”hŒ'0 on success or negative errno on error”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MúhjÉŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!get_old_itimerspec32 (C function)”Œc.get_old_itimerspec32”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ_int get_old_itimerspec32 (struct itimerspec64 *its, const struct old_itimerspec32 __user *uits)”h]”hù)�”}”(hŒ^int get_old_itimerspec32(struct itimerspec64 *its, const struct old_itimerspec32 __user *uits)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjá h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjá h²hh³jó h´M ubhÿ)�”}”(hŒget_old_itimerspec32”h]”j)�”}”(hŒget_old_itimerspec32”h]”hŒget_old_itimerspec32”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjá h²hh³jó h´M ubj4)�”}”(hŒF(struct itimerspec64 *its, const struct old_itimerspec32 __user *uits)”h]”(j:)�”}”(hŒstruct itimerspec64 *its”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj"¡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡ubh)�”}”(hhh]”j)�”}”(hŒ itimerspec64”h]”hŒ itimerspec64”…”�”}”(hj@¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jB¡Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¡sbŒc.get_old_itimerspec32”†”asbuh1hhj¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjn¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¡ubj)�”}”(hŒits”h]”hŒits”…”�”}”(hj{¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¡ubj:)�”}”(hŒ*const struct old_itimerspec32 __user *uits”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj”¡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�¡ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¯¡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�¡ubh)�”}”(hhh]”j)�”}”(hŒold_itimerspec32”h]”hŒold_itimerspec32”…”�”}”(hjÍ¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊ¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÏ¡Œmodname”NŒ classname”Njwjz)�”}”j}]”j\¡Œc.get_old_itimerspec32”†”asbuh1hhj�¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�¡ubhŒ__user”…”�”}”(hj�¡h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�¡ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�¡ubj)�”}”(hŒuits”h]”hŒuits”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjá h²hh³jó h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÝ h²hh³jó h´M ubah}”(h]”jØ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jó h´M hjÚ h²hubj4)�”}”(hhh]”jM)�”}”(hŒQget user's :c:type:`struct old_itimerspec32 ` into kernel space”h]”(hŒ get user’s ”…”�”}”(hjB¢h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct old_itimerspec32 `”h]”jS)�”}”(hjL¢h]”hŒstruct old_itimerspec32”…”�”}”(hjN¢h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjJ¢ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwjz)�”}”j}]”j\¡Œc.get_old_itimerspec32”†”asbjB€Œold_itimerspec32”uh1hh³jqnh´MƒhjB¢ubhŒ into kernel space”…”�”}”(hjB¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M hj?¢h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÚ h²hh³jó h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‚¢jHj‚¢jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX **Parameters** ``struct itimerspec64 *its`` destination :c:type:`struct itimerspec64 ` ``const struct old_itimerspec32 __user *uits`` user's :c:type:`struct old_itimerspec32 ` **Return** 0 on success or negative errno on error”h]”(jM)�”}”(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&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mhj†¢ubj¤)�”}”(hhh]”(j©)�”}”(hŒV``struct itimerspec64 *its`` destination :c:type:`struct itimerspec64 ` ”h]”(j¯)�”}”(hŒ``struct itimerspec64 *its``”h]”jS)�”}”(hj«¢h]”hŒstruct itimerspec64 *its”…”�”}”(hj­¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj©¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M hj¥¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒ8destination :c:type:`struct itimerspec64 `”h]”(hŒ destination ”…”�”}”(hjÄ¢h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct itimerspec64 `”h]”jS)�”}”(hj΢h]”hŒstruct itimerspec64”…”�”}”(hjТh²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjÌ¢ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ itimerspec64”uh1hh³jÀ¢h´M hjÄ¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œk``const struct old_itimerspec32 __user *uits`` user's :c:type:`struct old_itimerspec32 ` ”h]”(j¯)�”}”(hŒ.``const struct old_itimerspec32 __user *uits``”h]”jS)�”}”(hj£h]”hŒ*const struct old_itimerspec32 __user *uits”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mhjý¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒ;user's :c:type:`struct old_itimerspec32 `”h]”(hŒ user’s ”…”�”}”(hj£h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct old_itimerspec32 `”h]”jS)�”}”(hj&£h]”hŒstruct old_itimerspec32”…”�”}”(hj(£h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj$£ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œold_itimerspec32”uh1hh³j£h´Mhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j£h´Mhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjý¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j£h´Mhj¢¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj†¢ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj]£h]”hŒReturn”…”�”}”(hj_£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mhj†¢ubjM)�”}”(hŒ'0 on success or negative errno on error”h]”hŒ'0 on success or negative errno on error”…”�”}”(hjs£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mhj†¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!put_old_itimerspec32 (C function)”Œc.put_old_itimerspec32”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ_int put_old_itimerspec32 (const struct itimerspec64 *its, struct old_itimerspec32 __user *uits)”h]”hù)�”}”(hŒ^int put_old_itimerspec32(const struct itimerspec64 *its, struct old_itimerspec32 __user *uits)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¢£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjž£h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjž£h²hh³j°£h´Mubhÿ)�”}”(hŒput_old_itimerspec32”h]”j)�”}”(hŒput_old_itimerspec32”h]”hŒput_old_itimerspec32”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿£ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjž£h²hh³j°£h´Mubj4)�”}”(hŒF(const struct itimerspec64 *its, struct old_itimerspec32 __user *uits)”h]”(j:)�”}”(hŒconst struct itimerspec64 *its”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjߣh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÛ£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛ£ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjú£h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÛ£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛ£ubh)�”}”(hhh]”j)�”}”(hŒ itimerspec64”h]”hŒ itimerspec64”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¤Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÅ£sbŒc.put_old_itimerspec32”†”asbuh1hhjÛ£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛ£ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjF¤h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÛ£ubj)�”}”(hŒits”h]”hŒits”…”�”}”(hjS¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛ£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj×£ubj:)�”}”(hŒ$struct old_itimerspec32 __user *uits”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjl¤h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjh¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh¤ubh)�”}”(hhh]”j)�”}”(hŒold_itimerspec32”h]”hŒold_itimerspec32”…”�”}”(hjФh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒ¤Œmodname”NŒ classname”Njwjz)�”}”j}]”j4¤Œc.put_old_itimerspec32”†”asbuh1hhjh¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh¤ubhŒ__user”…”�”}”(hjh¤h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh¤ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjȤh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjh¤ubj)�”}”(hŒuits”h]”hŒuits”…”�”}”(hjÕ¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj×£ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjž£h²hh³j°£h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjš£h²hh³j°£h´Mubah}”(h]”j•£ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j°£h´Mhj—£h²hubj4)�”}”(hhh]”jM)�”}”(hŒ�convert :c:type:`struct itimerspec64 ` to :c:type:`struct old_itimerspec32 ` and copy the latter to userspace”h]”(hŒconvert ”…”�”}”(hjÿ¤h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct itimerspec64 `”h]”jS)�”}”(hj ¥h]”hŒstruct itimerspec64”…”�”}”(hj ¥h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwjz)�”}”j}]”j4¤Œc.put_old_itimerspec32”†”asbjB€Œ itimerspec64”uh1hh³jqnh´Mƒhjÿ¤ubhŒ to ”…”�”}”(hjÿ¤h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct old_itimerspec32 `”h]”jS)�”}”(hj1¥h]”hŒstruct old_itimerspec32”…”�”}”(hj3¥h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj/¥ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj%¥jB€Œold_itimerspec32”uh1hh³jqnh´Mƒhjÿ¤ubhŒ! and copy the latter to userspace”…”�”}”(hjÿ¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´Mhjü¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj—£h²hh³j°£h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjb¥jHjb¥jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX**Parameters** ``const struct itimerspec64 *its`` input :c:type:`struct itimerspec64 ` ``struct old_itimerspec32 __user *uits`` user's :c:type:`struct old_itimerspec32 ` **Return** 0 on success or negative errno on error”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjl¥h]”hŒ Parameters”…”�”}”(hjn¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M"hjf¥ubj¤)�”}”(hhh]”(j©)�”}”(hŒV``const struct itimerspec64 *its`` input :c:type:`struct itimerspec64 ` ”h]”(j¯)�”}”(hŒ"``const struct itimerspec64 *its``”h]”jS)�”}”(hj‹¥h]”hŒconst struct itimerspec64 *its”…”�”}”(hj�¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‰¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M hj…¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒ2input :c:type:`struct itimerspec64 `”h]”(hŒinput ”…”�”}”(hj¤¥h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct itimerspec64 `”h]”jS)�”}”(hj®¥h]”hŒstruct itimerspec64”…”�”}”(hj°¥h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj¬¥ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ itimerspec64”uh1hh³j ¥h´M hj¤¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œe``struct old_itimerspec32 __user *uits`` user's :c:type:`struct old_itimerspec32 ` ”h]”(j¯)�”}”(hŒ(``struct old_itimerspec32 __user *uits``”h]”jS)�”}”(hjã¥h]”hŒ$struct old_itimerspec32 __user *uits”…”�”}”(hjå¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjá¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M!hjÝ¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒ;user's :c:type:`struct old_itimerspec32 `”h]”(hŒ user’s ”…”�”}”(hjü¥h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct old_itimerspec32 `”h]”jS)�”}”(hj¦h]”hŒstruct old_itimerspec32”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj¦ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œold_itimerspec32”uh1hh³jø¥h´M!hjü¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjf¥ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj=¦h]”hŒReturn”…”�”}”(hj?¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M#hjf¥ubjM)�”}”(hŒ'0 on success or negative errno on error”h]”hŒ'0 on success or negative errno on error”…”�”}”(hjS¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/basics:42: ./kernel/time/time.c”h´M#hjf¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%__round_jiffies_relative (C function)”Œc.__round_jiffies_relative”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAunsigned long __round_jiffies_relative (unsigned long j, int cpu)”h]”hù)�”}”(hŒ@unsigned long __round_jiffies_relative(unsigned long j, int cpu)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj‚¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj~¦h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M†ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~¦h²hh³j�¦h´M†ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjŸ¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj~¦h²hh³j�¦h´M†ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~¦h²hh³j�¦h´M†ubhÿ)�”}”(hŒ__round_jiffies_relative”h]”j)�”}”(hŒ__round_jiffies_relative”h]”hŒ__round_jiffies_relative”…”�”}”(hj¿¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»¦ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj~¦h²hh³j�¦h´M†ubj4)�”}”(hŒ(unsigned long j, int cpu)”h]”(j:)�”}”(hŒunsigned long j”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÛ¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjצubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjצubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj÷¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjצubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjצubj)�”}”(hjŽdh]”hŒj”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjצubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÓ¦ubj:)�”}”(hŒint cpu”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj+§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj'§ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'§ubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjG§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÓ¦ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj~¦h²hh³j�¦h´M†ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjz¦h²hh³j�¦h´M†ubah}”(h]”ju¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�¦h´M†hjw¦h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*function to round jiffies to a full second”h]”hŒ*function to round jiffies to a full second”…”�”}”(hjq§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M†hjn§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjw¦h²hh³j�¦h´M†ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‰§jHj‰§jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXh**Parameters** ``unsigned long j`` the time in (relative) jiffies that should be rounded ``int cpu`` the processor number on which the timeout will happen **Description** __round_jiffies_relative() rounds a time delta in the future (in jiffies) up or down to (approximately) full seconds. This is useful for timers for which the exact time they fire does not matter too much, as long as they fire approximately every X seconds. By rounding these timers to whole seconds, all such timers will fire at the same time, rather than at various times spread out. The goal of this is to have the CPU wake up less, which saves power. The exact rounding is skewed for each processor to avoid all processors firing at the exact same time, which could lead to lock contention or spurious cache line bouncing. The return value is the rounded version of the **j** parameter.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MŠhj�§ubj¤)�”}”(hhh]”(j©)�”}”(hŒJ``unsigned long j`` the time in (relative) jiffies that should be rounded ”h]”(j¯)�”}”(hŒ``unsigned long j``”h]”jS)�”}”(hj²§h]”hŒunsigned long j”…”�”}”(hj´§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M‡hj¬§ubjÉ)�”}”(hhh]”jM)�”}”(hŒ5the time in (relative) jiffies that should be rounded”h]”hŒ5the time in (relative) jiffies that should be rounded”…”�”}”(hj˧h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒB``int cpu`` the processor number on which the timeout will happen ”h]”(j¯)�”}”(hŒ ``int cpu``”h]”jS)�”}”(hjë§h]”hŒint cpu”…”�”}”(hjí§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjé§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mˆhjå§ubjÉ)�”}”(hhh]”jM)�”}”(hŒ5the processor number on which the timeout will happen”h]”hŒ5the processor number on which the timeout will happen”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj�§ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MŠhj�§ubjM)�”}”(hX__round_jiffies_relative() rounds a time delta in the future (in jiffies) up or down to (approximately) full seconds. This is useful for timers for which the exact time they fire does not matter too much, as long as they fire approximately every X seconds.”h]”hX__round_jiffies_relative() rounds a time delta in the future (in jiffies) up or down to (approximately) full seconds. This is useful for timers for which the exact time they fire does not matter too much, as long as they fire approximately every X seconds.”…”�”}”(hj<¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M‰hj�§ubjM)�”}”(hŒÄBy rounding these timers to whole seconds, all such timers will fire at the same time, rather than at various times spread out. The goal of this is to have the CPU wake up less, which saves power.”h]”hŒÄBy rounding these timers to whole seconds, all such timers will fire at the same time, rather than at various times spread out. The goal of this is to have the CPU wake up less, which saves power.”…”�”}”(hjK¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MŽhj�§ubjM)�”}”(hŒ«The exact rounding is skewed for each processor to avoid all processors firing at the exact same time, which could lead to lock contention or spurious cache line bouncing.”•ðh]”hŒ«The exact rounding is skewed for each processor to avoid all processors firing at the exact same time, which could lead to lock contention or spurious cache line bouncing.”…”�”}”(hjZ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M’hj�§ubjM)�”}”(hŒ?The return value is the rounded version of the **j** parameter.”h]”(hŒ/The return value is the rounded version of the ”…”�”}”(hji¨h²hh³Nh´NubjŽ)�”}”(hŒ**j**”h]”hŒj”…”�”}”(hjq¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hji¨ubhŒ parameter.”…”�”}”(hji¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M–hj�§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒround_jiffies (C function)”Œc.round_jiffies”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-unsigned long round_jiffies (unsigned long j)”h]”hù)�”}”(hŒ,unsigned long round_jiffies(unsigned long j)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjª¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¦¨h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¦¨h²hh³j¸¨h´M£ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjǨh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¦¨h²hh³j¸¨h´M£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¦¨h²hh³j¸¨h´M£ubhÿ)�”}”(hŒ round_jiffies”h]”j)�”}”(hŒ round_jiffies”h]”hŒ round_jiffies”…”�”}”(hjç¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjã¨ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¦¨h²hh³j¸¨h´M£ubj4)�”}”(hŒ(unsigned long j)”h]”j:)�”}”(hŒunsigned long j”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÿ¨ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿ¨ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÿ¨ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿ¨ubj)�”}”(hjŽdh]”hŒj”…”�”}”(hj;©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿ¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjû¨ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¦¨h²hh³j¸¨h´M£ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¢¨h²hh³j¸¨h´M£ubah}”(h]”j�¨ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¸¨h´M£hjŸ¨h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*function to round jiffies to a full second”h]”hŒ*function to round jiffies to a full second”…”�”}”(hjd©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M£hja©h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŸ¨h²hh³j¸¨h´M£ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj|©jHj|©jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXn**Parameters** ``unsigned long j`` the time in (absolute) jiffies that should be rounded **Description** round_jiffies() rounds an absolute time in the future (in jiffies) up or down to (approximately) full seconds. This is useful for timers for which the exact time they fire does not matter too much, as long as they fire approximately every X seconds. By rounding these timers to whole seconds, all such timers will fire at the same time, rather than at various times spread out. The goal of this is to have the CPU wake up less, which saves power. The return value is the rounded version of the **j** parameter.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M§hj€©ubj¤)�”}”(hhh]”j©)�”}”(hŒJ``unsigned long j`` the time in (absolute) jiffies that should be rounded ”h]”(j¯)�”}”(hŒ``unsigned long j``”h]”jS)�”}”(hj¥©h]”hŒunsigned long j”…”�”}”(hj§©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¤hjŸ©ubjÉ)�”}”(hhh]”jM)�”}”(hŒ5the time in (absolute) jiffies that should be rounded”h]”hŒ5the time in (absolute) jiffies that should be rounded”…”�”}”(hj¾©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj€©ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¦hj€©ubjM)�”}”(hŒùround_jiffies() rounds an absolute time in the future (in jiffies) up or down to (approximately) full seconds. This is useful for timers for which the exact time they fire does not matter too much, as long as they fire approximately every X seconds.”h]”hŒùround_jiffies() rounds an absolute time in the future (in jiffies) up or down to (approximately) full seconds. This is useful for timers for which the exact time they fire does not matter too much, as long as they fire approximately every X seconds.”…”�”}”(hjö©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¥hj€©ubjM)�”}”(hŒÄBy rounding these timers to whole seconds, all such timers will fire at the same time, rather than at various times spread out. The goal of this is to have the CPU wake up less, which saves power.”h]”hŒÄBy rounding these timers to whole seconds, all such timers will fire at the same time, rather than at various times spread out. The goal of this is to have the CPU wake up less, which saves power.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mªhj€©ubjM)�”}”(hŒ?The return value is the rounded version of the **j** parameter.”h]”(hŒ/The return value is the rounded version of the ”…”�”}”(hjªh²hh³Nh´NubjŽ)�”}”(hŒ**j**”h]”hŒj”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªubhŒ parameter.”…”�”}”(hjªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M®hj€©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#round_jiffies_relative (C function)”Œc.round_jiffies_relative”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6unsigned long round_jiffies_relative (unsigned long j)”h]”hù)�”}”(hŒ5unsigned long round_jiffies_relative(unsigned long j)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjUªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjQªh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQªh²hh³jcªh´M¸ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjrªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjQªh²hh³jcªh´M¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQªh²hh³jcªh´M¸ubhÿ)�”}”(hŒround_jiffies_relative”h]”j)�”}”(hŒround_jiffies_relative”h]”hŒround_jiffies_relative”…”�”}”(hj’ªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽªubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjQªh²hh³jcªh´M¸ubj4)�”}”(hŒ(unsigned long j)”h]”j:)�”}”(hŒunsigned long j”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj®ªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjªªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼ªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjªªubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjʪh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjªªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjتh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjªªubj)�”}”(hjŽdh]”hŒj”…”�”}”(hjæªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjªªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¦ªubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjQªh²hh³jcªh´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjMªh²hh³jcªh´M¸ubah}”(h]”jHªah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jcªh´M¸hjJªh²hubj4)�”}”(hhh]”jM)�”}”(hŒ*function to round jiffies to a full second”h]”hŒ*function to round jiffies to a full second”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¸hj «h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjJªh²hh³jcªh´M¸ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj'«jHj'«jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXt**Parameters** ``unsigned long j`` the time in (relative) jiffies that should be rounded **Description** round_jiffies_relative() rounds a time delta in the future (in jiffies) up or down to (approximately) full seconds. This is useful for timers for which the exact time they fire does not matter too much, as long as they fire approximately every X seconds. By rounding these timers to whole seconds, all such timers will fire at the same time, rather than at various times spread out. The goal of this is to have the CPU wake up less, which saves power. The return value is the rounded version of the **j** parameter.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj1«h]”hŒ Parameters”…”�”}”(hj3«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¼hj+«ubj¤)�”}”(hhh]”j©)�”}”(hŒJ``unsigned long j`` the time in (relative) jiffies that should be rounded ”h]”(j¯)�”}”(hŒ``unsigned long j``”h]”jS)�”}”(hjP«h]”hŒunsigned long j”…”�”}”(hjR«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjN«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¹hjJ«ubjÉ)�”}”(hhh]”jM)�”}”(hŒ5the time in (relative) jiffies that should be rounded”h]”hŒ5the time in (relative) jiffies that should be rounded”…”�”}”(hji«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³je«h´M¹hjf«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJ«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³je«h´M¹hjG«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj+«ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M»hj+«ubjM)�”}”(hŒÿround_jiffies_relative() rounds a time delta in the future (in jiffies) up or down to (approximately) full seconds. This is useful for timers for which the exact time they fire does not matter too much, as long as they fire approximately every X seconds.”h]”hŒÿround_jiffies_relative() rounds a time delta in the future (in jiffies) up or down to (approximately) full seconds. This is useful for timers for which the exact time they fire does not matter too much, as long as they fire approximately every X seconds.”…”�”}”(hj¡«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mºhj+«ubjM)�”}”(hŒÄBy rounding these timers to whole seconds, all such timers will fire at the same time, rather than at various times spread out. The goal of this is to have the CPU wake up less, which saves power.”h]”hŒÄBy rounding these timers to whole seconds, all such timers will fire at the same time, rather than at various times spread out. The goal of this is to have the CPU wake up less, which saves power.”…”�”}”(hj°«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¿hj+«ubjM)�”}”(hŒ?The return value is the rounded version of the **j** parameter.”h]”(hŒ/The return value is the rounded version of the ”…”�”}”(hj¿«h²hh³Nh´NubjŽ)�”}”(hŒ**j**”h]”hŒj”…”�”}”(hjÇ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿«ubhŒ parameter.”…”�”}”(hj¿«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÃhj+«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(__round_jiffies_up_relative (C function)”Œc.__round_jiffies_up_relative”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDunsigned long __round_jiffies_up_relative (unsigned long j, int cpu)”h]”hù)�”}”(hŒCunsigned long __round_jiffies_up_relative(unsigned long j, int cpu)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjü«h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjü«h²hh³j¬h´MÍubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjü«h²hh³j¬h´MÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjü«h²hh³j¬h´MÍubhÿ)�”}”(hŒ__round_jiffies_up_relative”h]”j)�”}”(hŒ__round_jiffies_up_relative”h]”hŒ__round_jiffies_up_relative”…”�”}”(hj=¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9¬ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjü«h²hh³j¬h´MÍubj4)�”}”(hŒ(unsigned long j, int cpu)”h]”(j:)�”}”(hŒunsigned long j”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjY¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjU¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjU¬ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hju¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjU¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjU¬ubj)�”}”(hjŽdh]”hŒj”…”�”}”(hj‘¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjU¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjQ¬ubj:)�”}”(hŒint cpu”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj©¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¥¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¥¬ubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjŬh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjQ¬ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjü«h²hh³j¬h´MÍubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjø«h²hh³j¬h´MÍubah}”(h]”jó«ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¬h´MÍhjõ«h²hubj4)�”}”(hhh]”jM)�”}”(hŒ-function to round jiffies up to a full second”h]”hŒ-function to round jiffies up to a full second”…”�”}”(hjï¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÍhjì¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjõ«h²hh³j¬h´MÍubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj­jHj­jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX‡**Parameters** ``unsigned long j`` the time in (relative) jiffies that should be rounded ``int cpu`` the processor number on which the timeout will happen **Description** This is the same as __round_jiffies_relative() except that it will never round down. This is useful for timeouts for which the exact time of firing does not matter too much, as long as they don't fire too early.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÑhj ­ubj¤)�”}”(hhh]”(j©)�”}”(hŒJ``unsigned long j`` the time in (relative) jiffies that should be rounded ”h]”(j¯)�”}”(hŒ``unsigned long j``”h]”jS)�”}”(hj0­h]”hŒunsigned long j”…”�”}”(hj2­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj.­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÎhj*­ubjÉ)�”}”(hhh]”jM)�”}”(hŒ5the time in (relative) jiffies that should be rounded”h]”hŒ5the time in (relative) jiffies that should be rounded”…”�”}”(hjI­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jE­h´MÎhjF­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jE­h´MÎhj'­ubj©)�”}”(hŒB``int cpu`` the processor number on which the timeout will happen ”h]”(j¯)�”}”(hŒ ``int cpu``”h]”jS)�”}”(hji­h]”hŒint cpu”…”�”}”(hjk­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjg­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÏhjc­ubjÉ)�”}”(hhh]”jM)�”}”(hŒ5the processor number on which the timeout will happen”h]”hŒ5the processor number on which the timeout will happen”…”�”}”(hj‚­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~­h´MÏhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjc­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~­h´MÏhj'­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ­ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÑhj ­ubjM)�”}”(hŒÔThis is the same as __round_jiffies_relative() except that it will never round down. This is useful for timeouts for which the exact time of firing does not matter too much, as long as they don't fire too early.”h]”hŒÖThis is the same as __round_jiffies_relative() except that it will never round down. This is useful for timeouts for which the exact time of firing does not matter too much, as long as they don’t fire too early.”…”�”}”(hjº­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÐhj ­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒround_jiffies_up (C function)”Œc.round_jiffies_up”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0unsigned long round_jiffies_up (unsigned long j)”h]”hù)�”}”(hŒ/unsigned long round_jiffies_up(unsigned long j)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjé­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjå­h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MàubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjå­h²hh³j÷­h´Màubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjå­h²hh³j÷­h´MàubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjå­h²hh³j÷­h´Màubhÿ)�”}”(hŒround_jiffies_up”h]”j)�”}”(hŒround_jiffies_up”h]”hŒround_jiffies_up”…”�”}”(hj&®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"®ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjå­h²hh³j÷­h´Màubj4)�”}”(hŒ(unsigned long j)”h]”j:)�”}”(hŒunsigned long j”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjB®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj>®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>®ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj^®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj>®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>®ubj)�”}”(hjŽdh]”hŒj”…”�”}”(hjz®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:®ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjå­h²hh³j÷­h´Màubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjá­h²hh³j÷­h´Màubah}”(h]”jÜ­ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j÷­h´MàhjÞ­h²hubj4)�”}”(hhh]”jM)�”}”(hŒ-function to round jiffies up to a full second”h]”hŒ-function to round jiffies up to a full second”…”�”}”(hj£®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Màhj ®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÞ­h²hh³j÷­h´Màubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj»®jHj»®jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX7**Parameters** ``unsigned long j`` the time in (absolute) jiffies that should be rounded **Description** This is the same as round_jiffies() except that it will never round down. This is useful for timeouts for which the exact time of firing does not matter too much, as long as they don't fire too early.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mähj¿®ubj¤)�”}”(hhh]”j©)�”}”(hŒJ``unsigned long j`` the time in (absolute) jiffies that should be rounded ”h]”(j¯)�”}”(hŒ``unsigned long j``”h]”jS)�”}”(hjä®h]”hŒunsigned long j”…”�”}”(hjæ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjâ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MáhjÞ®ubjÉ)�”}”(hhh]”jM)�”}”(hŒ5the time in (absolute) jiffies that should be rounded”h]”hŒ5the time in (absolute) jiffies that should be rounded”…”�”}”(hjý®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¿®ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mãhj¿®ubjM)�”}”(hŒÉThis is the same as round_jiffies() except that it will never round down. This is useful for timeouts for which the exact time of firing does not matter too much, as long as they don't fire too early.”h]”hŒËThis is the same as round_jiffies() except that it will never round down. This is useful for timeouts for which the exact time of firing does not matter too much, as long as they don’t fire too early.”…”�”}”(hj5¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mâhj¿®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&round_jiffies_up_relative (C function)”Œc.round_jiffies_up_relative”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9unsigned long round_jiffies_up_relative (unsigned long j)”h]”hù)�”}”(hŒ8unsigned long round_jiffies_up_relative(unsigned long j)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjd¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj`¯h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs¯h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`¯h²hh³jr¯h´Mïubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj�¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj`¯h²hh³jr¯h´MïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¯h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`¯h²hh³jr¯h´Mïubhÿ)�”}”(hŒround_jiffies_up_relative”h]”j)�”}”(hŒround_jiffies_up_relative”h]”hŒround_jiffies_up_relative”…”�”}”(hj¡¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�¯ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj`¯h²hh³jr¯h´Mïubj4)�”}”(hŒ(unsigned long j)”h]”j:)�”}”(hŒunsigned long j”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj½¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¹¯ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˯h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹¯ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÙ¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¹¯ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç¯h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹¯ubj)�”}”(hjŽdh]”hŒj”…”�”}”(hjõ¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjµ¯ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj`¯h²hh³jr¯h´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj\¯h²hh³jr¯h´Mïubah}”(h]”jW¯ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jr¯h´MïhjY¯h²hubj4)�”}”(hhh]”jM)�”}”(hŒ-function to round jiffies up to a full second”h]”hŒ-function to round jiffies up to a full second”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mïhj°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjY¯h²hh³jr¯h´Mïubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj6°jHj6°jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX@**Parameters** ``unsigned long j`` the time in (relative) jiffies that should be rounded **Description** This is the same as round_jiffies_relative() except that it will never round down. This is useful for timeouts for which the exact time of firing does not matter too much, as long as they don't fire too early.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj@°h]”hŒ Parameters”…”�”}”(hjB°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Móhj:°ubj¤)�”}”(hhh]”j©)�”}”(hŒJ``unsigned long j`` the time in (relative) jiffies that should be rounded ”h]”(j¯)�”}”(hŒ``unsigned long j``”h]”jS)�”}”(hj_°h]”hŒunsigned long j”…”�”}”(hja°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj]°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MðhjY°ubjÉ)�”}”(hhh]”jM)�”}”(hŒ5the time in (relative) jiffies that should be rounded”h]”hŒ5the time in (relative) jiffies that should be rounded”…”�”}”(hjx°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jt°h´Mðhju°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjY°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jt°h´MðhjV°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj:°ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mòhj:°ubjM)�”}”(hŒÒThis is the same as round_jiffies_relative() except that it will never round down. This is useful for timeouts for which the exact time of firing does not matter too much, as long as they don't fire too early.”h]”hŒÔThis is the same as round_jiffies_relative() except that it will never round down. This is useful for timeouts for which the exact time of firing does not matter too much, as long as they don’t fire too early.”…”�”}”(hj°°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mñhj:°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtimer_init_key (C function)”Œc.timer_init_key”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ“void timer_init_key (struct timer_list *timer, void (*func)(struct timer_list *), unsigned int flags, const char *name, struct lock_class_key *key)”h]”hù)�”}”(hŒ‘void timer_init_key(struct timer_list *timer, void (*func)(struct timer_list*), unsigned int flags, const char *name, struct lock_class_key *key)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjß°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÛ°h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛ°h²hh³jí°h´Mbubhÿ)�”}”(hŒtimer_init_key”h]”j)�”}”(hŒtimer_init_key”h]”hŒtimer_init_key”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü°ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÛ°h²hh³jí°h´Mbubj4)�”}”(hŒ~(struct timer_list *timer, void (*func)(struct timer_list*), unsigned int flags, const char *name, struct lock_class_key *key)”h]”(j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)±h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±ubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hj:±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j<±Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj±sbŒc.timer_init_key”†”asbuh1hhj±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ±h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj±ubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hju±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±ubj:)�”}”(hŒ void (*func)(struct timer_list*)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjޱh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjбubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ±h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjбubj”)�”}”(hjsh]”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бubj)�”}”(hŒfunc”h]”hŒfunc”…”�”}”(hjıh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjбubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjÒ±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjбubj”)�”}”(hjsh]”hŒ(”…”�”}”(hjß±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjбubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjì±h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjбubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù±h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjбubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j ²Œmodname”NŒ classname”Njwjz)�”}”j}]”jV±Œc.timer_init_key”†”asbuh1hhjбubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj(²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjбubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj5²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjбubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±ubj:)�”}”(hŒunsigned int flags”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjM²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjI²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[²h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjI²ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hji²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjI²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw²h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjI²ubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj…²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjI²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±ubj:)�”}”(hŒconst char *name”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjž²h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjš²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«²h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjš²ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¹²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjš²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDzh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjš²ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÕ²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjš²ubj)�”}”(hŒname”h]”hŒname”…”�”}”(hjâ²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjš²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±ubj:)�”}”(hŒstruct lock_class_key *key”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjû²h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj÷²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷²ubh)�”}”(hhh]”j)�”}”(hŒlock_class_key”h]”hŒlock_class_key”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j³Œmodname”NŒ classname”Njwjz)�”}”j}]”jV±Œc.timer_init_key”†”asbuh1hhj÷²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷²ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjE³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj÷²ubj)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjR³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÛ°h²hh³jí°h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj×°h²hh³jí°h´Mbubah}”(h]”jÒ°ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jí°h´MbhjÔ°h²hubj4)�”}”(hhh]”jM)�”}”(hŒinitialize a timer”h]”hŒinitialize a timer”…”�”}”(hj|³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mbhjy³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÔ°h²hh³jí°h´Mbubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj”³jHj”³jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXÁ**Parameters** ``struct timer_list *timer`` the timer to be initialized ``void (*func)(struct timer_list *)`` timer callback function ``unsigned int flags`` timer flags ``const char *name`` name of the timer ``struct lock_class_key *key`` lockdep class key of the fake lock used for tracking timer sync lock dependencies **Description** timer_init_key() must be done to a timer prior to calling *any* of the other timer functions.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mfhj˜³ubj¤)�”}”(hhh]”(j©)�”}”(hŒ9``struct timer_list *timer`` the timer to be initialized ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hj½³h]”hŒstruct timer_list *timer”…”�”}”(hj¿³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj»³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mchj·³ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe timer to be initialized”h]”hŒthe timer to be initialized”…”�”}”(hjÖ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÒ³h´MchjÓ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj·³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÒ³h´Mchj´³ubj©)�”}”(hŒ>``void (*func)(struct timer_list *)`` timer callback function ”h]”(j¯)�”}”(hŒ%``void (*func)(struct timer_list *)``”h]”jS)�”}”(hjö³h]”hŒ!void (*func)(struct timer_list *)”…”�”}”(hjø³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjô³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mdhjð³ubjÉ)�”}”(hhh]”jM)�”}”(hŒtimer callback function”h]”hŒtimer callback function”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j ´h´Mdhj ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjð³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j ´h´Mdhj´³ubj©)�”}”(hŒ#``unsigned int flags`` timer flags ”h]”(j¯)�”}”(hŒ``unsigned int flags``”h]”jS)�”}”(hj/´h]”hŒunsigned int flags”…”�”}”(hj1´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj-´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mehj)´ubjÉ)�”}”(hhh]”jM)�”}”(hŒ timer flags”h]”hŒ timer flags”…”�”}”(hjH´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jD´h´MehjE´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj)´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jD´h´Mehj´³ubj©)�”}”(hŒ'``const char *name`` name of the timer ”h]”(j¯)�”}”(hŒ``const char *name``”h]”jS)�”}”(hjh´h]”hŒconst char *name”…”�”}”(hjj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjf´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mfhjb´ubjÉ)�”}”(hhh]”jM)�”}”(hŒname of the timer”h]”hŒname of the timer”…”�”}”(hj�´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j}´h´Mfhj~´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjb´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j}´h´Mfhj´³ubj©)�”}”(hŒq``struct lock_class_key *key`` lockdep class key of the fake lock used for tracking timer sync lock dependencies ”h]”(j¯)�”}”(hŒ``struct lock_class_key *key``”h]”jS)�”}”(hj¡´h]”hŒstruct lock_class_key *key”…”�”}”(hj£´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mhhj›´ubjÉ)�”}”(hhh]”jM)�”}”(hŒQlockdep class key of the fake lock used for tracking timer sync lock dependencies”h]”hŒQlockdep class key of the fake lock used for tracking timer sync lock dependencies”…”�”}”(hjº´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mghj·´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj›´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¶´h´Mhhj´³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj˜³ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mjhj˜³ubjM)�”}”(hŒ]timer_init_key() must be done to a timer prior to calling *any* of the other timer functions.”h]”(hŒ:timer_init_key() must be done to a timer prior to calling ”…”�”}”(hjó´h²hh³Nh´Nubj3)�”}”(hŒ*any*”h]”hŒany”…”�”}”(hjû´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjó´ubhŒ of the other timer functions.”…”�”}”(hjó´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mihj˜³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒmod_timer_pending (C function)”Œc.mod_timer_pending”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒGint mod_timer_pending (struct timer_list *timer, unsigned long expires)”h]”hù)�”}”(hŒFint mod_timer_pending(struct timer_list *timer, unsigned long expires)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj4µh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj0µh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MzubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0µh²hh³jBµh´Mzubhÿ)�”}”(hŒmod_timer_pending”h]”j)�”}”(hŒmod_timer_pending”h]”hŒmod_timer_pending”…”�”}”(hjUµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQµubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0µh²hh³jBµh´Mzubj4)�”}”(hŒ1(struct timer_list *timer, unsigned long expires)”h]”(j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjqµh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjmµubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~µh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmµubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hj�µh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‘µŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjWµsbŒc.mod_timer_pending”†”asbuh1hhjmµubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯µh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmµubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj½µh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjmµubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjʵh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjiµubj:)�”}”(hŒunsigned long expires”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjãµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjßµubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjßµubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÿµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjßµubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¶h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjßµubj)�”}”(hŒexpires”h]”hŒexpires”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjßµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjiµubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj0µh²hh³jBµh´Mzubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,µh²hh³jBµh´Mzubah}”(h]”j'µah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jBµh´Mzhj)µh²hubj4)�”}”(hhh]”jM)�”}”(hŒ Modify a pending timer's timeout”h]”hŒ"Modify a pending timer’s timeout”…”�”}”(hjE¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MzhjB¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj)µh²hh³jBµh´Mzubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj]¶jHj]¶jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX**Parameters** ``struct timer_list *timer`` The pending timer to be modified ``unsigned long expires`` New absolute timeout in jiffies **Description** mod_timer_pending() is the same for pending timers as mod_timer(), but will not activate inactive timers. If **timer->function** == NULL then the start operation is silently discarded. **Return** * ``0`` - The timer was inactive and not modified or was in shutdown state and the operation was discarded * ``1`` - The timer was active and requeued to expire at **expires**”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjg¶h]”hŒ Parameters”…”�”}”(hji¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hje¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M~hja¶ubj¤)�”}”(hhh]”(j©)�”}”(hŒ>``struct timer_list *timer`` The pending timer to be modified ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hj†¶h]”hŒstruct timer_list *timer”…”�”}”(hjˆ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj„¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M{hj€¶ubjÉ)�”}”(hhh]”jM)�”}”(hŒ The pending timer to be modified”h]”hŒ The pending timer to be modified”…”�”}”(hjŸ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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 expires`` New absolute timeout in jiffies ”h]”(j¯)�”}”(hŒ``unsigned long expires``”h]”jS)�”}”(hj¿¶h]”hŒunsigned long expires”…”�”}”(hjÁ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj½¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M|hj¹¶ubjÉ)�”}”(hhh]”jM)�”}”(hŒNew absolute timeout in jiffies”h]”hŒNew absolute timeout in jiffies”…”�”}”(hjضh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hja¶ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M~hja¶ubjM)�”}”(hŒimod_timer_pending() is the same for pending timers as mod_timer(), but will not activate inactive timers.”h]”hŒimod_timer_pending() is the same for pending timers as mod_timer(), but will not activate inactive timers.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M}hja¶ubjM)�”}”(hŒNIf **timer->function** == NULL then the start operation is silently discarded.”h]”(hŒIf ”…”�”}”(hj·h²hh³Nh´NubjŽ)�”}”(hŒ**timer->function**”h]”hŒtimer->function”…”�”}”(hj'·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj·ubhŒ8 == NULL then the start operation is silently discarded.”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M€hja¶ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjB·h]”hŒReturn”…”�”}”(hjD·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mƒhja¶ubj C)�”}”(hhh]”(j„)�”}”(hŒm``0`` - The timer was inactive and not modified or was in shutdown state and the operation was discarded”h]”j¤)�”}”(hhh]”j©)�”}”(hŒh``0`` - The timer was inactive and not modified or was in shutdown state and the operation was discarded”h]”(j¯)�”}”(hŒ9``0`` - The timer was inactive and not modified or was in”h]”(jS)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjf·ubhŒ4 - The timer was inactive and not modified or was in”…”�”}”(hjf·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M„hjb·ubjÉ)�”}”(hhh]”jM)�”}”(hŒ.shutdown state and the operation was discarded”h]”hŒ.shutdown state and the operation was discarded”…”�”}”(hj†·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M…hjƒ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjb·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‚·h´M„hj_·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj[·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjX·ubj„)�”}”(hŒB``1`` - The timer was active and requeued to expire at **expires**”h]”jM)�”}”(hj¯·h]”(jS)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hj´·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj±·ubhŒ2 - The timer was active and requeued to expire at ”…”�”}”(hj±·h²hh³Nh´NubjŽ)�”}”(hŒ **expires**”h]”hŒexpires”…”�”}”(hjÆ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj±·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M†hj­·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjX·ubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³j‚·h´M„hja¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒmod_timer (C function)”Œ c.mod_timer”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ?int mod_timer (struct timer_list *timer, unsigned long expires)”h]”hù)�”}”(hŒ>int mod_timer(struct timer_list *timer, unsigned long expires)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¸h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸h²hh³j¸h´M�ubhÿ)�”}”(hŒ mod_timer”h]”j)�”}”(hŒ mod_timer”h]”hŒ mod_timer”…”�”}”(hj(¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$¸ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¸h²hh³j¸h´M�ubj4)�”}”(hŒ1(struct timer_list *timer, unsigned long expires)”h]”(j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjD¸h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj@¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj@¸ubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hjb¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jd¸Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj*¸sbŒ c.mod_timer”†”asbuh1hhj@¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj@¸ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj@¸ubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj<¸ubj:)�”}”(hŒunsigned long expires”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¶¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj²¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjĸh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²¸ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÒ¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj²¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²¸ubj)�”}”(hŒexpires”h]”hŒexpires”…”�”}”(hjî¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj<¸ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¸h²hh³j¸h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÿ·h²hh³j¸h´M�ubah}”(h]”jú·ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¸h´M�hjü·h²hubj4)�”}”(hhh]”jM)�”}”(hŒModify a timer's timeout”h]”hŒModify a timer’s timeout”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M�hj¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjü·h²hh³j¸h´M�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj0¹jHj0¹jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXZ**Parameters** ``struct timer_list *timer`` The timer to be modified ``unsigned long expires`` New absolute timeout in jiffies **Description** mod_timer(timer, expires) is equivalent to: timer_delete(timer); timer->expires = expires; add_timer(timer); mod_timer() is more efficient than the above open coded sequence. In case that the timer is inactive, the timer_delete() part is a NOP. The timer is in any case activated with the new expiry time **expires**. Note that if there are multiple unserialized concurrent users of the same timer, then mod_timer() is the only safe way to modify the timeout, since add_timer() cannot modify an already running timer. If **timer->function** == NULL then the start operation is silently discarded. In this case the return value is 0 and meaningless. **Return** * ``0`` - The timer was inactive and started or was in shutdown state and the operation was discarded * ``1`` - The timer was active and requeued to expire at **expires** or the timer was active and not modified because **expires** did not change the effective expiry time”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj:¹h]”hŒ Parameters”…”�”}”(hj<¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M”hj4¹ubj¤)�”}”(hhh]”(j©)�”}”(hŒ6``struct timer_list *timer`` The timer to be modified ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hjY¹h]”hŒstruct timer_list *timer”…”�”}”(hj[¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjW¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M‘hjS¹ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be modified”h]”hŒThe timer to be modified”…”�”}”(hjr¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jn¹h´M‘hjo¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjS¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jn¹h´M‘hjP¹ubj©)�”}”(hŒ:``unsigned long expires`` New absolute timeout in jiffies ”h]”(j¯)�”}”(hŒ``unsigned long expires``”h]”jS)�”}”(hj’¹h]”hŒunsigned long expires”…”�”}”(hj”¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M’hjŒ¹ubjÉ)�”}”(hhh]”jM)�”}”(hŒNew absolute timeout in jiffies”h]”hŒNew absolute timeout in jiffies”…”�”}”(hj«¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j§¹h´M’hj¨¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŒ¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j§¹h´M’hjP¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj4¹ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M”hj4¹ubjM)�”}”(hŒ+mod_timer(timer, expires) is equivalent to:”h]”hŒ+mod_timer(timer, expires) is equivalent to:”…”�”}”(hjã¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M“hj4¹ubji)�”}”(hŒAtimer_delete(timer); timer->expires = expires; add_timer(timer); ”h]”jM)�”}”(hŒ@timer_delete(timer); timer->expires = expires; add_timer(timer);”h]”hŒ@timer_delete(timer); timer->expires = expires; add_timer(timer);”…”�”}”(hjö¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M•hjò¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jºh´M•hj4¹ubjM)�”}”(hŒÐmod_timer() is more efficient than the above open coded sequence. In case that the timer is inactive, the timer_delete() part is a NOP. The timer is in any case activated with the new expiry time **expires**.”h]”(hŒÄmod_timer() is more efficient than the above open coded sequence. In case that the timer is inactive, the timer_delete() part is a NOP. The timer is in any case activated with the new expiry time ”…”�”}”(hj ºh²hh³Nh´NubjŽ)�”}”(hŒ **expires**”h]”hŒexpires”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ºubhŒ.”…”�”}”(hj ºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M—hj4¹ubjM)�”}”(hŒÇNote that if there are multiple unserialized concurrent users of the same timer, then mod_timer() is the only safe way to modify the timeout, since add_timer() cannot modify an already running timer.”h]”hŒÇNote that if there are multiple unserialized concurrent users of the same timer, then mod_timer() is the only safe way to modify the timeout, since add_timer() cannot modify an already running timer.”…”�”}”(hj,ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M›hj4¹ubjM)�”}”(hŒ‚If **timer->function** == NULL then the start operation is silently discarded. In this case the return value is 0 and meaningless.”h]”(hŒIf ”…”�”}”(hj;ºh²hh³Nh´NubjŽ)�”}”(hŒ**timer->function**”h]”hŒtimer->function”…”�”}”(hjCºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;ºubhŒl == NULL then the start operation is silently discarded. In this case the return value is 0 and meaningless.”…”�”}”(hj;ºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MŸhj4¹ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj^ºh]”hŒReturn”…”�”}”(hj`ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¢hj4¹ubj C)�”}”(hhh]”(j„)�”}”(hŒh``0`` - The timer was inactive and started or was in shutdown state and the operation was discarded”h]”j¤)�”}”(hhh]”j©)�”}”(hŒc``0`` - The timer was inactive and started or was in shutdown state and the operation was discarded”h]”(j¯)�”}”(hŒ=``0`` - The timer was inactive and started or was in shutdown”h]”(jS)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj†ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‚ºubhŒ8 - The timer was inactive and started or was in shutdown”…”�”}”(hj‚ºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M£hj~ºubjÉ)�”}”(hhh]”jM)�”}”(hŒ%state and the operation was discarded”h]”hŒ%state and the operation was discarded”…”�”}”(hj¢ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”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£hjwºubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjtºubj„)�”}”(hŒ²``1`` - The timer was active and requeued to expire at **expires** or the timer was active and not modified because **expires** did not change the effective expiry time”h]”j¤)�”}”(hhh]”j©)�”}”(hŒ¨``1`` - The timer was active and requeued to expire at **expires** or the timer was active and not modified because **expires** did not change the effective expiry time”h]”(j¯)�”}”(hŒE``1`` - The timer was active and requeued to expire at **expires** or”h]”(jS)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hjغh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔºubhŒ2 - The timer was active and requeued to expire at ”…”�”}”(hjÔºh²hh³Nh´NubjŽ)�”}”(hŒ **expires**”h]”hŒexpires”…”�”}”(hjêºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔºubhŒ or”…”�”}”(hjÔºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¦hjкubjÉ)�”}”(hhh]”jM)�”}”(hŒbthe timer was active and not modified because **expires** did not change the effective expiry time”h]”(hŒ.the timer was active and not modified because ”…”�”}”(hj»h²hh³Nh´NubjŽ)�”}”(hŒ **expires**”h]”hŒexpires”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»ubhŒ) did not change the effective expiry time”…”�”}”(hj»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjɺubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjtºubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³jžºh´M£hj4¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtimer_reduce (C function)”Œc.timer_reduce”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBint timer_reduce (struct timer_list *timer, unsigned long expires)”h]”hù)�”}”(hŒAint timer_reduce(struct timer_list *timer, unsigned long expires)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjd»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj`»h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`»h²hh³jr»h´M±ubhÿ)�”}”(hŒ timer_reduce”h]”j)�”}”(hŒ timer_reduce”h]”hŒ timer_reduce”…”�”}”(hj…»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�»ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj`»h²hh³jr»h´M±ubj4)�”}”(hŒ1(struct timer_list *timer, unsigned long expires)”h]”(j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¡»h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�»ubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hj¿»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÁ»Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‡»sbŒc.timer_reduce”†”asbuh1hhj�»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�»ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjí»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�»ubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjú»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj™»ubj:)�”}”(hŒunsigned long expires”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!¼h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¼ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj/¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=¼h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¼ubj)�”}”(hŒexpires”h]”hŒexpires”…”�”}”(hjK¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj™»ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj`»h²hh³jr»h´M±ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj\»h²hh³jr»h´M±ubah}”(h]”jW»ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jr»h´M±hjY»h²hubj4)�”}”(hhh]”jM)�”}”(hŒ7Modify a timer's timeout if it would reduce the timeout”h]”hŒ9Modify a timer’s timeout if it would reduce the timeout”…”�”}”(hju¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M±hjr¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjY»h²hh³jr»h´M±ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�¼jHj�¼jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX**Parameters** ``struct timer_list *timer`` The timer to be modified ``unsigned long expires`` New absolute timeout in jiffies **Description** timer_reduce() is very similar to mod_timer(), except that it will only modify an enqueued timer if that would reduce the expiration time. If **timer** is not enqueued it starts the timer. If **timer->function** == NULL then the start operation is silently discarded. **Return** * ``0`` - The timer was inactive and started or was in shutdown state and the operation was discarded * ``1`` - The timer was active and requeued to expire at **expires** or the timer was active and not modified because **expires** did not change the effective expiry time such that the timer would expire earlier than already scheduled”•Õh]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mµhj‘¼ubj¤)�”}”(hhh]”(j©)�”}”(hŒ6``struct timer_list *timer`` The timer to be modified ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hj¶¼h]”hŒstruct timer_list *timer”…”�”}”(hj¸¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj´¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M²hj°¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be modified”h]”hŒThe timer to be modified”…”�”}”(hjϼh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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 expires`` New absolute timeout in jiffies ”h]”(j¯)�”}”(hŒ``unsigned long expires``”h]”jS)�”}”(hjï¼h]”hŒunsigned long expires”…”�”}”(hjñ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjí¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M³hjé¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒNew absolute timeout in jiffies”h]”hŒNew absolute timeout in jiffies”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj‘¼ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mµhj‘¼ubjM)�”}”(hŒ¼timer_reduce() is very similar to mod_timer(), except that it will only modify an enqueued timer if that would reduce the expiration time. If **timer** is not enqueued it starts the timer.”h]”(hŒŽtimer_reduce() is very similar to mod_timer(), except that it will only modify an enqueued timer if that would reduce the expiration time. If ”…”�”}”(hj@½h²hh³Nh´NubjŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hjH½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@½ubhŒ% is not enqueued it starts the timer.”…”�”}”(hj@½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M´hj‘¼ubjM)�”}”(hŒNIf **timer->function** == NULL then the start operation is silently discarded.”h]”(hŒIf ”…”�”}”(hja½h²hh³Nh´NubjŽ)�”}”(hŒ**timer->function**”h]”hŒtimer->function”…”�”}”(hji½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja½ubhŒ8 == NULL then the start operation is silently discarded.”…”�”}”(hja½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¸hj‘¼ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj„½h]”hŒReturn”…”�”}”(hj†½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M»hj‘¼ubj C)�”}”(hhh]”(j„)�”}”(hŒh``0`` - The timer was inactive and started or was in shutdown state and the operation was discarded”h]”j¤)�”}”(hhh]”j©)�”}”(hŒc``0`` - The timer was inactive and started or was in shutdown state and the operation was discarded”h]”(j¯)�”}”(hŒ=``0`` - The timer was inactive and started or was in shutdown”h]”(jS)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj¬½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¨½ubhŒ8 - The timer was inactive and started or was in shutdown”…”�”}”(hj¨½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¼hj¤½ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%state and the operation was discarded”h]”hŒ%state and the operation was discarded”…”�”}”(hjȽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”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£hj�½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjš½ubj„)�”}”(hŒ÷``1`` - The timer was active and requeued to expire at **expires** or the timer was active and not modified because **expires** did not change the effective expiry time such that the timer would expire earlier than already scheduled”h]”j¤)�”}”(hhh]”j©)�”}”(hŒè``1`` - The timer was active and requeued to expire at **expires** or the timer was active and not modified because **expires** did not change the effective expiry time such that the timer would expire earlier than already scheduled”h]”(j¯)�”}”(hŒE``1`` - The timer was active and requeued to expire at **expires** or”h]”(jS)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hjþ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjú½ubhŒ2 - The timer was active and requeued to expire at ”…”�”}”(hjú½h²hh³Nh´NubjŽ)�”}”(hŒ **expires**”h]”hŒexpires”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjú½ubhŒ or”…”�”}”(hjú½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÀhjö½ubjÉ)�”}”(hhh]”jM)�”}”(hŒ¢the timer was active and not modified because **expires** did not change the effective expiry time such that the timer would expire earlier than already scheduled”h]”(hŒ.the timer was active and not modified because ”…”�”}”(hj,¾h²hh³Nh´NubjŽ)�”}”(hŒ **expires**”h]”hŒexpires”…”�”}”(hj4¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,¾ubhŒi did not change the effective expiry time such that the timer would expire earlier than already scheduled”…”�”}”(hj,¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”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£hjï½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjš½ubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³jĽh´M¼hj‘¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒadd_timer (C function)”Œ c.add_timer”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ)void add_timer (struct timer_list *timer)”h]”hù)�”}”(hŒ(void add_timer(struct timer_list *timer)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‹¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‡¾h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MËubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡¾h²hh³j™¾h´MËubhÿ)�”}”(hŒ add_timer”h]”j)�”}”(hŒ add_timer”h]”hŒ add_timer”…”�”}”(hj¬¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨¾ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‡¾h²hh³j™¾h´MËubj4)�”}”(hŒ(struct timer_list *timer)”h]”j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjȾh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjľubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjľubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hjæ¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjã¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j辌modname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj®¾sbŒ c.add_timer”†”asbuh1hhjľubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjľubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjľubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj!¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjľubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÀ¾ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‡¾h²hh³j™¾h´MËubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjƒ¾h²hh³j™¾h´MËubah}”(h]”j~¾ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j™¾h´MËhj€¾h²hubj4)�”}”(hhh]”jM)�”}”(hŒ Start a timer”h]”hŒ Start a timer”…”�”}”(hjK¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MËhjH¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj€¾h²hh³j™¾h´MËubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjc¿jHjc¿jI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXÉ**Parameters** ``struct timer_list *timer`` The timer to be started **Description** Start **timer** to expire at **timer->expires** in the future. **timer->expires** is the absolute expiry time measured in 'jiffies'. When the timer expires timer->function(timer) will be invoked from soft interrupt context. The **timer->expires** and **timer->function** fields must be set prior to calling this function. If **timer->function** == NULL then the start operation is silently discarded. If **timer->expires** is already in the past **timer** will be queued to expire at the next timer tick. This can only operate on an inactive timer. Attempts to invoke this on an active timer are rejected with a warning.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjm¿h]”hŒ Parameters”…”�”}”(hjo¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÏhjg¿ubj¤)�”}”(hhh]”j©)�”}”(hŒ5``struct timer_list *timer`` The timer to be started ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hjŒ¿h]”hŒstruct timer_list *timer”…”�”}”(hjŽ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŠ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÌhj†¿ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be started”h]”hŒThe timer to be started”…”�”}”(hj¥¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjg¿ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÎhjg¿ubjM)�”}”(hŒßStart **timer** to expire at **timer->expires** in the future. **timer->expires** is the absolute expiry time measured in 'jiffies'. When the timer expires timer->function(timer) will be invoked from soft interrupt context.”h]”(hŒStart ”…”�”}”(hjÝ¿h²hh³Nh´NubjŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hjå¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝ¿ubhŒ to expire at ”…”�”}”(hjÝ¿h²hh³Nh´NubjŽ)�”}”(hŒ**timer->expires**”h]”hŒtimer->expires”…”�”}”(hj÷¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝ¿ubhŒ in the future. ”…”�”}”(hjÝ¿h²hh³Nh´NubjŽ)�”}”(hŒ**timer->expires**”h]”hŒtimer->expires”…”�”}”(hj Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝ¿ubhŒ’ is the absolute expiry time measured in ‘jiffies’. When the timer expires timer->function(timer) will be invoked from soft interrupt context.”…”�”}”(hjÝ¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÍhjg¿ubjM)�”}”(hŒaThe **timer->expires** and **timer->function** fields must be set prior to calling this function.”h]”(hŒThe ”…”�”}”(hj"Àh²hh³Nh´NubjŽ)�”}”(hŒ**timer->expires**”h]”hŒtimer->expires”…”�”}”(hj*Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"ÀubhŒ and ”…”�”}”(hj"Àh²hh³Nh´NubjŽ)�”}”(hŒ**timer->function**”h]”hŒtimer->function”…”�”}”(hj<Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"ÀubhŒ3 fields must be set prior to calling this function.”…”�”}”(hj"Àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÑhjg¿ubjM)�”}”(hŒNIf **timer->function** == NULL then the start operation is silently discarded.”h]”(hŒIf ”…”�”}”(hjUÀh²hh³Nh´NubjŽ)�”}”(hŒ**timer->function**”h]”hŒtimer->function”…”�”}”(hj]Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjUÀubhŒ8 == NULL then the start operation is silently discarded.”…”�”}”(hjUÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÔhjg¿ubjM)�”}”(hŒgIf **timer->expires** is already in the past **timer** will be queued to expire at the next timer tick.”h]”(hŒIf ”…”�”}”(hjvÀh²hh³Nh´NubjŽ)�”}”(hŒ**timer->expires**”h]”hŒtimer->expires”…”�”}”(hj~Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvÀubhŒ is already in the past ”…”�”}”(hjvÀh²hh³Nh´NubjŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvÀubhŒ1 will be queued to expire at the next timer tick.”…”�”}”(hjvÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M×hjg¿ubjM)�”}”(hŒsThis can only operate on an inactive timer. Attempts to invoke this on an active timer are rejected with a warning.”h]”hŒsThis can only operate on an inactive timer. Attempts to invoke this on an active timer are rejected with a warning.”…”�”}”(hj©Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÚhjg¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒadd_timer_local (C function)”Œc.add_timer_local”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void add_timer_local (struct timer_list *timer)”h]”hù)�”}”(hŒ.void add_timer_local(struct timer_list *timer)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjØÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÔÀh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MçubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔÀh²hh³jæÀh´Mçubhÿ)�”}”(hŒadd_timer_local”h]”j)�”}”(hŒadd_timer_local”h]”hŒadd_timer_local”…”�”}”(hjùÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõÀubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÔÀh²hh³jæÀh´Mçubj4)�”}”(hŒ(struct timer_list *timer)”h]”j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hj3Áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j5ÁŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjûÀsbŒc.add_timer_local”†”asbuh1hhjÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSÁh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjaÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÁubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjnÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj Áubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÔÀh²hh³jæÀh´Mçubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÐÀh²hh³jæÀh´Mçubah}”(h]”jËÀah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jæÀh´MçhjÍÀh²hubj4)�”}”(hhh]”jM)�”}”(hŒStart a timer on the local CPU”h]”hŒStart a timer on the local CPU”…”�”}”(hj˜Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mçhj•Áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÍÀh²hh³jæÀh´Mçubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj°ÁjHj°ÁjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒÂ**Parameters** ``struct timer_list *timer`` The timer to be started **Description** Same as add_timer() except that the timer flag TIMER_PINNED is set. See add_timer() for further details.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mëhj´Áubj¤)�”}”(hhh]”j©)�”}”(hŒ5``struct timer_list *timer`` The timer to be started ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hjÙÁh]”hŒstruct timer_list *timer”…”�”}”(hjÛÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj×Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MèhjÓÁubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be started”h]”hŒThe timer to be started”…”�”}”(hjòÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj´ÁubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mêhj´ÁubjM)�”}”(hŒCSame as add_timer() except that the timer flag TIMER_PINNED is set.”h]”hŒCSame as add_timer() except that the timer flag TIMER_PINNED is set.”…”�”}”(hj*Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Méhj´ÁubjM)�”}”(hŒ$See add_timer() for further details.”h]”hŒ$See add_timer() for further details.”…”�”}”(hj9Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mëhj´Áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒadd_timer_global (C function)”Œc.add_timer_global”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0void add_timer_global (struct timer_list *timer)”h]”hù)�”}”(hŒ/void add_timer_global(struct timer_list *timer)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjhÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjdÂh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MøubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwÂh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdÂh²hh³jvÂh´Møubhÿ)�”}”(hŒadd_timer_global”h]”j)�”}”(hŒadd_timer_global”h]”hŒadd_timer_global”…”�”}”(hj‰Âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…Âubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjdÂh²hh³jvÂh´Møubj4)�”}”(hŒ(struct timer_list *timer)”h]”j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¥Âh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¡ÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Âh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡Âubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hjÃÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÅÂŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‹ÂsbŒc.add_timer_global”†”asbuh1hhj¡ÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãÂh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡Âubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjñÂh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¡Âubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjþÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Âubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjdÂh²hh³jvÂh´Møubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj`Âh²hh³jvÂh´Møubah}”(h]”j[Âah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jvÂh´Møhj]Âh²hubj4)�”}”(hhh]”jM)�”}”(hŒ+Start a timer without TIMER_PINNED flag set”h]”hŒ+Start a timer without TIMER_PINNED flag set”…”�”}”(hj(Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Møhj%Ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj]Âh²hh³jvÂh´Møubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj@ÃjHj@ÃjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hŒÄ**Parameters** ``struct timer_list *timer`` The timer to be started **Description** Same as add_timer() except that the timer flag TIMER_PINNED is unset. See add_timer() for further details.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjJÃh]”hŒ Parameters”…”�”}”(hjLÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MühjDÃubj¤)�”}”(hhh]”j©)�”}”(hŒ5``struct timer_list *timer`` The timer to be started ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hjiÃh]”hŒstruct timer_list *timer”…”�”}”(hjkÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MùhjcÃubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be started”h]”hŒThe timer to be started”…”�”}”(hj‚Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~Ãh´MùhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~Ãh´Mùhj`Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjDÃubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MûhjDÃubjM)�”}”(hŒESame as add_timer() except that the timer flag TIMER_PINNED is unset.”h]”hŒESame as add_timer() except that the timer flag TIMER_PINNED is unset.”…”�”}”(hjºÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MúhjDÃubjM)�”}”(hŒ$See add_timer() for further details.”h]”hŒ$See add_timer() for further details.”…”�”}”(hjÉÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MühjDÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒadd_timer_on (C function)”Œc.add_timer_on”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5void add_timer_on (struct timer_list *timer, int cpu)”h]”hù)�”}”(hŒ4void add_timer_on(struct timer_list *timer, int cpu)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjøÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjôÃh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôÃh²hh³jÄh´M ubhÿ)�”}”(hŒ add_timer_on”h]”j)�”}”(hŒ add_timer_on”h]”hŒ add_timer_on”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjôÃh²hh³jÄh´M ubj4)�”}”(hŒ#(struct timer_list *timer, int cpu)”h]”(j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj5Äh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj1ÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1Äubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hjSÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jUÄŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÄsbŒc.add_timer_on”†”asbuh1hhj1ÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1Äubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj1Äubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjŽÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-Äubj:)�”}”(hŒint cpu”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj§Äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj£ÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj£Äubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjÃÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-Äubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjôÃh²hh³jÄh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjðÃh²hh³jÄh´M ubah}”(h]”jëÃah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÄh´M hjíÃh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!Start a timer on a particular CPU”h]”hŒ!Start a timer on a particular CPU”…”�”}”(hjíÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M hjêÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjíÃh²hh³jÄh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÅjHjÅjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX“**Parameters** ``struct timer_list *timer`` The timer to be started ``int cpu`` The CPU to start it on **Description** Same as add_timer() except that it starts the timer on the given CPU and the TIMER_PINNED flag is set. When timer shouldn't be a pinned timer in the next round, add_timer_global() should be used instead as it unsets the TIMER_PINNED flag. See add_timer() for further details.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M hj Åubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct timer_list *timer`` The timer to be started ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hj.Åh]”hŒstruct timer_list *timer”…”�”}”(hj0Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj,Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M hj(ÅubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be started”h]”hŒThe timer to be started”…”�”}”(hjGÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jCÅh´M hjDÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj(Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jCÅh´M hj%Åubj©)�”}”(hŒ#``int cpu`` The CPU to start it on ”h]”(j¯)�”}”(hŒ ``int cpu``”h]”jS)�”}”(hjgÅh]”hŒint cpu”…”�”}”(hjiÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjeÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M hjaÅubjÉ)�”}”(hhh]”jM)�”}”(hŒThe CPU to start it on”h]”hŒThe CPU to start it on”…”�”}”(hj€Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j|Åh´M hj}Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjaÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j|Åh´M hj%Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ÅubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M hj ÅubjM)�”}”(hŒîSame as add_timer() except that it starts the timer on the given CPU and the TIMER_PINNED flag is set. When timer shouldn't be a pinned timer in the next round, add_timer_global() should be used instead as it unsets the TIMER_PINNED flag.”h]”hŒðSame as add_timer() except that it starts the timer on the given CPU and the TIMER_PINNED flag is set. When timer shouldn’t be a pinned timer in the next round, add_timer_global() should be used instead as it unsets the TIMER_PINNED flag.”…”�”}”(hj¸Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M hj ÅubjM)�”}”(hŒ$See add_timer() for further details.”h]”hŒ$See add_timer() for further details.”…”�”}”(hjÇÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mhj Åubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtimer_delete (C function)”Œc.timer_delete”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int timer_delete (struct timer_list *timer)”h]”hù)�”}”(hŒ*int timer_delete(struct timer_list *timer)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjöÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjòÅh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MpubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòÅh²hh³jÆh´Mpubhÿ)�”}”(hŒ timer_delete”h]”j)�”}”(hŒ timer_delete”h]”hŒ timer_delete”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjòÅh²hh³jÆh´Mpubj4)�”}”(hŒ(struct timer_list *timer)”h]”j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj3Æh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj/ÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/Æubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hjQÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jSÆŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÆsbŒc.timer_delete”†”asbuh1hhj/ÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqÆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/Æubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj/Æubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjŒÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj+Æubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjòÅh²hh³jÆh´Mpubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjîÅh²hh³jÆh´Mpubah}”(h]”jéÅah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÆh´MphjëÅh²hubj4)�”}”(hhh]”jM)�”}”(hŒDeactivate a timer”h]”hŒDeactivate a timer”…”�”}”(hj¶Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mphj³Æh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjëÅh²hh³jÆh´Mpubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÎÆjHjÎÆjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX**Parameters** ``struct timer_list *timer`` The timer to be deactivated **Description** The function only deactivates a pending timer, but contrary to timer_delete_sync() it does not take into account whether the timer's callback function is concurrently executed on a different CPU or not. It neither prevents rearming of the timer. If **timer** can be rearmed concurrently then the return value of this function is meaningless. **Return** * ``0`` - The timer was not pending * ``1`` - The timer was pending and deactivated”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MthjÒÆubj¤)�”}”(hhh]”j©)�”}”(hŒ9``struct timer_list *timer`` The timer to be deactivated ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hj÷Æh]”hŒstruct timer_list *timer”…”�”}”(hjùÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjõÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MqhjñÆubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be deactivated”h]”hŒThe timer to be deactivated”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j Çh´Mqhj Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjñÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j Çh´MqhjîÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÒÆubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj2Çh]”hŒ Description”…”�”}”(hj4Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MshjÒÆubjM)�”}”(hXVThe function only deactivates a pending timer, but contrary to timer_delete_sync() it does not take into account whether the timer's callback function is concurrently executed on a different CPU or not. It neither prevents rearming of the timer. If **timer** can be rearmed concurrently then the return value of this function is meaningless.”h]”(hŒüThe function only deactivates a pending timer, but contrary to timer_delete_sync() it does not take into account whether the timer’s callback function is concurrently executed on a different CPU or not. It neither prevents rearming of the timer. If ”…”�”}”(hjHÇh²hh³Nh´NubjŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hjPÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHÇubhŒS can be rearmed concurrently then the return value of this function is meaningless.”…”�”}”(hjHÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MrhjÒÆubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjkÇh]”hŒReturn”…”�”}”(hjmÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjiÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MxhjÒÆubj C)�”}”(hhh]”(j„)�”}”(hŒ!``0`` - The timer was not pending”h]”jM)�”}”(hj†Çh]”(jS)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj‹Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjˆÇubhŒ - The timer was not pending”…”�”}”(hjˆÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Myhj„Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj�Çubj„)�”}”(hŒ-``1`` - The timer was pending and deactivated”h]”jM)�”}”(hj¬Çh]”(jS)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hj±Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj®ÇubhŒ( - The timer was pending and deactivated”…”�”}”(hj®Çh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MzhjªÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj�Çubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³j£Çh´MyhjÒÆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtimer_shutdown (C function)”Œc.timer_shutdown”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-int timer_shutdown (struct timer_list *timer)”h]”hù)�”}”(hŒ,int timer_shutdown(struct timer_list *timer)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjöÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjòÇh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòÇh²hh³jÈh´M„ubhÿ)�”}”(hŒtimer_shutdown”h]”j)�”}”(hŒtimer_shutdown”h]”hŒtimer_shutdown”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjòÇh²hh³jÈh´M„ubj4)�”}”(hŒ(struct timer_list *timer)”h]”j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj3Èh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj/ÈubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Èh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/Èubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hjQÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jSÈŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÈsbŒc.timer_shutdown”†”asbuh1hhj/ÈubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqÈh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/Èubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj/Èubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjŒÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/Èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj+Èubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjòÇh²hh³jÈh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjîÇh²hh³jÈh´M„ubah}”(h]”jéÇah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÈh´M„hjëÇh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'Deactivate a timer and prevent rearming”h]”hŒ'Deactivate a timer and prevent rearming”…”�”}”(hj¶Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M„hj³Èh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjëÇh²hh³jÈh´M„ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÎÈjHjÎÈjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX**Parameters** ``struct timer_list *timer`` The timer to be deactivated **Description** The function does not wait for an eventually running timer callback on a different CPU but it prevents rearming of the timer. Any attempt to arm **timer** after this function returns will be silently ignored. This function is useful for teardown code and should only be used when timer_shutdown_sync() cannot be invoked due to locking or context constraints. **Return** * ``0`` - The timer was not pending * ``1`` - The timer was pending”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MˆhjÒÈubj¤)�”}”(hhh]”j©)�”}”(hŒ9``struct timer_list *timer`` The timer to be deactivated ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hj÷Èh]”hŒstruct timer_list *timer”…”�”}”(hjùÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjõÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M…hjñÈubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be deactivated”h]”hŒThe timer to be deactivated”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÒÈubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj2Éh]”hŒ Description”…”�”}”(hj4Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M‡hjÒÈubjM)�”}”(hŒÐThe function does not wait for an eventually running timer callback on a different CPU but it prevents rearming of the timer. Any attempt to arm **timer** after this function returns will be silently ignored.”h]”(hŒ‘The function does not wait for an eventually running timer callback on a different CPU but it prevents rearming of the timer. Any attempt to arm ”…”�”}”(hjHÉh²hh³Nh´NubjŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hjPÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHÉubhŒ6 after this function returns will be silently ignored.”…”�”}”(hjHÉh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M†hjÒÈubjM)�”}”(hŒ•This function is useful for teardown code and should only be used when timer_shutdown_sync() cannot be invoked due to locking or context constraints.”h]”hŒ•This function is useful for teardown code and should only be used when timer_shutdown_sync() cannot be invoked due to locking or context constraints.”…”�”}”(hjiÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MŠhjÒÈubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjzÉh]”hŒReturn”…”�”}”(hj|Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M�hjÒÈubj C)�”}”(hhh]”(j„)�”}”(hŒ!``0`` - The timer was not pending”h]”jM)�”}”(hj•Éh]”(jS)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjšÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj—ÉubhŒ - The timer was not pending”…”�”}”(hj—Éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MŽhj“Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj�Éubj„)�”}”(hŒ``1`` - The timer was pending”h]”jM)�”}”(hj»Éh]”(jS)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hjÀÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj½ÉubhŒ - The timer was pending”…”�”}”(hj½Éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M�hj¹Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj�Éubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³j²Éh´MŽhjÒÈubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"timer_delete_sync_try (C function)”Œc.timer_delete_sync_try”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4int timer_delete_sync_try (struct timer_list *timer)”h]”hù)�”}”(hŒ3int timer_delete_sync_try(struct timer_list *timer)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÊh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÊh²hh³jÊh´MÂubhÿ)�”}”(hŒtimer_delete_sync_try”h]”j)�”}”(hŒtimer_delete_sync_try”h]”hŒtimer_delete_sync_try”…”�”}”(hj&Êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"Êubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÊh²hh³jÊh´MÂubj4)�”}”(hŒ(struct timer_list *timer)”h]”j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjBÊh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj>ÊubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOÊh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>Êubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hj`Êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]Êubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jbÊŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj(ÊsbŒc.timer_delete_sync_try”†”asbuh1hhj>ÊubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Êh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>Êubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŽÊh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj>Êubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj›Êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>Êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:Êubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÊh²hh³jÊh´MÂubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjýÉh²hh³jÊh´MÂubah}”(h]”jøÉah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÊh´MÂhjúÉh²hubj4)�”}”(hhh]”jM)�”}”(hŒTry to deactivate a timer”h]”hŒTry to deactivate a timer”…”�”}”(hjÅÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÂhjÂÊh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjúÉh²hh³jÊh´MÂubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÝÊjHjÝÊjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX)**Parameters** ``struct timer_list *timer`` Timer to deactivate **Description** This function tries to deactivate a timer. On success the timer is not queued and the timer callback function is not running on any CPU. This function does not guarantee that the timer cannot be rearmed right after dropping the base lock. That needs to be prevented by the calling code if necessary. **Return** * ``0`` - The timer was not pending * ``1`` - The timer was pending and deactivated * ``-1`` - The timer callback function is running on a different CPU”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÆhjáÊubj¤)�”}”(hhh]”j©)�”}”(hŒ1``struct timer_list *timer`` Timer to deactivate ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hjËh]”hŒstruct timer_list *timer”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÃhjËubjÉ)�”}”(hhh]”jM)�”}”(hŒTimer to deactivate”h]”hŒTimer to deactivate”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjáÊubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjAËh]”hŒ Description”…”�”}”(hjCËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÅhjáÊubjM)�”}”(hŒˆThis function tries to deactivate a timer. On success the timer is not queued and the timer callback function is not running on any CPU.”h]”hŒˆThis function tries to deactivate a timer. On success the timer is not queued and the timer callback function is not running on any CPU.”…”�”}”(hjWËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÄhjáÊubjM)�”}”(hŒ¢This function does not guarantee that the timer cannot be rearmed right after dropping the base lock. That needs to be prevented by the calling code if necessary.”h]”hŒ¢This function does not guarantee that the timer cannot be rearmed right after dropping the base lock. That needs to be prevented by the calling code if necessary.”…”�”}”(hjfËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÇhjáÊubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjwËh]”hŒReturn”…”�”}”(hjyËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuËubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MËhjáÊubj C)�”}”(hhh]”(j„)�”}”(hŒ"``0`` - The timer was not pending”h]”jM)�”}”(hj’Ëh]”(jS)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj—Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj”ËubhŒ - The timer was not pending”…”�”}”(hj”Ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÌhj�Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj�Ëubj„)�”}”(hŒ.``1`` - The timer was pending and deactivated”h]”jM)�”}”(hj¸Ëh]”(jS)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hj½Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjºËubhŒ) - The timer was pending and deactivated”…”�”}”(hjºËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÍhj¶Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj�Ëubj„)�”}”(hŒB``-1`` - The timer callback function is running on a different CPU”h]”jM)�”}”(hjÞËh]”(jS)�”}”(hŒ``-1``”h]”hŒ-1”…”�”}”(hjãËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjàËubhŒ< - The timer callback function is running on a different CPU”…”�”}”(hjàËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MÎhjÜËubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj�Ëubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³j¯Ëh´MÌhjáÊubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒtimer_delete_sync (C function)”Œc.timer_delete_sync”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0int timer_delete_sync (struct timer_list *timer)”h]”hù)�”}”(hŒ/int timer_delete_sync(struct timer_list *timer)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj(Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$Ìh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$Ìh²hh³j6Ìh´Mbubhÿ)�”}”(hŒtimer_delete_sync”h]”j)�”}”(hŒtimer_delete_sync”h]”hŒtimer_delete_sync”…”�”}”(hjIÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEÌubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj$Ìh²hh³j6Ìh´Mbubj4)�”}”(hŒ(struct timer_list *timer)”h]”j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjeÌh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjaÌubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrÌh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaÌubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hjƒÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j…ÌŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjKÌsbŒc.timer_delete_sync”†”asbuh1hhjaÌubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£Ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaÌubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj±Ìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjaÌubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj¾Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]Ìubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj$Ìh²hh³j6Ìh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj Ìh²hh³j6Ìh´Mbubah}”(h]”jÌah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j6Ìh´MbhjÌh²hubj4)�”}”(hhh]”jM)�”}”(hŒ6Deactivate a timer and wait for the handler to finish.”h]”hŒ6Deactivate a timer and wait for the handler to finish.”…”�”}”(hjèÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MbhjåÌh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÌh²hh³j6Ìh´Mbubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÍjHjÍjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hXí**Parameters** ``struct timer_list *timer`` The timer to be deactivated **Description** Synchronization rules: Callers must prevent restarting of the timer, otherwise this function is meaningless. It must not be called from interrupt contexts unless the timer is an irqsafe one. The caller must not hold locks which would prevent completion of the timer's callback function. The timer's handler must not call add_timer_on(). Upon exit the timer is not queued and the handler is not running on any CPU. For !irqsafe timers, the caller must not hold locks that are held in interrupt context. Even if the lock has nothing to do with the timer in question. Here's why:: CPU0 CPU1 ---- ---- call_timer_fn(); base->running_timer = mytimer; spin_lock_irq(somelock); spin_lock(somelock); timer_delete_sync(mytimer); while (base->running_timer == mytimer); Now timer_delete_sync() will never return and never release somelock. The interrupt on the other CPU is waiting to grab somelock but it has interrupted the softirq that CPU0 is waiting to finish. This function cannot guarantee that the timer is not rearmed again by some concurrent or preempting code, right after it dropped the base lock. If there is the possibility of a concurrent rearm then the return value of the function is meaningless. If such a guarantee is needed, e.g. for teardown situations then use timer_shutdown_sync() instead. **Return** * ``0`` - The timer was not pending * ``1`` - The timer was pending and deactivated”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MfhjÍubj¤)�”}”(hhh]”j©)�”}”(hŒ9``struct timer_list *timer`` The timer to be deactivated ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hj)Íh]”hŒstruct timer_list *timer”…”�”}”(hj+Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj'Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mchj#ÍubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be deactivated”h]”hŒThe timer to be deactivated”…”�”}”(hjBÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j>Íh´Mchj?Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj#Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j>Íh´Mchj Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÍubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjdÍh]”hŒ Description”…”�”}”(hjfÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MehjÍubjM)�”}”(hX�Synchronization rules: Callers must prevent restarting of the timer, otherwise this function is meaningless. It must not be called from interrupt contexts unless the timer is an irqsafe one. The caller must not hold locks which would prevent completion of the timer's callback function. The timer's handler must not call add_timer_on(). Upon exit the timer is not queued and the handler is not running on any CPU.”h]”hX¡Synchronization rules: Callers must prevent restarting of the timer, otherwise this function is meaningless. It must not be called from interrupt contexts unless the timer is an irqsafe one. The caller must not hold locks which would prevent completion of the timer’s callback function. The timer’s handler must not call add_timer_on(). Upon exit the timer is not queued and the handler is not running on any CPU.”…”�”}”(hjzÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MdhjÍubjM)�”}”(hŒ¤For !irqsafe timers, the caller must not hold locks that are held in interrupt context. Even if the lock has nothing to do with the timer in question. Here's why::”h]”hŒ¥For !irqsafe timers, the caller must not hold locks that are held in interrupt context. Even if the lock has nothing to do with the timer in question. Here’s why:”…”�”}”(hj‰Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MkhjÍubjÅ)�”}”(hX©CPU0 CPU1 ---- ---- call_timer_fn(); base->running_timer = mytimer; spin_lock_irq(somelock); spin_lock(somelock); timer_delete_sync(mytimer); while (base->running_timer == mytimer);”h]”hX©CPU0 CPU1 ---- ---- call_timer_fn(); base->running_timer = mytimer; spin_lock_irq(somelock); spin_lock(somelock); timer_delete_sync(mytimer); while (base->running_timer == mytimer);”…”�”}”hj˜Ísbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MohjÍubjM)�”}”(hŒÃNow timer_delete_sync() will never return and never release somelock. The interrupt on the other CPU is waiting to grab somelock but it has interrupted the softirq that CPU0 is waiting to finish.”h]”hŒÃNow timer_delete_sync() will never return and never release somelock. The interrupt on the other CPU is waiting to grab somelock but it has interrupted the softirq that CPU0 is waiting to finish.”…”�”}”(hj§Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MzhjÍubjM)�”}”(hŒ÷This function cannot guarantee that the timer is not rearmed again by some concurrent or preempting code, right after it dropped the base lock. If there is the possibility of a concurrent rearm then the return value of the function is meaningless.”h]”hŒ÷This function cannot guarantee that the timer is not rearmed again by some concurrent or preempting code, right after it dropped the base lock. If there is the possibility of a concurrent rearm then the return value of the function is meaningless.”…”�”}”(hj¶Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M~hjÍubjM)�”}”(hŒcIf such a guarantee is needed, e.g. for teardown situations then use timer_shutdown_sync() instead.”h]”hŒcIf such a guarantee is needed, e.g. for teardown situations then use timer_shutdown_sync() instead.”…”�”}”(hjÅÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MƒhjÍubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÖÍh]”hŒReturn”…”�”}”(hjØÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M†hjÍubj C)�”}”(hhh]”(j„)�”}”(hŒ!``0`` - The timer was not pending”h]”jM)�”}”(hjñÍh]”(jS)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjöÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjóÍubhŒ - The timer was not pending”…”�”}”(hjóÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M‡hjïÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjìÍubj„)�”}”(hŒ-``1`` - The timer was pending and deactivated”h]”jM)�”}”(hjÎh]”(jS)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÎubhŒ( - The timer was pending and deactivated”…”�”}”(hjÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MˆhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjìÍubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³jÎh´M‡hjÍubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ timer_shutdown_sync (C function)”Œc.timer_shutdown_sync”hNt”auh1hÜhjSHh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2int timer_shutdown_sync (struct timer_list *timer)”h]”hù)�”}”(hŒ1int timer_shutdown_sync(struct timer_list *timer)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjaÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj]Îh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpÎh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj]Îh²hh³joÎh´M’ubhÿ)�”}”(hŒtimer_shutdown_sync”h]”j)�”}”(hŒtimer_shutdown_sync”h]”hŒtimer_shutdown_sync”…”�”}”(hj‚Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~Îubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj]Îh²hh³joÎh´M’ubj4)�”}”(hŒ(struct timer_list *timer)”h]”j:)�”}”(hŒstruct timer_list *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjžÎh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjšÎubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Îh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjšÎubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hj¼Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹Îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¾ÎŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj„ÎsbŒc.timer_shutdown_sync”†”asbuh1hhjšÎubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜÎh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjšÎubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjêÎh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjšÎubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj÷Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj–Îubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj]Îh²hh³joÎh´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjYÎh²hh³joÎh´M’ubah}”(h]”jTÎah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³joÎh´M’hjVÎh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%Shutdown a timer and prevent rearming”h]”hŒ%Shutdown a timer and prevent rearming”…”�”}”(hj!Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M’hjÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjVÎh²hh³joÎh´M’ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj9ÏjHj9ÏjI‰jJ‰jK‰uh1híh²hhjSHh³Nh´Nubj„)�”}”(hX**Parameters** ``struct timer_list *timer`` The timer to be shutdown **Description** When the function returns it is guaranteed that: - **timer** is not queued - The callback function of **timer** is not running - **timer** cannot be enqueued again. Any attempt to rearm **timer** is silently ignored. See timer_delete_sync() for synchronization rules. This function is useful for final teardown of an infrastructure where the timer is subject to a circular dependency problem. A common pattern for this is a timer and a workqueue where the timer can schedule work and work can arm the timer. On shutdown the workqueue must be destroyed and the timer must be prevented from rearming. Unless the code has conditionals like 'if (mything->in_shutdown)' to prevent that there is no way to get this correct with timer_delete_sync(). timer_shutdown_sync() is solving the problem. The correct ordering of calls in this case is: timer_shutdown_sync(:c:type:`mything->timer `); workqueue_destroy(:c:type:`mything->workqueue `); After this 'mything' can be safely freed. This obviously implies that the timer is not required to be functional for the rest of the shutdown operation. **Return** * ``0`` - The timer was not pending * ``1`` - The timer was pending”•h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjCÏh]”hŒ Parameters”…”�”}”(hjEÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M–hj=Ïubj¤)�”}”(hhh]”j©)�”}”(hŒ6``struct timer_list *timer`` The timer to be shutdown ”h]”(j¯)�”}”(hŒ``struct timer_list *timer``”h]”jS)�”}”(hjbÏh]”hŒstruct timer_list *timer”…”�”}”(hjdÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj`Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M“hj\ÏubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be shutdown”h]”hŒThe timer to be shutdown”…”�”}”(hj{Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jwÏh´M“hjxÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj\Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jwÏh´M“hjYÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj=ÏubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M•hj=Ïubj¤)�”}”(hhh]”j©)�”}”(hŒÛWhen the function returns it is guaranteed that: - **timer** is not queued - The callback function of **timer** is not running - **timer** cannot be enqueued again. Any attempt to rearm **timer** is silently ignored. ”h]”(j¯)�”}”(hŒ0When the function returns it is guaranteed that:”h]”hŒ0When the function returns it is guaranteed that:”…”�”}”(hjºÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M˜hj¶ÏubjÉ)�”}”(hhh]”j C)�”}”(hhh]”(j„)�”}”(hŒ**timer** is not queued”h]”jM)�”}”(hjÑÏh]”(jŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hjÖÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓÏubhŒ is not queued”…”�”}”(hjÓÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M•hjÏÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjÌÏubj„)�”}”(hŒ1The callback function of **timer** is not running”h]”jM)�”}”(hj÷Ïh]”(hŒThe callback function of ”…”�”}”(hjùÏh²hh³Nh´NubjŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùÏubhŒ is not running”…”�”}”(hjùÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M–hjõÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjÌÏubj„)�”}”(hŒX**timer** cannot be enqueued again. Any attempt to rearm **timer** is silently ignored. ”h]”jM)�”}”(hŒW**timer** cannot be enqueued again. Any attempt to rearm **timer** is silently ignored.”h]”(jŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hj'Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#ÐubhŒ0 cannot be enqueued again. Any attempt to rearm ”…”�”}”(hj#Ðh²hh³Nh´NubjŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hj9Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#ÐubhŒ is silently ignored.”…”�”}”(hj#Ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M—hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjÌÏubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³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£hj=ÏubjM)�”}”(hŒ2See timer_delete_sync() for synchronization rules.”h]”hŒ2See timer_delete_sync() for synchronization rules.”…”�”}”(hjpÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mšhj=ÏubjM)�”}”(hŒ|This function is useful for final teardown of an infrastructure where the timer is subject to a circular dependency problem.”h]”hŒ|This function is useful for final teardown of an infrastructure where the timer is subject to a circular dependency problem.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mœhj=ÏubjM)�”}”(hX]A common pattern for this is a timer and a workqueue where the timer can schedule work and work can arm the timer. On shutdown the workqueue must be destroyed and the timer must be prevented from rearming. Unless the code has conditionals like 'if (mything->in_shutdown)' to prevent that there is no way to get this correct with timer_delete_sync().”h]”hXaA common pattern for this is a timer and a workqueue where the timer can schedule work and work can arm the timer. On shutdown the workqueue must be destroyed and the timer must be prevented from rearming. Unless the code has conditionals like ‘if (mything->in_shutdown)’ to prevent that there is no way to get this correct with timer_delete_sync().”…”�”}”(hjŽÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´MŸhj=ÏubjM)�”}”(hŒ\timer_shutdown_sync() is solving the problem. The correct ordering of calls in this case is:”h]”hŒ\timer_shutdown_sync() is solving the problem. The correct ordering of calls in this case is:”…”�”}”(hj�Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¥hj=Ïubji)�”}”(hŒttimer_shutdown_sync(:c:type:`mything->timer `); workqueue_destroy(:c:type:`mything->workqueue `); ”h]”jM)�”}”(hŒstimer_shutdown_sync(:c:type:`mything->timer `); workqueue_destroy(:c:type:`mything->workqueue `);”h]”(hŒtimer_shutdown_sync(”…”�”}”(hj°Ðh²hh³Nh´Nubh)�”}”(hŒ":c:type:`mything->timer `”h]”jS)�”}”(hjºÐh]”hŒmything->timer”…”�”}”(hj¼Ðh²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj¸Ðubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œmything”uh1hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M¨hj°ÐubhŒ); workqueue_destroy(”…”�”}”(hj°Ðh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`mything->workqueue `”h]”jS)�”}”(hjÞÐh]”hŒmything->workqueue”…”�”}”(hjàÐh²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjÜÐubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œmything”uh1hh³j×Ðh´M¨hj°ÐubhŒ);”…”�”}”(hj°Ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j×Ðh´M¨hj¬Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j×Ðh´M¨hj=ÏubjM)�”}”(hŒ)After this 'mything' can be safely freed.”h]”hŒ-After this ‘mything’ can be safely freed.”…”�”}”(hj Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M«hj=ÏubjM)�”}”(hŒnThis obviously implies that the timer is not required to be functional for the rest of the shutdown operation.”h]”hŒnThis obviously implies that the timer is not required to be functional for the rest of the shutdown operation.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M­hj=ÏubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj+Ñh]”hŒReturn”…”�”}”(hj-Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M°hj=Ïubj C)�”}”(hhh]”(j„)�”}”(hŒ!``0`` - The timer was not pending”h]”jM)�”}”(hjFÑh]”(jS)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjKÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjHÑubhŒ - The timer was not pending”…”�”}”(hjHÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M±hjDÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjAÑubj„)�”}”(hŒ``1`` - The timer was pending”h]”jM)�”}”(hjlÑh]”(jS)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hjqÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjnÑubhŒ - The timer was pending”…”�”}”(hjnÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´M²hjjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjAÑubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³jcÑh´M±hj=Ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjSHh²hh³Nh´Nubeh}”(h]”Œtime-and-timer-routines”ah ]”h"]”Œtime and timer routines”ah$]”h&]”uh1hµhh·h²hh³hÊh´K%ubh¶)�”}”(hhh]”(h»)�”}”(hŒHigh-resolution timers”h]”hŒHigh-resolution timers”…”�”}”(hj¨Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¥Ñh²hh³hÊh´K1ubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒktime_set (C function)”Œ c.ktime_set”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=ktime_t ktime_set (const s64 secs, const unsigned long nsecs)”h]”hù)�”}”(hŒhjÒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Òh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÒubh)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj?Òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jAÒŒmodname”NŒ classname”Njwjz)�”}”j}]”jîÑŒ c.ktime_set”†”asbuh1hhjÒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Òh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÒubj)�”}”(hŒsecs”h]”hŒsecs”…”�”}”(hjkÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÒubj:)�”}”(hŒconst unsigned long nsecs”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj„Òh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj€ÒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Òh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Òubjü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjŸÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj€ÒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Òh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Òubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj»Òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj€ÒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉÒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Òubj)�”}”(hŒnsecs”h]”hŒnsecs”…”�”}”(hj×Òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÒubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjËÑh²hh³jóÑh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÇÑh²hh³jóÑh´Kubah}”(h]”jÂÑah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jóÑh´KhjÄÑh²hubj4)�”}”(hhh]”jM)�”}”(hŒ7Set a ktime_t variable from a seconds/nanoseconds value”h]”hŒ7Set a ktime_t variable from a seconds/nanoseconds value”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KhjþÒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÄÑh²hh³jóÑh´Kubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÓjHjÓjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒ�**Parameters** ``const s64 secs`` seconds to set ``const unsigned long nsecs`` nanoseconds to set **Return** The ktime_t representation of the value.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´K"hjÓubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``const s64 secs`` seconds to set ”h]”(j¯)�”}”(hŒ``const s64 secs``”h]”jS)�”}”(hjBÓh]”hŒconst s64 secs”…”�”}”(hjDÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj@Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´Khj<ÓubjÉ)�”}”(hhh]”jM)�”}”(hŒseconds to set”h]”hŒseconds to set”…”�”}”(hj[Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jWÓh´KhjXÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj<Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jWÓh´Khj9Óubj©)�”}”(hŒ1``const unsigned long nsecs`` nanoseconds to set ”h]”(j¯)�”}”(hŒ``const unsigned long nsecs``”h]”jS)�”}”(hj{Óh]”hŒconst unsigned long nsecs”…”�”}”(hj}Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjyÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´K hjuÓubjÉ)�”}”(hhh]”jM)�”}”(hŒnanoseconds to set”h]”hŒnanoseconds to set”…”�”}”(hj”Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�Óh´K hj‘Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjuÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Óh´K hj9Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÓubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¶Óh]”hŒReturn”…”�”}”(hj¸Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´K"hjÓubjM)�”}”(hŒ(The ktime_t representation of the value.”h]”hŒ(The ktime_t representation of the value.”…”�”}”(hjÌÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´K"hjÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒktime_compare (C function)”Œc.ktime_compare”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:int ktime_compare (const ktime_t cmp1, const ktime_t cmp2)”h]”hù)�”}”(hŒ9int ktime_compare(const ktime_t cmp1, const ktime_t cmp2)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjûÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj÷Óh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷Óh²hh³j Ôh´KTubhÿ)�”}”(hŒ ktime_compare”h]”j)�”}”(hŒ ktime_compare”h]”hŒ ktime_compare”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj÷Óh²hh³j Ôh´KTubj4)�”}”(hŒ((const ktime_t cmp1, const ktime_t cmp2)”h]”(j:)�”}”(hŒconst ktime_t cmp1”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj8Ôh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj4ÔubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEÔh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4Ôubh)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjVÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jXÔŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÔsbŒc.ktime_compare”†”asbuh1hhj4ÔubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÔh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4Ôubj)�”}”(hŒcmp1”h]”hŒcmp1”…”�”}”(hj„Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0Ôubj:)�”}”(hŒconst ktime_t cmp2”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj�Ôh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™ÔubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÔh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™Ôubh)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hj»Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j½ÔŒmodname”NŒ classname”Njwjz)�”}”j}]”jrÔŒc.ktime_compare”†”asbuh1hhj™ÔubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙÔh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™Ôubj)�”}”(hŒcmp2”h]”hŒcmp2”…”�”}”(hjçÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0Ôubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj÷Óh²hh³j Ôh´KTubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjóÓh²hh³j Ôh´KTubah}”(h]”jîÓah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j Ôh´KThjðÓh²hubj4)�”}”(hhh]”jM)�”}”(hŒ9Compares two ktime_t variables for less, greater or equal”h]”hŒ9Compares two ktime_t variables for less, greater or equal”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KThjÕh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjðÓh²hh³j Ôh´KTubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj)ÕjHj)ÕjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒ²**Parameters** ``const ktime_t cmp1`` comparable1 ``const ktime_t cmp2`` comparable2 **Return** ... cmp1 < cmp2: return <0 cmp1 == cmp2: return 0 cmp1 > cmp2: return >0”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj3Õh]”hŒ Parameters”…”�”}”(hj5Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KXhj-Õubj¤)�”}”(hhh]”(j©)�”}”(hŒ#``const ktime_t cmp1`` comparable1 ”h]”(j¯)�”}”(hŒ``const ktime_t cmp1``”h]”jS)�”}”(hjRÕh]”hŒconst ktime_t cmp1”…”�”}”(hjTÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjPÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KUhjLÕubjÉ)�”}”(hhh]”jM)�”}”(hŒ comparable1”h]”hŒ comparable1”…”�”}”(hjkÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jgÕh´KUhjhÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjLÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jgÕh´KUhjIÕubj©)�”}”(hŒ#``const ktime_t cmp2`` comparable2 ”h]”(j¯)�”}”(hŒ``const ktime_t cmp2``”h]”jS)�”}”(hj‹Õh]”hŒconst ktime_t cmp2”…”�”}”(hj�Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‰Õubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KVhj…ÕubjÉ)�”}”(hhh]”jM)�”}”(hŒ comparable2”h]”hŒ comparable2”…”�”}”(hj¤Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j Õh´KVhj¡Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj…Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j Õh´KVhjIÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj-ÕubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÆÕh]”hŒReturn”…”�”}”(hjÈÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KXhj-ÕubjM)�”}”(hŒJ... cmp1 < cmp2: return <0 cmp1 == cmp2: return 0 cmp1 > cmp2: return >0”h]”hŒJ... cmp1 < cmp2: return <0 cmp1 == cmp2: return 0 cmp1 > cmp2: return >0”…”�”}”(hjÜÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KXhj-Õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒktime_after (C function)”Œ c.ktime_after”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9bool ktime_after (const ktime_t cmp1, const ktime_t cmp2)”h]”hù)�”}”(hŒ8bool ktime_after(const ktime_t cmp1, const ktime_t cmp2)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÖh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KgubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖh²hh³jÖh´Kgubhÿ)�”}”(hŒ ktime_after”h]”j)�”}”(hŒ ktime_after”h]”hŒ ktime_after”…”�”}”(hj+Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'Öubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÖh²hh³jÖh´Kgubj4)�”}”(hŒ((const ktime_t cmp1, const ktime_t cmp2)”h]”(j:)�”}”(hŒconst ktime_t cmp1”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjGÖh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjCÖubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTÖh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCÖubh)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjeÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jgÖŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj-ÖsbŒ c.ktime_after”†”asbuh1hhjCÖubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Öh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCÖubj)�”}”(hŒcmp1”h]”hŒcmp1”…”�”}”(hj“Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?Öubj:)�”}”(hŒconst ktime_t cmp2”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj¬Öh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¨ÖubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Öh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¨Öubh)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjÊÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÌÖŒmodname”NŒ classname”Njwjz)�”}”j}]”j�ÖŒ c.ktime_after”†”asbuh1hhj¨ÖubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÖh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¨Öubj)�”}”(hŒcmp2”h]”hŒcmp2”…”�”}”(hjöÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨Öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?Öubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÖh²hh³jÖh´Kgubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÖh²hh³jÖh´Kgubah}”(h]”jþÕah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÖh´KghjÖh²hubj4)�”}”(hhh]”jM)�”}”(hŒ6Compare if a ktime_t value is bigger than another one.”h]”hŒ6Compare if a ktime_t value is bigger than another one.”…”�”}”(hj ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´Kghj×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÖh²hh³jÖh´Kgubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj8×jHj8×jI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒ‰**Parameters** ``const ktime_t cmp1`` comparable1 ``const ktime_t cmp2`` comparable2 **Return** true if cmp1 happened after cmp2.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjB×h]”hŒ Parameters”…”�”}”(hjD×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´Kkhj<×ubj¤)�”}”(hhh]”(j©)�”}”(hŒ#``const ktime_t cmp1`` comparable1 ”h]”(j¯)�”}”(hŒ``const ktime_t cmp1``”h]”jS)�”}”(hja×h]”hŒconst ktime_t cmp1”…”�”}”(hjc×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj_×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´Khhj[×ubjÉ)�”}”(hhh]”jM)�”}”(hŒ comparable1”h]”hŒ comparable1”…”�”}”(hjz×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jv×h´Khhjw×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj[×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jv×h´KhhjX×ubj©)�”}”(hŒ#``const ktime_t cmp2`` comparable2 ”h]”(j¯)�”}”(hŒ``const ktime_t cmp2``”h]”jS)�”}”(hjš×h]”hŒconst ktime_t cmp2”…”�”}”(hjœ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj˜×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´Kihj”×ubjÉ)�”}”(hhh]”jM)�”}”(hŒ comparable2”h]”hŒ comparable2”…”�”}”(hj³×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¯×h´Kihj°×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj”×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¯×h´KihjX×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj<×ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÕ×h]”hŒReturn”…”�”}”(hj××h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´Kkhj<×ubjM)�”}”(hŒ!true if cmp1 happened after cmp2.”h]”hŒ!true if cmp1 happened after cmp2.”…”�”}”(hjë×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´Kkhj<×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒktime_before (C function)”Œc.ktime_before”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:bool ktime_before (const ktime_t cmp1, const ktime_t cmp2)”h]”hù)�”}”(hŒ9bool ktime_before(const ktime_t cmp1, const ktime_t cmp2)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjØh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KsubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Øh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjØh²hh³j'Øh´Ksubhÿ)�”}”(hŒ ktime_before”h]”j)�”}”(hŒ ktime_before”h]”hŒ ktime_before”…”�”}”(hj:Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6Øubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjØh²hh³j'Øh´Ksubj4)�”}”(hŒ((const ktime_t cmp1, const ktime_t cmp2)”h]”(j:)�”}”(hŒconst ktime_t cmp1”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjVØh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjRØubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcØh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRØubh)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjtØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jvØŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj<ØsbŒc.ktime_before”†”asbuh1hhjRØubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Øh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRØubj)�”}”(hŒcmp1”h]”hŒcmp1”…”�”}”(hj¢Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjNØubj:)�”}”(hŒconst ktime_t cmp2”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj»Øh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj·ØubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈØh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·Øubh)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjÙØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÛØŒmodname”NŒ classname”Njwjz)�”}”j}]”j�ØŒc.ktime_before”†”asbuh1hhj·ØubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Øh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·Øubj)�”}”(hŒcmp2”h]”hŒcmp2”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjNØubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjØh²hh³j'Øh´Ksubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjØh²hh³j'Øh´Ksubah}”(h]”j Øah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j'Øh´KshjØh²hubj4)�”}”(hhh]”jM)�”}”(hŒ7Compare if a ktime_t value is smaller than another one.”h]”hŒ7Compare if a ktime_t value is smaller than another one.”…”�”}”(hj/Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´Kshj,Ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjØh²hh³j'Øh´Ksubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjGÙjHjGÙjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒŠ**Parameters** ``const ktime_t cmp1`` comparable1 ``const ktime_t cmp2`` comparable2 **Return** true if cmp1 happened before cmp2.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjQÙh]”hŒ Parameters”…”�”}”(hjSÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KwhjKÙubj¤)�”}”(hhh]”(j©)�”}”(hŒ#``const ktime_t cmp1`` comparable1 ”h]”(j¯)�”}”(hŒ``const ktime_t cmp1``”h]”jS)�”}”(hjpÙh]”hŒconst ktime_t cmp1”…”�”}”(hjrÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjnÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KthjjÙubjÉ)�”}”(hhh]”jM)�”}”(hŒ comparable1”h]”hŒ comparable1”…”�”}”(hj‰Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j…Ùh´Kthj†Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…Ùh´KthjgÙubj©)�”}”(hŒ#``const ktime_t cmp2`` comparable2 ”h]”(j¯)�”}”(hŒ``const ktime_t cmp2``”h]”jS)�”}”(hj©Ùh]”hŒconst ktime_t cmp2”…”�”}”(hj«Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj§Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´Kuhj£ÙubjÉ)�”}”(hhh]”jM)�”}”(hŒ comparable2”h]”hŒ comparable2”…”�”}”(hjÂÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¾Ùh´Kuhj¿Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj£Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¾Ùh´KuhjgÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjKÙubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjäÙh]”hŒReturn”…”�”}”(hjæÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KwhjKÙubjM)�”}”(hŒ"true if cmp1 happened before cmp2.”h]”hŒ"true if cmp1 happened before cmp2.”…”�”}”(hjúÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KwhjKÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%ktime_to_timespec64_cond (C function)”Œc.ktime_to_timespec64_cond”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒGbool ktime_to_timespec64_cond (const ktime_t kt, struct timespec64 *ts)”h]”hù)�”}”(hŒFbool ktime_to_timespec64_cond(const ktime_t kt, struct timespec64 *ts)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj)Úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj%Úh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KÈubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Úh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj%Úh²hh³j6Úh´KÈubhÿ)�”}”(hŒktime_to_timespec64_cond”h]”j)�”}”(hŒktime_to_timespec64_cond”h]”hŒktime_to_timespec64_cond”…”�”}”(hjIÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEÚubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj%Úh²hh³j6Úh´KÈubj4)�”}”(hŒ)(const ktime_t kt, struct timespec64 *ts)”h]”(j:)�”}”(hŒconst ktime_t kt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjeÚh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjaÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrÚh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaÚubh)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjƒÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j…ÚŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjKÚsbŒc.ktime_to_timespec64_cond”†”asbuh1hhjaÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£Úh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaÚubj)�”}”(hŒkt”h]”hŒkt”…”�”}”(hj±Úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]Úubj:)�”}”(hŒstruct timespec64 *ts”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÊÚh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÆÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Úh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆÚubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hjèÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jêÚŒmodname”NŒ classname”Njwjz)�”}”j}]”jŸÚŒc.ktime_to_timespec64_cond”†”asbuh1hhjÆÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆÚubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÆÚubj)�”}”(hŒts”h]”hŒts”…”�”}”(hj!Ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]Úubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj%Úh²hh³j6Úh´KÈubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj!Úh²hh³j6Úh´KÈubah}”(h]”jÚah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j6Úh´KÈhjÚh²hubj4)�”}”(hhh]”jM)�”}”(hŒRconvert a ktime_t variable to timespec64 format only if the variable contains data”h]”hŒRconvert a ktime_t variable to timespec64 format only if the variable contains data”…”�”}”(hjKÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KÈhjHÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÚh²hh³j6Úh´KÈubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjcÛjHjcÛjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒã**Parameters** ``const ktime_t kt`` the ktime_t variable to convert ``struct timespec64 *ts`` the timespec variable to store the result in **Return** ``true`` if there was a successful conversion, ``false`` if kt was 0.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjmÛh]”hŒ Parameters”…”�”}”(hjoÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KÌhjgÛubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``const ktime_t kt`` the ktime_t variable to convert ”h]”(j¯)�”}”(hŒ``const ktime_t kt``”h]”jS)�”}”(hjŒÛh]”hŒconst ktime_t kt”…”�”}”(hjŽÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŠÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KÊhj†ÛubjÉ)�”}”(hhh]”jM)�”}”(hŒthe ktime_t variable to convert”h]”hŒthe ktime_t variable to convert”…”�”}”(hj¥Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒG``struct timespec64 *ts`` the timespec variable to store the result in ”h]”(j¯)�”}”(hŒ``struct timespec64 *ts``”h]”jS)�”}”(hjÅÛh]”hŒstruct timespec64 *ts”…”�”}”(hjÇÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÃÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KËhj¿ÛubjÉ)�”}”(hhh]”jM)�”}”(hŒ,the timespec variable to store the result in”h]”hŒ,the timespec variable to store the result in”…”�”}”(hjÞÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjgÛubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÜh]”hŒReturn”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KÍhjgÛubjM)�”}”(hŒE``true`` if there was a successful conversion, ``false`` if kt was 0.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÜubhŒ' if there was a successful conversion, ”…”�”}”(hjÜh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj,Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÜubhŒ if kt was 0.”…”�”}”(hjÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:51: ./include/linux/ktime.h”h´KÍhjgÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒhrtimer_sleeper (C struct)”Œc.hrtimer_sleeper”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒhrtimer_sleeper”h]”hù)�”}”(hŒstruct hrtimer_sleeper”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjeÜh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjaÜh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsÜh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaÜh²hh³jrÜh´Kubhÿ)�”}”(hŒhrtimer_sleeper”h]”j)�”}”(hj_Üh]”hŒhrtimer_sleeper”…”�”}”(hj…Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Üubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjaÜh²hh³jrÜh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj]Üh²hh³jrÜh´Kubah}”(h]”jXÜah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jrÜh´KhjZÜh²hubj4)�”}”(hhh]”jM)�”}”(hŒsimple sleeper structure”h]”hŒsimple sleeper structure”…”�”}”(hj§Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KDhj¤Üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjZÜh²hh³jrÜh´Kubeh}”(h]”h ]”(jAŒstruct”eh"]”h$]”h&]”jFjAjGj¿ÜjHj¿ÜjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒ¼**Definition**:: struct hrtimer_sleeper { struct hrtimer timer; struct task_struct *task; }; **Members** ``timer`` embedded timer structure ``task`` task to wake up”h]”(jM)�”}”(hŒ**Definition**::”h]”(jŽ)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjËÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÇÜubhŒ:”…”�”}”(hjÇÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KHhjÃÜubjÅ)�”}”(hŒSstruct hrtimer_sleeper { struct hrtimer timer; struct task_struct *task; };”h]”hŒSstruct hrtimer_sleeper { struct hrtimer timer; struct task_struct *task; };”…”�”}”hjäÜsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KJhjÃÜubjM)�”}”(hŒ **Members**”h]”jŽ)�”}”(hjõÜh]”hŒMembers”…”�”}”(hj÷Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KOhjÃÜubj¤)�”}”(hhh]”(j©)�”}”(hŒ#``timer`` embedded timer structure ”h]”(j¯)�”}”(hŒ ``timer``”h]”jS)�”}”(hjÝh]”hŒtimer”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KFhjÝubjÉ)�”}”(hhh]”jM)�”}”(hŒembedded timer structure”h]”hŒembedded timer structure”…”�”}”(hj-Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j)Ýh´KFhj*Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j)Ýh´KFhj Ýubj©)�”}”(hŒ``task`` task to wake up”h]”(j¯)�”}”(hŒ``task``”h]”jS)�”}”(hjMÝh]”hŒtask”…”�”}”(hjOÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KFhjGÝubjÉ)�”}”(hhh]”jM)�”}”(hŒtask to wake up”h]”hŒtask to wake up”…”�”}”(hjfÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KGhjcÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbÝh´KFhj Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÃÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KJhj¥Ñh²hubjM)�”}”(hŒ,task is set to NULL, when the timer expires.”h]”hŒ,task is set to NULL, when the timer expires.”…”�”}”(hj¦Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KGhj¥Ñh²hubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒhrtimer_start (C function)”Œc.hrtimer_start”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒUvoid hrtimer_start (struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode)”h]”hù)�”}”(hŒTvoid hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÎÝh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÊÝh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝÝh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÊÝh²hh³jÜÝh´Kìubhÿ)�”}”(hŒ hrtimer_start”h]”j)�”}”(hŒ hrtimer_start”h]”hŒ hrtimer_start”…”�”}”(hjïÝh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëÝubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÊÝh²hh³jÜÝh´Kìubj4)�”}”(hŒB(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode)”h]”(j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÞubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hj)Þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j+ÞŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjñÝsbŒc.hrtimer_start”†”asbuh1hhjÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÞubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjWÞh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÞubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjdÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÞubj:)�”}”(hŒ ktime_t tim”h]”(h)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hj€Þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‚ÞŒmodname”NŒ classname”Njwjz)�”}”j}]”jEÞŒc.hrtimer_start”†”asbuh1hhjyÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyÞubj)�”}”(hŒtim”h]”hŒtim”…”�”}”(hj¬Þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÞubj:)�”}”(hŒconst enum hrtimer_mode mode”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjÅÞh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÁÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁÞubj?)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjàÞh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÁÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁÞubh)�”}”(hhh]”j)�”}”(hŒ hrtimer_mode”h]”hŒ hrtimer_mode”…”�”}”(hjÿÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jߌmodname”NŒ classname”Njwjz)�”}”j}]”jEÞŒc.hrtimer_start”†”asbuh1hhjÁÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁÞubj)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj+ßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÞubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÊÝh²hh³jÜÝh´Kìubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÆÝh²hh³jÜÝh´Kìubah}”(h]”jÁÝah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÜÝh´KìhjÃÝh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(re)start an hrtimer”h]”hŒ(re)start an hrtimer”…”�”}”(hjUßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KìhjRßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÃÝh²hh³jÜÝh´Kìubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjmßjHjmßjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hX+**Parameters** ``struct hrtimer *timer`` the timer to be added ``ktime_t tim`` expiry time ``const enum hrtimer_mode mode`` timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only!”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjwßh]”hŒ Parameters”…”�”}”(hjyßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjußubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´Kðhjqßubj¤)�”}”(hhh]”(j©)�”}”(hŒ0``struct hrtimer *timer`` the timer to be added ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hj–ßh]”hŒstruct hrtimer *timer”…”�”}”(hj˜ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj”ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´Kíhj�ßubjÉ)�”}”(hhh]”jM)�”}”(hŒthe timer to be added”h]”hŒthe timer to be added”…”�”}”(hj¯ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``ktime_t tim`` expiry time ”h]”(j¯)�”}”(hŒ``ktime_t tim``”h]”jS)�”}”(hjÏßh]”hŒ ktime_t tim”…”�”}”(hjÑßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÍßubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KîhjÉßubjÉ)�”}”(hhh]”jM)�”}”(hŒ expiry time”h]”hŒ expiry time”…”�”}”(hjèßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒÃ``const enum hrtimer_mode mode`` timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only!”h]”(j¯)�”}”(hŒ ``const enum hrtimer_mode mode``”h]”jS)�”}”(hjàh]”hŒconst enum hrtimer_mode mode”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´KðhjàubjÉ)�”}”(hhh]”jM)�”}”(hŒ¢timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only!”h]”hŒ¢timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only!”…”�”}”(hj!àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”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£hjqßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"hrtimer_get_remaining (C function)”Œc.hrtimer_get_remaining”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;ktime_t hrtimer_get_remaining (const struct hrtimer *timer)”h]”hù)�”}”(hŒ:ktime_t hrtimer_get_remaining(const struct hrtimer *timer)”h]”(h)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjeàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jgàŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒhrtimer_get_remaining”sbŒc.hrtimer_get_remaining”†”asbuh1hhj^àh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡àh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj^àh²hh³j†àh´Mubhÿ)�”}”(hŒhrtimer_get_remaining”h]”j)�”}”(hjƒàh]”hŒhrtimer_get_remaining”…”�”}”(hj™àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•àubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj^àh²hh³j†àh´Mubj4)�”}”(hŒ(const struct hrtimer *timer)”h]”j:)�”}”(hŒconst struct hrtimer *timer”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj´àh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj°àubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁàh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°àubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÏàh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj°àubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜàh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°àubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjíàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jïàŒmodname”NŒ classname”Njwjz)�”}”j}]”j�àŒc.hrtimer_get_remaining”†”asbuh1hhj°àubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°àubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj°àubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj&áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¬àubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj^àh²hh³j†àh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjZàh²hh³j†àh´Mubah}”(h]”jUàah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j†àh´MhjWàh²hubj4)�”}”(hhh]”jM)�”}”(hŒ get remaining time for the timer”h]”hŒ get remaining time for the timer”…”�”}”(hjPáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´MhjMáh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjWàh²hh³j†àh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjhájHjhájI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒC**Parameters** ``const struct hrtimer *timer`` the timer to read”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´M"hjláubj¤)�”}”(hhh]”j©)�”}”(hŒ1``const struct hrtimer *timer`` the timer to read”h]”(j¯)�”}”(hŒ``const struct hrtimer *timer``”h]”jS)�”}”(hj‘áh]”hŒconst struct hrtimer *timer”…”�”}”(hj“áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�áubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´M$hj‹áubjÉ)�”}”(hhh]”jM)�”}”(hŒthe timer to read”h]”hŒthe timer to read”…”�”}”(hjªáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´Mhj§á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£hjláubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒhrtimer_is_queued (C function)”Œc.hrtimer_is_queued”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.bool hrtimer_is_queued (struct hrtimer *timer)”h]”hù)�”}”(hŒ-bool hrtimer_is_queued(struct hrtimer *timer)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjëáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjçáh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´M,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùáh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjçáh²hh³jøáh´M,ubhÿ)�”}”(hŒhrtimer_is_queued”h]”j)�”}”(hŒhrtimer_is_queued”h]”hŒhrtimer_is_queued”…”�”}”(hj âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjçáh²hh³jøáh´M,ubj4)�”}”(hŒ(struct hrtimer *timer)”h]”j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj'âh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj#âubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4âh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#âubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjEâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jGâŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj âsbŒc.hrtimer_is_queued”†”asbuh1hhj#âubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeâh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#âubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjsâh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj#âubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj€âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjâubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjçáh²hh³jøáh´M,ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjãáh²hh³jøáh´M,ubah}”(h]”jÞáah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jøáh´M,hjàáh²hubj4)�”}”(hhh]”jM)�”}”(hŒ0check, whether the timer is on one of the queues”h]”hŒ0check, whether the timer is on one of the queues”…”�”}”(hjªâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´M,hj§âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjàáh²hh³jøáh´M,ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÂâjHjÂâjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒÏ**Parameters** ``struct hrtimer *timer`` Timer to check **Return** True if the timer is queued, false otherwise **Description** The function can be used lockless, but it gives only a current snapshot.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´M0hjÆâubj¤)�”}”(hhh]”j©)�”}”(hŒ)``struct hrtimer *timer`` Timer to check ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hjëâh]”hŒstruct hrtimer *timer”…”�”}”(hjíâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjéâubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´M-hjåâubjÉ)�”}”(hhh]”jM)�”}”(hŒTimer to check”h]”hŒTimer to check”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÆâubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj&ãh]”hŒReturn”…”�”}”(hj(ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´M/hjÆâubjM)�”}”(hŒ,True if the timer is queued, false otherwise”h]”hŒ,True if the timer is queued, false otherwise”…”�”}”(hj<ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´M/hjÆâubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjMãh]”hŒ Description”…”�”}”(hjOãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKãubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´M1hjÆâubjM)�”}”(hŒHThe function can be used lockless, but it gives only a current snapshot.”h]”hŒHThe function can be used lockless, but it gives only a current snapshot.”…”�”}”(hjcãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´M0hjÆâubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ hrtimer_forward_now (C function)”Œc.hrtimer_forward_now”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAu64 hrtimer_forward_now (struct hrtimer *timer, ktime_t interval)”h]”hù)�”}”(hŒ@u64 hrtimer_forward_now(struct hrtimer *timer, ktime_t interval)”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj•ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j—ãŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒhrtimer_forward_now”sbŒc.hrtimer_forward_now”†”asbuh1hhjŽãh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´MAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽãh²hh³j¶ãh´MAubhÿ)�”}”(hŒhrtimer_forward_now”h]”j)�”}”(hj³ãh]”hŒhrtimer_forward_now”…”�”}”(hjÉãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅãubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŽãh²hh³j¶ãh´MAubj4)�”}”(hŒ)(struct hrtimer *timer, ktime_t interval)”h]”(j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjäãh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjàãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàãubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jäŒmodname”NŒ classname”Njwjz)�”}”j}]”j±ãŒc.hrtimer_forward_now”†”asbuh1hhjàãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàãubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj.äh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjàãubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj;äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÜãubj:)�”}”(hŒktime_t interval”h]”(h)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjWäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jYäŒmodname”NŒ classname”Njwjz)�”}”j}]”j±ãŒc.hrtimer_forward_now”†”asbuh1hhjPäubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuäh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPäubj)�”}”(hŒinterval”h]”hŒinterval”…”�”}”(hjƒäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÜãubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŽãh²hh³j¶ãh´MAubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŠãh²hh³j¶ãh´MAubah}”(h]”j…ãah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¶ãh´MAhj‡ãh²hubj4)�”}”(hhh]”jM)�”}”(hŒ0forward the timer expiry so it expires after now”h]”hŒ0forward the timer expiry so it expires after now”…”�”}”(hj­äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´MAhjªäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‡ãh²hh³j¶ãh´MAubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÅäjHjÅäjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hX**Parameters** ``struct hrtimer *timer`` hrtimer to forward ``ktime_t interval`` the interval to forward **Description** It is a variant of hrtimer_forward(). The timer will expire after the current time of the hrtimer clock base. See hrtimer_forward() for details.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´MEhjÉäubj¤)�”}”(hhh]”(j©)�”}”(hŒ-``struct hrtimer *timer`` hrtimer to forward ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hjîäh]”hŒstruct hrtimer *timer”…”�”}”(hjðäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjìäubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´MBhjèäubjÉ)�”}”(hhh]”jM)�”}”(hŒhrtimer to forward”h]”hŒhrtimer to forward”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jåh´MBhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjèäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jåh´MBhjåäubj©)�”}”(hŒ-``ktime_t interval`` the interval to forward ”h]”(j¯)�”}”(hŒ``ktime_t interval``”h]”jS)�”}”(hj'åh]”hŒktime_t interval”…”�”}”(hj)åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj%åubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´MChj!åubjÉ)�”}”(hhh]”jM)�”}”(hŒthe interval to forward”h]”hŒthe interval to forward”…”�”}”(hj@åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j<åh´MChj=åubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj!åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j<åh´MChjåäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÉäubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjbåh]”hŒ Description”…”�”}”(hjdåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`åubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´MEhjÉäubjM)�”}”(hŒ�It is a variant of hrtimer_forward(). The timer will expire after the current time of the hrtimer clock base. See hrtimer_forward() for details.”h]”hŒ�It is a variant of hrtimer_forward(). The timer will expire after the current time of the hrtimer clock base. See hrtimer_forward() for details.”…”�”}”(hjxåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:54: ./include/linux/hrtimer.h”h´MDhjÉäubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&•]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$hrtimer_update_function (C function)”Œc.hrtimer_update_function”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒhvoid hrtimer_update_function (struct hrtimer *timer, enum hrtimer_restart (*function)(struct hrtimer *))”h]”hù)�”}”(hŒfvoid hrtimer_update_function(struct hrtimer *timer, enum hrtimer_restart (*function)(struct hrtimer*))”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj§åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj£åh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶åh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj£åh²hh³jµåh´Mubhÿ)�”}”(hŒhrtimer_update_function”h]”j)�”}”(hŒhrtimer_update_function”h]”hŒhrtimer_update_function”…”�”}”(hjÈåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄåubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj£åh²hh³jµåh´Mubj4)�”}”(hŒJ(struct hrtimer *timer, enum hrtimer_restart (*function)(struct hrtimer*))”h]”(j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjäåh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjàåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñåh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàåubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jæŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÊåsbŒc.hrtimer_update_function”†”asbuh1hhjàåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàåubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj0æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjàåubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj=æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÜåubj:)�”}”(hŒ1enum hrtimer_restart (*function)(struct hrtimer*)”h]”(j?)�”}”(hjâÞh]”hŒenum”…”�”}”(hjVæh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjRæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcæh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRæubh)�”}”(hhh]”j)�”}”(hŒhrtimer_restart”h]”hŒhrtimer_restart”…”�”}”(hjtæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jvæŒmodname”NŒ classname”Njwjz)�”}”j}]”jæŒc.hrtimer_update_function”†”asbuh1hhjRæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRæubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRæubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj­æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRæubj)�”}”(hŒfunction”h]”hŒfunction”…”�”}”(hjºæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRæubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjÈæh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRæubj”)�”}”(hjsh]”hŒ(”…”�”}”(hjÕæh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRæubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjâæh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjRæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïæh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRæubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jçŒmodname”NŒ classname”Njwjz)�”}”j}]”jæŒc.hrtimer_update_function”†”asbuh1hhjRæubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRæubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj+çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÜåubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj£åh²hh³jµåh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŸåh²hh³jµåh´Mubah}”(h]”jšåah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jµåh´Mhjœåh²hubj4)�”}”(hhh]”jM)�”}”(hŒ$Update the timer's callback function”h]”hŒ&Update the timer’s callback function”…”�”}”(hjTçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MhjQçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjœåh²hh³jµåh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjlçjHjlçjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hXS**Parameters** ``struct hrtimer *timer`` Timer to update ``enum hrtimer_restart (*function)(struct hrtimer *)`` New callback function **Description** Only safe to call if the timer is not enqueued. Can be called in the callback function if the timer is not enqueued at the same time (see the comments above HRTIMER_STATE_ENQUEUED).”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjvçh]”hŒ Parameters”…”�”}”(hjxçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjtçubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mhjpçubj¤)�”}”(hhh]”(j©)�”}”(hŒ*``struct hrtimer *timer`` Timer to update ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hj•çh]”hŒstruct hrtimer *timer”…”�”}”(hj—çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj“çubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mhj�çubjÉ)�”}”(hhh]”jM)�”}”(hŒTimer to update”h]”hŒTimer to update”…”�”}”(hj®çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jªçh´Mhj«çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jªçh´MhjŒçubj©)�”}”(hŒM``enum hrtimer_restart (*function)(struct hrtimer *)`` New callback function ”h]”(j¯)�”}”(hŒ6``enum hrtimer_restart (*function)(struct hrtimer *)``”h]”jS)�”}”(hjÎçh]”hŒ2enum hrtimer_restart (*function)(struct hrtimer *)”…”�”}”(hjÐçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÌçubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MhjÈçubjÉ)�”}”(hhh]”jM)�”}”(hŒNew callback function”h]”hŒNew callback function”…”�”}”(hjççh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jãçh´Mhjäçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÈçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jãçh´MhjŒçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjpçubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MhjpçubjM)�”}”(hŒµOnly safe to call if the timer is not enqueued. Can be called in the callback function if the timer is not enqueued at the same time (see the comments above HRTIMER_STATE_ENQUEUED).”h]”hŒµOnly safe to call if the timer is not enqueued. Can be called in the callback function if the timer is not enqueued at the same time (see the comments above HRTIMER_STATE_ENQUEUED).”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mhjpçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒhrtimer_forward (C function)”Œc.hrtimer_forward”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒJu64 hrtimer_forward (struct hrtimer *timer, ktime_t now, ktime_t interval)”h]”hù)�”}”(hŒIu64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval)”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjQèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jSèŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒhrtimer_forward”sbŒc.hrtimer_forward”†”asbuh1hhjJèh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsèh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJèh²hh³jrèh´M/ubhÿ)�”}”(hŒhrtimer_forward”h]”j)�”}”(hjoèh]”hŒhrtimer_forward”…”�”}”(hj…èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�èubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjJèh²hh³jrèh´M/ubj4)�”}”(hŒ6(struct hrtimer *timer, ktime_t now, ktime_t interval)”h]”(j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj èh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjœèubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­èh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœèubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hj¾èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÀèŒmodname”NŒ classname”Njwjz)�”}”j}]”jmèŒc.hrtimer_forward”†”asbuh1hhjœèubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜèh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœèubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjêèh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjœèubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj÷èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj˜èubj:)�”}”(hŒ ktime_t now”h]”(h)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jéŒmodname”NŒ classname”Njwjz)�”}”j}]”jmèŒc.hrtimer_forward”†”asbuh1hhj éubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1éh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj éubj)�”}”(hŒnow”h]”hŒnow”…”�”}”(hj?éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj˜èubj:)�”}”(hŒktime_t interval”h]”(h)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hj[éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j]éŒmodname”NŒ classname”Njwjz)�”}”j}]”jmèŒc.hrtimer_forward”†”asbuh1hhjTéubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyéh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjTéubj)�”}”(hŒinterval”h]”hŒinterval”…”�”}”(hj‡éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj˜èubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjJèh²hh³jrèh´M/ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjFèh²hh³jrèh´M/ubah}”(h]”jAèah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jrèh´M/hjCèh²hubj4)�”}”(hhh]”jM)�”}”(hŒforward the timer expiry”h]”hŒforward the timer expiry”…”�”}”(hj±éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M/hj®éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjCèh²hh³jrèh´M/ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÉéjHjÉéjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hX‡**Parameters** ``struct hrtimer *timer`` hrtimer to forward ``ktime_t now`` forward past this time ``ktime_t interval`` the interval to forward **Description** Forward the timer expiry so it will expire in the future. .. note:: This only updates the timer expiry value and does not requeue the timer. There is also a variant of this function: hrtimer_forward_now(). **Context** Can be safely called from the callback function of **timer**. If called from other contexts **timer** must neither be enqueued nor running the callback and the caller needs to take care of serialization. **Return** The number of overruns are returned.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M3hjÍéubj¤)�”}”(hhh]”(j©)�”}”(hŒ-``struct hrtimer *timer`` hrtimer to forward ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hjòéh]”hŒstruct hrtimer *timer”…”�”}”(hjôéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjðéubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M0hjìéubjÉ)�”}”(hhh]”jM)�”}”(hŒhrtimer to forward”h]”hŒhrtimer to forward”…”�”}”(hj êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jêh´M0hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjìéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jêh´M0hjééubj©)�”}”(hŒ'``ktime_t now`` forward past this time ”h]”(j¯)�”}”(hŒ``ktime_t now``”h]”jS)�”}”(hj+êh]”hŒ ktime_t now”…”�”}”(hj-êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj)êubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M1hj%êubjÉ)�”}”(hhh]”jM)�”}”(hŒforward past this time”h]”hŒforward past this time”…”�”}”(hjDêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@êh´M1hjAêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j@êh´M1hjééubj©)�”}”(hŒ-``ktime_t interval`` the interval to forward ”h]”(j¯)�”}”(hŒ``ktime_t interval``”h]”jS)�”}”(hjdêh]”hŒktime_t interval”…”�”}”(hjfêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbêubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M2hj^êubjÉ)�”}”(hhh]”jM)�”}”(hŒthe interval to forward”h]”hŒthe interval to forward”…”�”}”(hj}êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jyêh´M2hjzêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jyêh´M2hjééubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÍéubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M4hjÍéubjM)�”}”(hŒ9Forward the timer expiry so it will expire in the future.”h]”hŒ9Forward the timer expiry so it will expire in the future.”…”�”}”(hjµêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M3hjÍéubhŒnote”“”)�”}”(hŒHThis only updates the timer expiry value and does not requeue the timer.”h]”jM)�”}”(hjÈêh]”hŒHThis only updates the timer expiry value and does not requeue the timer.”…”�”}”(hjÊêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M6hjÆêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄêhjÍéubjM)�”}”(hŒ@There is also a variant of this function: hrtimer_forward_now().”h]”hŒ@There is also a variant of this function: hrtimer_forward_now().”…”�”}”(hjÞêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M8hjÍéubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjïêh]”hŒContext”…”�”}”(hjñêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjíêubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M:hjÍéubjM)�”}”(hŒËCan be safely called from the callback function of **timer**. If called from other contexts **timer** must neither be enqueued nor running the callback and the caller needs to take care of serialization.”h]”(hŒ3Can be safely called from the callback function of ”…”�”}”(hjëh²hh³Nh´NubjŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hj ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjëubhŒ . If called from other contexts ”…”�”}”(hjëh²hh³Nh´NubjŽ)�”}”(hŒ **timer**”h]”hŒtimer”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjëubhŒf must neither be enqueued nor running the callback and the caller needs to take care of serialization.”…”�”}”(hjëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M;hjÍéubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj:ëh]”hŒReturn”…”�”}”(hj<ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M?hjÍéubjM)�”}”(hŒ$The number of overruns are returned.”h]”hŒ$The number of overruns are returned.”…”�”}”(hjPëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M?hjÍéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#hrtimer_start_range_ns (C function)”Œc.hrtimer_start_range_ns”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒlvoid hrtimer_start_range_ns (struct hrtimer *timer, ktime_t tim, u64 delta_ns, const enum hrtimer_mode mode)”h]”hù)�”}”(hŒkvoid hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, u64 delta_ns, const enum hrtimer_mode mode)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj{ëh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MðubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{ëh²hh³j�ëh´Mðubhÿ)�”}”(hŒhrtimer_start_range_ns”h]”j)�”}”(hŒhrtimer_start_range_ns”h]”hŒhrtimer_start_range_ns”…”�”}”(hj ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœëubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj{ëh²hh³j�ëh´Mðubj4)�”}”(hŒP(struct hrtimer *timer, ktime_t tim, u64 delta_ns, const enum hrtimer_mode mode)”h]”(j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¼ëh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¸ëubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸ëubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjÚëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÜëŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¢ësbŒc.hrtimer_start_range_ns”†”asbuh1hhj¸ëubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸ëubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¸ëubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj´ëubj:)�”}”(hŒ ktime_t tim”h]”(h)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hj1ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j3ìŒmodname”NŒ classname”Njwjz)�”}”j}]”jöëŒc.hrtimer_start_range_ns”†”asbuh1hhj*ìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*ìubj)�”}”(hŒtim”h]”hŒtim”…”�”}”(hj]ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj´ëubj:)�”}”(hŒ u64 delta_ns”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjyìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j{ìŒmodname”NŒ classname”Njwjz)�”}”j}]”jöëŒc.hrtimer_start_range_ns”†”asbuh1hhjrìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjrìubj)�”}”(hŒdelta_ns”h]”hŒdelta_ns”…”�”}”(hj¥ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj´ëubj:)�”}”(hŒconst enum hrtimer_mode mode”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj¾ìh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjºìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjºìubj?)�”}”(hjâÞh]”hŒenum”…”�”}”(hjÙìh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjºìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjºìubh)�”}”(hhh]”j)�”}”(hŒ hrtimer_mode”h]”hŒ hrtimer_mode”…”�”}”(hj÷ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jùìŒmodname”NŒ classname”Njwjz)�”}”j}]”jöëŒc.hrtimer_start_range_ns”†”asbuh1hhjºìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjºìubj)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj#íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj´ëubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj{ëh²hh³j�ëh´Mðubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjwëh²hh³j�ëh´Mðubah}”(h]”jrëah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�ëh´Mðhjtëh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(re)start an hrtimer”h]”hŒ(re)start an hrtimer”…”�”}”(hjMíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MðhjJíh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjtëh²hh³j�ëh´Mðubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjeíjHjeíjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hX[**Parameters** ``struct hrtimer *timer`` the timer to be added ``ktime_t tim`` expiry time ``u64 delta_ns`` "slack" range for the timer ``const enum hrtimer_mode mode`` timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only!”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjoíh]”hŒ Parameters”…”�”}”(hjqíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmíubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Môhjiíubj¤)�”}”(hhh]”(j©)�”}”(hŒ0``struct hrtimer *timer`` the timer to be added ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hjŽíh]”hŒstruct hrtimer *timer”…”�”}”(hj�íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒíubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MñhjˆíubjÉ)�”}”(hhh]”jM)�”}”(hŒthe timer to be added”h]”hŒthe timer to be added”…”�”}”(hj§íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``ktime_t tim`` expiry time ”h]”(j¯)�”}”(hŒ``ktime_t tim``”h]”jS)�”}”(hjÇíh]”hŒ ktime_t tim”…”�”}”(hjÉíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÅíubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MòhjÁíubjÉ)�”}”(hhh]”jM)�”}”(hŒ expiry time”h]”hŒ expiry time”…”�”}”(hjàíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ-``u64 delta_ns`` "slack" range for the timer ”h]”(j¯)�”}”(hŒ``u64 delta_ns``”h]”jS)�”}”(hjîh]”hŒ u64 delta_ns”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjþíubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MóhjúíubjÉ)�”}”(hhh]”jM)�”}”(hŒ"slack" range for the timer”h]”hŒ“slackâ€� range for the timer”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒÃ``const enum hrtimer_mode mode`` timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only!”h]”(j¯)�”}”(hŒ ``const enum hrtimer_mode mode``”h]”jS)�”}”(hj9îh]”hŒconst enum hrtimer_mode mode”…”�”}”(hj;îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj7îubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mõhj3îubjÉ)�”}”(hhh]”jM)�”}”(hŒ¢timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only!”h]”hŒ¢timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only!”…”�”}”(hjRîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MôhjOîubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj3îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jNîh´Mõhj…íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjiíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(hrtimer_start_range_ns_user (C function)”Œc.hrtimer_start_range_ns_user”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒqbool hrtimer_start_range_ns_user (struct hrtimer *timer, ktime_t tim, u64 delta_ns, const enum hrtimer_mode mode)”h]”hù)�”}”(hŒpbool hrtimer_start_range_ns_user(struct hrtimer *timer, ktime_t tim, u64 delta_ns, const enum hrtimer_mode mode)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj“îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�îh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡îh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�îh²hh³j îh´M3ubhÿ)�”}”(hŒhrtimer_start_range_ns_user”h]”j)�”}”(hŒhrtimer_start_range_ns_user”h]”hŒhrtimer_start_range_ns_user”…”�”}”(hj³îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯îubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�îh²hh³j îh´M3ubj4)�”}”(hŒP(struct hrtimer *timer, ktime_t tim, u64 delta_ns, const enum hrtimer_mode mode)”h]”(j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÏîh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjËîubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjËîubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjíîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jïîŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjµîsbŒc.hrtimer_start_range_ns_user”†”asbuh1hhjËîubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjËîubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjËîubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hj(ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjËîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÇîubj:)�”}”(hŒ ktime_t tim”h]”(h)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjDïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jFïŒmodname”NŒ classname”Njwjz)�”}”j}]”j ïŒc.hrtimer_start_range_ns_user”†”asbuh1hhj=ïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj=ïubj)�”}”(hŒtim”h]”hŒtim”…”�”}”(hjpïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÇîubj:)�”}”(hŒ u64 delta_ns”h]”(h)�”}”(hhh]”j)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjŒïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŽïŒmodname”NŒ classname”Njwjz)�”}”j}]”j ïŒc.hrtimer_start_range_ns_user”†”asbuh1hhj…ïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…ïubj)�”}”(hŒdelta_ns”h]”hŒdelta_ns”…”�”}”(hj¸ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÇîubj:)�”}”(hŒconst enum hrtimer_mode mode”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjÑïh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÍïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍïubj?)�”}”(hjâÞh]”hŒenum”…”�”}”(hjìïh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÍïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍïubh)�”}”(hhh]”j)�”}”(hŒ hrtimer_mode”h]”hŒ hrtimer_mode”…”�”}”(hj ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j ðŒmodname”NŒ classname”Njwjz)�”}”j}]”j ïŒc.hrtimer_start_range_ns_user”†”asbuh1hhjÍïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(ðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍïubj)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj6ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÇîubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�îh²hh³j îh´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‹îh²hh³j îh´M3ubah}”(h]”j†îah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j îh´M3hjˆîh²hubj4)�”}”(hhh]”jM)�”}”(hŒ$(re)start an user controlled hrtimer”h]”hŒ$(re)start an user controlled hrtimer”…”�”}”(hj`ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M3hj]ðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjˆîh²hh³j îh´M3ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjxðjHjxðjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hXq**Parameters** ``struct hrtimer *timer`` the timer to be added ``ktime_t tim`` expiry time ``u64 delta_ns`` "slack" range for the timer ``const enum hrtimer_mode mode`` timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only! **Return** True when the timer was queued, false if it was already expired **Description** This function cannot invoke the timer callback for expired timers as it might be called under a lock which the timer callback needs to acquire. So the caller has to handle that case.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M7hj|ðubj¤)�”}”(hhh]”(j©)�”}”(hŒ0``struct hrtimer *timer`` the timer to be added ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hj¡ðh]”hŒstruct hrtimer *timer”…”�”}”(hj£ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸðubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M4hj›ðubjÉ)�”}”(hhh]”jM)�”}”(hŒthe timer to be added”h]”hŒthe timer to be added”…”�”}”(hjºðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¶ðh´M4hj·ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj›ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¶ðh´M4hj˜ðubj©)�”}”(hŒ``ktime_t tim`` expiry time ”h]”(j¯)�”}”(hŒ``ktime_t tim``”h]”jS)�”}”(hjÚðh]”hŒ ktime_t tim”…”�”}”(hjÜðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjØðubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M5hjÔðubjÉ)�”}”(hhh]”jM)�”}”(hŒ expiry time”h]”hŒ expiry time”…”�”}”(hjóðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jïðh´M5hjððubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÔðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jïðh´M5hj˜ðubj©)�”}”(hŒ-``u64 delta_ns`` "slack" range for the timer ”h]”(j¯)�”}”(hŒ``u64 delta_ns``”h]”jS)�”}”(hjñh]”hŒ u64 delta_ns”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M6hj ñubjÉ)�”}”(hhh]”jM)�”}”(hŒ"slack" range for the timer”h]”hŒ“slackâ€� range for the timer”…”�”}”(hj,ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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 enum hrtimer_mode mode`` timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only! ”h]”(j¯)�”}”(hŒ ``const enum hrtimer_mode mode``”h]”jS)�”}”(hjLñh]”hŒconst enum hrtimer_mode mode”…”�”}”(hjNñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJñubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M9hjFñubjÉ)�”}”(hhh]”jM)�”}”(hŒ¢timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only!”h]”hŒ¢timer mode: absolute (HRTIMER_MODE_ABS) or relative (HRTIMER_MODE_REL), and pinned (HRTIMER_MODE_PINNED); softirq based mode is considered for debug purpose only!”…”�”}”(hjeñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M7hjbñubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jañh´M9hj˜ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj|ðubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjˆñh]”hŒReturn”…”�”}”(hjŠñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M;hj|ðubjM)�”}”(hŒ?True when the timer was queued, false if it was already expired”h]”hŒ?True when the timer was queued, false if it was already expired”…”�”}”(hjžñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M;hj|ðubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M=hj|ðubjM)�”}”(hŒ¶This function cannot invoke the timer callback for expired timers as it might be called under a lock which the timer callback needs to acquire. So the caller has to handle that case.”h]”hŒ¶This function cannot invoke the timer callback for expired timers as it might be called under a lock which the timer callback needs to acquire. So the caller has to handle that case.”…”�”}”(hjÅñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M<hj|ðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"hrtimer_try_to_cancel (C function)”Œc.hrtimer_try_to_cancel”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int hrtimer_try_to_cancel (struct hrtimer *timer)”h]”hù)�”}”(hŒ0int hrtimer_try_to_cancel(struct hrtimer *timer)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjôñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjðñh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjðñh²hh³jòh´Mdubhÿ)�”}”(hŒhrtimer_try_to_cancel”h]”j)�”}”(hŒhrtimer_try_to_cancel”h]”hŒhrtimer_try_to_cancel”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjðñh²hh³jòh´Mdubj4)�”}”(hŒ(struct hrtimer *timer)”h]”j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj1òh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj-òubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>òh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj-òubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjOòh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jQòŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjòsbŒc.hrtimer_try_to_cancel”†”asbuh1hhj-òubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoòh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj-òubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj}òh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj-òubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjŠòh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj)òubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjðñh²hh³jòh´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjìñh²hh³jòh´Mdubah}”(h]”jçñah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jòh´Mdhjéñh²hubj4)�”}”(hhh]”jM)�”}”(hŒtry to deactivate a timer”h]”hŒtry to deactivate a timer”…”�”}”(hj´òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mdhj±òh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjéñh²hh³jòh´Mdubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÌòjHjÌòjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒì**Parameters** ``struct hrtimer *timer`` hrtimer to stop **Description** * 0 when the timer was not active * 1 when the timer was active * -1 when the timer is currently executing the callback function and cannot be stopped”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MhhjÐòubj¤)�”}”(hhh]”j©)�”}”(hŒ*``struct hrtimer *timer`` hrtimer to stop ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hjõòh]”hŒstruct hrtimer *timer”…”�”}”(hj÷òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjóòubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MehjïòubjÉ)�”}”(hhh]”jM)�”}”(hŒhrtimer to stop”h]”hŒhrtimer to stop”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j óh´Mehj óubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjïòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j óh´Mehjìòubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÐòubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj0óh]”hŒ Description”…”�”}”(hj2óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.óubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MghjÐòubji)�”}”(hŒš* 0 when the timer was not active * 1 when the timer was active * -1 when the timer is currently executing the callback function and cannot be stopped”h]”j C)�”}”(hhh]”(j„)�”}”(hŒ0 when the timer was not active”h]”jM)�”}”(hjOóh]”hŒ0 when the timer was not active”…”�”}”(hjQóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MhhjMóubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjJóubj„)�”}”(hŒ1 when the timer was active”h]”jM)�”}”(hjgóh]”hŒ1 when the timer was active”…”�”}”(hjióh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mihjeóubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjJóubj„)�”}”(hŒT-1 when the timer is currently executing the callback function and cannot be stopped”h]”jM)�”}”(hŒT-1 when the timer is currently executing the callback function and cannot be stopped”h]”hŒT-1 when the timer is currently executing the callback function and cannot be stopped”…”�”}”(hj�óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mjhj}óubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjJóubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³j^óh´MhhjFóubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j^óh´MhhjÐòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒhrtimer_cancel (C function)”Œc.hrtimer_cancel”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int hrtimer_cancel (struct hrtimer *timer)”h]”hù)�”}”(hŒ)int hrtimer_cancel(struct hrtimer *timer)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÂóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¾óh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑóh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¾óh²hh³jÐóh´Míubhÿ)�”}”(hŒhrtimer_cancel”h]”j)�”}”(hŒhrtimer_cancel”h]”hŒhrtimer_cancel”…”�”}”(hjãóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjßóubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¾óh²hh³jÐóh´Míubj4)�”}”(hŒ(struct hrtimer *timer)”h]”j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÿóh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjûóubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûóubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jôŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjåósbŒc.hrtimer_cancel”†”asbuh1hhjûóubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=ôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûóubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjKôh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjûóubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjXôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj÷óubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¾óh²hh³jÐóh´Míubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjºóh²hh³jÐóh´Míubah}”(h]”jµóah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÐóh´Míhj·óh²hubj4)�”}”(hhh]”jM)�”}”(hŒ2cancel a timer and wait for the handler to finish.”h]”hŒ2cancel a timer and wait for the handler to finish.”…”�”}”(hj‚ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Míhjôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj·óh²hh³jÐóh´Míubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjšôjHjšôjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒŽ**Parameters** ``struct hrtimer *timer`` the timer to be cancelled **Return** 0 when the timer was not active 1 when the timer was active”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mñhjžôubj¤)�”}”(hhh]”j©)�”}”(hŒ4``struct hrtimer *timer`` the timer to be cancelled ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hjÃôh]”hŒstruct hrtimer *timer”…”�”}”(hjÅôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÁôubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mîhj½ôubjÉ)�”}”(hhh]”jM)�”}”(hŒthe timer to be cancelled”h]”hŒthe timer to be cancelled”…”�”}”(hjÜôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjžôubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjþôh]”hŒReturn”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüôubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MðhjžôubjM)�”}”(hŒ;0 when the timer was not active 1 when the timer was active”h]”hŒ;0 when the timer was not active 1 when the timer was active”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mðhjžôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$__hrtimer_get_remaining (C function)”Œc.__hrtimer_get_remaining”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒJktime_t __hrtimer_get_remaining (const struct hrtimer *timer, bool adjust)”h]”hù)�”}”(hŒIktime_t __hrtimer_get_remaining(const struct hrtimer *timer, bool adjust)”h]”(h)�”}”(hhh]”j)�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjFõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCõubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jHõŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒ__hrtimer_get_remaining”sbŒc.__hrtimer_get_remaining”†”asbuh1hhj?õh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhõh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?õh²hh³jgõh´Mubhÿ)�”}”(hŒ__hrtimer_get_remaining”h]”j)�”}”(hjdõh]”hŒ__hrtimer_get_remaining”…”�”}”(hjzõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvõubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj?õh²hh³jgõh´Mubj4)�”}”(hŒ*(const struct hrtimer *timer, bool adjust)”h]”(j:)�”}”(hŒconst struct hrtimer *timer”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj•õh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‘õubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‘õubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj°õh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‘õubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‘õubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjÎõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjËõubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÐõŒmodname”NŒ classname”Njwjz)�”}”j}]”jbõŒc.__hrtimer_get_remaining”†”asbuh1hhj‘õubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìõh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‘õubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjúõh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‘õubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�õubj:)�”}”(hŒ bool adjust”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjöubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-öh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjöubj)�”}”(hŒadjust”h]”hŒadjust”…”�”}”(hj;öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�õubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj?õh²hh³jgõh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj;õh²hh³jgõh´Mubah}”(h]”j6õah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jgõh´Mhj8õh²hubj4)�”}”(hhh]”jM)�”}”(hŒ get remaining time for the timer”h]”hŒ get remaining time for the timer”…”�”}”(hjeöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mhjböh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj8õh²hh³jgõh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj}öjHj}öjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒˆ**Parameters** ``const struct hrtimer *timer`` the timer to read ``bool adjust`` adjust relative timers when CONFIG_TIME_LOW_RES=y”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mhj�öubj¤)�”}”(hhh]”(j©)�”}”(hŒ2``const struct hrtimer *timer`` the timer to read ”h]”(j¯)�”}”(hŒ``const struct hrtimer *timer``”h]”jS)�”}”(hj¦öh]”hŒconst struct hrtimer *timer”…”�”}”(hj¨öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¤öubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mhj öubjÉ)�”}”(hhh]”jM)�”}”(hŒthe timer to read”h]”hŒthe timer to read”…”�”}”(hj¿öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j»öh´Mhj¼öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j»öh´Mhj�öubj©)�”}”(hŒA``bool adjust`` adjust relative timers when CONFIG_TIME_LOW_RES=y”h]”(j¯)�”}”(hŒ``bool adjust``”h]”jS)�”}”(hjßöh]”hŒ bool adjust”…”�”}”(hjáöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÝöubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MhjÙöubjÉ)�”}”(hhh]”jM)�”}”(hŒ1adjust relative timers when CONFIG_TIME_LOW_RES=y”h]”hŒ1adjust relative timers when CONFIG_TIME_LOW_RES=y”…”�”}”(hjøöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mhjõöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÙöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jôöh´Mhj�öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�öubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒhrtimer_setup (C function)”Œc.hrtimer_setup”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒŠvoid hrtimer_setup (struct hrtimer *timer, enum hrtimer_restart (*function)(struct hrtimer *), clockid_t clock_id, enum hrtimer_mode mode)”h]”hù)�”}”(hŒˆvoid hrtimer_setup(struct hrtimer *timer, enum hrtimer_restart (*function)(struct hrtimer*), clockid_t clock_id, enum hrtimer_mode mode)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj5÷h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5÷h²hh³jG÷h´M ubhÿ)�”}”(hŒ hrtimer_setup”h]”j)�”}”(hŒ hrtimer_setup”h]”hŒ hrtimer_setup”…”�”}”(hjZ÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjV÷ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj5÷h²hh³jG÷h´M ubj4)�”}”(hŒv(struct hrtimer *timer, enum hrtimer_restart (*function)(struct hrtimer*), clockid_t clock_id, enum hrtimer_mode mode)”h]”(j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjv÷h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjr÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjr÷ubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hj”÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j–÷Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj\÷sbŒc.hrtimer_setup”†”asbuh1hhjr÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjr÷ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÂ÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjr÷ubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjÏ÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjn÷ubj:)�”}”(hŒ1enum hrtimer_restart (*function)(struct hrtimer*)”h]”(j?)�”}”(hjâÞh]”hŒenum”…”�”}”(hjè÷h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjä÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjä÷ubh)�”}”(hhh]”j)�”}”(hŒhrtimer_restart”h]”hŒhrtimer_restart”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jøŒmodname”NŒ classname”Njwjz)�”}”j}]”j°÷Œc.hrtimer_setup”†”asbuh1hhjä÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$øh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjä÷ubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj2ø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ä÷ubj)�”}”(hŒfunction”h]”hŒfunction”…”�”}”(hjLøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä÷ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjZøh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjä÷ubj”)�”}”(hjsh]”hŒ(”…”�”}”(hjgøh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjä÷ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjtøh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjä÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjä÷ubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hj’øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j”øŒmodname”NŒ classname”Njwjz)�”}”j}]”j°÷Œc.hrtimer_setup”†”asbuh1hhjä÷ubj”)�”}”(hj—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ä÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjn÷ubj:)�”}”(hŒclockid_t clock_id”h]”(h)�”}”(hhh]”j)�”}”(hŒ clockid_t”h]”hŒ clockid_t”…”�”}”(hjØøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÚøŒmodname”NŒ classname”Njwjz)�”}”j}]”j°÷Œc.hrtimer_setup”†”asbuh1hhjÑøubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöøh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÑøubj)�”}”(hŒclock_id”h]”hŒclock_id”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjn÷ubj:)�”}”(hŒenum hrtimer_mode mode”h]”(j?)�”}”(hjâÞh]”hŒenum”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*ùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùubh)�”}”(hhh]”j)�”}”(hŒ hrtimer_mode”h]”hŒ hrtimer_mode”…”�”}”(hj;ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j=ùŒmodname”NŒ classname”Njwjz)�”}”j}]”j°÷Œc.hrtimer_setup”†”asbuh1hhjùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùubj)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjgùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjn÷ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj5÷h²hh³jG÷h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj1÷h²hh³jG÷h´M ubah}”(h]”j,÷ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jG÷h´M hj.÷h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%initialize a timer to the given clock”h]”hŒ%initialize a timer to the given clock”…”�”}”(hj‘ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M hjŽùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj.÷h²hh³jG÷h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj©ùjHj©ùjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hX#**Parameters** ``struct hrtimer *timer`` the timer to be initialized ``enum hrtimer_restart (*function)(struct hrtimer *)`` the callback function ``clockid_t clock_id`` the clock to be used ``enum hrtimer_mode mode`` The modes which are relevant for initialization: HRTIMER_MODE_ABS, HRTIMER_MODE_REL, HRTIMER_MODE_ABS_SOFT, HRTIMER_MODE_REL_SOFT **Description** The PINNED variants of the above can be handed in, but the PINNED bit is ignored as pinning happens when the hrtimer is started”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M¤hj­ùubj¤)�”}”(hhh]”(j©)�”}”(hŒ6``struct hrtimer *timer`` the timer to be initialized ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hjÒùh]”hŒstruct hrtimer *timer”…”�”}”(hjÔùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÐùubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M¡hjÌùubjÉ)�”}”(hhh]”jM)�”}”(hŒthe timer to be initialized”h]”hŒthe timer to be initialized”…”�”}”(hjëùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒM``enum hrtimer_restart (*function)(struct hrtimer *)`` the callback function ”h]”(j¯)�”}”(hŒ6``enum hrtimer_restart (*function)(struct hrtimer *)``”h]”jS)�”}”(hj úh]”hŒ2enum hrtimer_restart (*function)(struct hrtimer *)”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj úubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M¢hjúubjÉ)�”}”(hhh]”jM)�”}”(hŒthe callback function”h]”hŒthe callback function”…”�”}”(hj$úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ,``clockid_t clock_id`` the clock to be used ”h]”(j¯)�”}”(hŒ``clockid_t clock_id``”h]”jS)�”}”(hjDúh]”hŒclockid_t clock_id”…”�”}”(hjFúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBúubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M£hj>úubjÉ)�”}”(hhh]”jM)�”}”(hŒthe clock to be used”h]”hŒthe clock to be used”…”�”}”(hj]úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ�``enum hrtimer_mode mode`` The modes which are relevant for initialization: HRTIMER_MODE_ABS, HRTIMER_MODE_REL, HRTIMER_MODE_ABS_SOFT, HRTIMER_MODE_REL_SOFT ”h]”(j¯)�”}”(hŒ``enum hrtimer_mode mode``”h]”jS)�”}”(hj}úh]”hŒenum hrtimer_mode mode”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{úubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M¦hjwúubjÉ)�”}”(hhh]”jM)�”}”(hŒ�The modes which are relevant for initialization: HRTIMER_MODE_ABS, HRTIMER_MODE_REL, HRTIMER_MODE_ABS_SOFT, HRTIMER_MODE_REL_SOFT”h]”hŒ�The modes which are relevant for initialization: HRTIMER_MODE_ABS, HRTIMER_MODE_REL, HRTIMER_MODE_ABS_SOFT, HRTIMER_MODE_REL_SOFT”…”�”}”(hj–úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”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­ùubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M¨hj­ùubji)�”}”(hŒThe PINNED variants of the above can be handed in, but the PINNED bit is ignored as pinning happens when the hrtimer is started”h]”jM)�”}”(hŒThe PINNED variants of the above can be handed in, but the PINNED bit is ignored as pinning happens when the hrtimer is started”h]”hŒThe PINNED variants of the above can be handed in, but the PINNED bit is ignored as pinning happens when the hrtimer is started”…”�”}”(hjÓúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M§hjÏúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jáúh´M§hj­ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#hrtimer_setup_on_stack (C function)”Œc.hrtimer_setup_on_stack”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ“void hrtimer_setup_on_stack (struct hrtimer *timer, enum hrtimer_restart (*function)(struct hrtimer *), clockid_t clock_id, enum hrtimer_mode mode)”h]”hù)�”}”(hŒ‘void hrtimer_setup_on_stack(struct hrtimer *timer, enum hrtimer_restart (*function)(struct hrtimer*), clockid_t clock_id, enum hrtimer_mode mode)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjûh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´MµubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûh²hh³jûh´Mµubhÿ)�”}”(hŒhrtimer_setup_on_stack”h]”j)�”}”(hŒhrtimer_setup_on_stack”h]”hŒhrtimer_setup_on_stack”…”�”}”(hj)ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%ûubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjûh²hh³jûh´Mµubj4)�”}”(hŒv(struct hrtimer *timer, enum hrtimer_restart (*function)(struct hrtimer*), clockid_t clock_id, enum hrtimer_mode mode)”h]”(j:)�”}”(hŒstruct hrtimer *timer”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjEûh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjAûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjAûubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjcûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jeûŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj+ûsbŒc.hrtimer_setup_on_stack”†”asbuh1hhjAûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjAûubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‘û• h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjAûubj)�”}”(hŒtimer”h]”hŒtimer”…”�”}”(hjžûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj=ûubj:)�”}”(hŒ1enum hrtimer_restart (*function)(struct hrtimer*)”h]”(j?)�”}”(hjâÞh]”hŒenum”…”�”}”(hj·ûh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj³ûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj³ûubh)�”}”(hhh]”j)�”}”(hŒhrtimer_restart”h]”hŒhrtimer_restart”…”�”}”(hjÕûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j×ûŒmodname”NŒ classname”Njwjz)�”}”j}]”jûŒc.hrtimer_setup_on_stack”†”asbuh1hhj³ûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj³ûubj”)�”}”(hjsh]”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³ûubj)�”}”(hŒfunction”h]”hŒfunction”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ûubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj)üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj³ûubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj6üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj³ûubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjCüh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj³ûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj³ûubh)�”}”(hhh]”j)�”}”(hŒhrtimer”h]”hŒhrtimer”…”�”}”(hjaüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jcüŒmodname”NŒ classname”Njwjz)�”}”j}]”jûŒc.hrtimer_setup_on_stack”†”asbuh1hhj³ûubj”)�”}”(hj—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³ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj=ûubj:)�”}”(hŒclockid_t clock_id”h]”(h)�”}”(hhh]”j)�”}”(hŒ clockid_t”h]”hŒ clockid_t”…”�”}”(hj§üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j©üŒmodname”NŒ classname”Njwjz)�”}”j}]”jûŒc.hrtimer_setup_on_stack”†”asbuh1hhj üubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj üubj)�”}”(hŒclock_id”h]”hŒclock_id”…”�”}”(hjÓüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj=ûubj:)�”}”(hŒenum hrtimer_mode mode”h]”(j?)�”}”(hjâÞh]”hŒenum”…”�”}”(hjìüh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjèüubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjèüubh)�”}”(hhh]”j)�”}”(hŒ hrtimer_mode”h]”hŒ hrtimer_mode”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j ýŒmodname”NŒ classname”Njwjz)�”}”j}]”jûŒc.hrtimer_setup_on_stack”†”asbuh1hhjèüubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(ýh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjèüubj)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj6ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj=ûubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjûh²hh³jûh´Mµubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjûh²hh³jûh´Mµubah}”(h]”jûúah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jûh´Mµhjýúh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"initialize a timer on stack memory”h]”hŒ"initialize a timer on stack memory”…”�”}”(hj`ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mµhj]ýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjýúh²hh³jûh´Mµubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjxýjHjxýjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hX3**Parameters** ``struct hrtimer *timer`` The timer to be initialized ``enum hrtimer_restart (*function)(struct hrtimer *)`` the callback function ``clockid_t clock_id`` The clock to be used ``enum hrtimer_mode mode`` The timer mode **Description** Similar to hrtimer_setup(), except that this one must be used if struct hrtimer is in stack memory. Callers that do not use the hrtimer_on_stack cleanup class must call destroy_hrtimer_on_stack() before the stack storage goes out of scope. The cleanup class pairs setup and destruction automatically.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M¹hj|ýubj¤)�”}”(hhh]”(j©)�”}”(hŒ6``struct hrtimer *timer`` The timer to be initialized ”h]”(j¯)�”}”(hŒ``struct hrtimer *timer``”h]”jS)�”}”(hj¡ýh]”hŒstruct hrtimer *timer”…”�”}”(hj£ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M¶hj›ýubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer to be initialized”h]”hŒThe timer to be initialized”…”�”}”(hjºýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒM``enum hrtimer_restart (*function)(struct hrtimer *)`` the callback function ”h]”(j¯)�”}”(hŒ6``enum hrtimer_restart (*function)(struct hrtimer *)``”h]”jS)�”}”(hjÚýh]”hŒ2enum hrtimer_restart (*function)(struct hrtimer *)”…”�”}”(hjÜýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjØýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M·hjÔýubjÉ)�”}”(hhh]”jM)�”}”(hŒthe callback function”h]”hŒthe callback function”…”�”}”(hjóýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ,``clockid_t clock_id`` The clock to be used ”h]”(j¯)�”}”(hŒ``clockid_t clock_id``”h]”jS)�”}”(hjþh]”hŒclockid_t clock_id”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M¸hj þubjÉ)�”}”(hhh]”jM)�”}”(hŒThe clock to be used”h]”hŒThe clock to be used”…”�”}”(hj,þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ*``enum hrtimer_mode mode`` The timer mode ”h]”(j¯)�”}”(hŒ``enum hrtimer_mode mode``”h]”jS)�”}”(hjLþh]”hŒenum hrtimer_mode mode”…”�”}”(hjNþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJþubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M¹hjFþubjÉ)�”}”(hhh]”jM)�”}”(hŒThe timer mode”h]”hŒThe timer mode”…”�”}”(hjeþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jaþh´M¹hjbþubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jaþh´M¹hj˜ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj|ýubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M»hj|ýubjM)�”}”(hŒcSimilar to hrtimer_setup(), except that this one must be used if struct hrtimer is in stack memory.”h]”hŒcSimilar to hrtimer_setup(), except that this one must be used if struct hrtimer is in stack memory.”…”�”}”(hj�þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mºhj|ýubjM)�”}”(hŒÈCallers that do not use the hrtimer_on_stack cleanup class must call destroy_hrtimer_on_stack() before the stack storage goes out of scope. The cleanup class pairs setup and destruction automatically.”h]”hŒÈCallers that do not use the hrtimer_on_stack cleanup class must call destroy_hrtimer_on_stack() before the stack storage goes out of scope. The cleanup class pairs setup and destruction automatically.”…”�”}”(hj¬þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M½hj|ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*hrtimer_sleeper_start_expires (C function)”Œc.hrtimer_sleeper_start_expires”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒWvoid hrtimer_sleeper_start_expires (struct hrtimer_sleeper *sl, enum hrtimer_mode mode)”h]”hù)�”}”(hŒVvoid hrtimer_sleeper_start_expires(struct hrtimer_sleeper *sl, enum hrtimer_mode mode)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj×þh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M% ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj×þh²hh³jéþh´M% ubhÿ)�”}”(hŒhrtimer_sleeper_start_expires”h]”j)�”}”(hŒhrtimer_sleeper_start_expires”h]”hŒhrtimer_sleeper_start_expires”…”�”}”(hjüþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøþubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj×þh²hh³jéþh´M% ubj4)�”}”(hŒ4(struct hrtimer_sleeper *sl, enum hrtimer_mode mode)”h]”(j:)�”}”(hŒstruct hrtimer_sleeper *sl”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿubh)�”}”(hhh]”j)�”}”(hŒhrtimer_sleeper”h]”hŒhrtimer_sleeper”…”�”}”(hj6ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j8ÿŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjþþsbŒc.hrtimer_sleeper_start_expires”†”asbuh1hhjÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjdÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÿubj)�”}”(hŒsl”h]”hŒsl”…”�”}”(hjqÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÿubj:)�”}”(hŒenum hrtimer_mode mode”h]”(j?)�”}”(hjâÞh]”hŒenum”…”�”}”(hjŠÿh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj†ÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†ÿubh)�”}”(hhh]”j)�”}”(hŒ hrtimer_mode”h]”hŒ hrtimer_mode”…”�”}”(hj¨ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jªÿŒmodname”NŒ classname”Njwjz)�”}”j}]”jRÿŒc.hrtimer_sleeper_start_expires”†”asbuh1hhj†ÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†ÿubj)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjÔÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÿubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj×þh²hh³jéþh´M% ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÓþh²hh³jéþh´M% ubah}”(h]”jÎþah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jéþh´M% hjÐþh²hubj4)�”}”(hhh]”jM)�”}”(hŒStart a hrtimer sleeper timer”h]”hŒStart a hrtimer sleeper timer”…”�”}”(hjþÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M% hjûÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÐþh²hh³jéþh´M% ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hX**Parameters** ``struct hrtimer_sleeper *sl`` sleeper to be started ``enum hrtimer_mode mode`` timer mode abs/rel **Description** Wrapper around hrtimer_start_expires() for hrtimer_sleeper based timers to allow PREEMPT_RT to tweak the delivery mode (soft/hardirq context)”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj h]”hŒ Parameters”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M) hjubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct hrtimer_sleeper *sl`` sleeper to be started ”h]”(j¯)�”}”(hŒ``struct hrtimer_sleeper *sl``”h]”jS)�”}”(hj?h]”hŒstruct hrtimer_sleeper *sl”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M& hj9ubjÉ)�”}”(hhh]”jM)�”}”(hŒsleeper to be started”h]”hŒsleeper to be started”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jTh´M& hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jTh´M& hj6ubj©)�”}”(hŒ.``enum hrtimer_mode mode`` timer mode abs/rel ”h]”(j¯)�”}”(hŒ``enum hrtimer_mode mode``”h]”jS)�”}”(hjxh]”hŒenum hrtimer_mode mode”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M' hjrubjÉ)�”}”(hhh]”jM)�”}”(hŒtimer mode abs/rel”h]”hŒtimer mode abs/rel”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�h´M' hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�h´M' hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M) hjubjM)�”}”(hŒ�Wrapper around hrtimer_start_expires() for hrtimer_sleeper based timers to allow PREEMPT_RT to tweak the delivery mode (soft/hardirq context)”h]”hŒ�Wrapper around hrtimer_start_expires() for hrtimer_sleeper based timers to allow PREEMPT_RT to tweak the delivery mode (soft/hardirq context)”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M( hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+hrtimer_setup_sleeper_on_stack (C function)”Œ c.hrtimer_setup_sleeper_on_stack”hNt”auh1hÜhj¥Ñh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒlvoid hrtimer_setup_sleeper_on_stack (struct hrtimer_sleeper *sl, clockid_t clock_id, enum hrtimer_mode mode)”h]”hù)�”}”(hŒkvoid hrtimer_setup_sleeper_on_stack(struct hrtimer_sleeper *sl, clockid_t clock_id, enum hrtimer_mode mode)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjôh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M` ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôh²hh³jh´M` ubhÿ)�”}”(hŒhrtimer_setup_sleeper_on_stack”h]”j)�”}”(hŒhrtimer_setup_sleeper_on_stack”h]”hŒhrtimer_setup_sleeper_on_stack”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjôh²hh³jh´M` ubj4)�”}”(hŒH(struct hrtimer_sleeper *sl, clockid_t clock_id, enum hrtimer_mode mode)”h]”(j:)�”}”(hŒstruct hrtimer_sleeper *sl”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1ubh)�”}”(hhh]”j)�”}”(hŒhrtimer_sleeper”h]”hŒhrtimer_sleeper”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jUŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjsbŒ c.hrtimer_setup_sleeper_on_stack”†”asbuh1hhj1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj1ubj)�”}”(hŒsl”h]”hŒsl”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-ubj:)�”}”(hŒclockid_t clock_id”h]”(h)�”}”(hhh]”j)�”}”(hŒ clockid_t”h]”hŒ clockid_t”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¬Œmodname”NŒ classname”Njwjz)�”}”j}]”joŒ c.hrtimer_setup_sleeper_on_stack”†”asbuh1hhj£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj£ubj)�”}”(hŒclock_id”h]”hŒclock_id”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-ubj:)�”}”(hŒenum hrtimer_mode mode”h]”(j?)�”}”(hjâÞh]”hŒenum”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjëubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjëubh)�”}”(hhh]”j)�”}”(hŒ hrtimer_mode”h]”hŒ hrtimer_mode”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”joŒ c.hrtimer_setup_sleeper_on_stack”†”asbuh1hhjëubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjëubj)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjôh²hh³jh´M` ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjðh²hh³jh´M` ubah}”(h]”jëah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´M` hjíh²hubj4)�”}”(hhh]”jM)�”}”(hŒ$initialize a sleeper in stack memory”h]”hŒ$initialize a sleeper in stack memory”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M` hj`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjíh²hh³jh´M` ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj{jHj{jI‰jJ‰jK‰uh1híh²hhj¥Ñh³Nh´Nubj„)�”}”(hŒª**Parameters** ``struct hrtimer_sleeper *sl`` sleeper to be initialized ``clockid_t clock_id`` the clock to be used ``enum hrtimer_mode mode`` timer mode abs/rel”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Md hjubj¤)�”}”(hhh]”(j©)�”}”(hŒ9``struct hrtimer_sleeper *sl`` sleeper to be initialized ”h]”(j¯)�”}”(hŒ``struct hrtimer_sleeper *sl``”h]”jS)�”}”(hj¤h]”hŒstruct hrtimer_sleeper *sl”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Ma hjžubjÉ)�”}”(hhh]”jM)�”}”(hŒsleeper to be initialized”h]”hŒsleeper to be initialized”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¹h´Ma hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¹h´Ma hj›ubj©)�”}”(hŒ,``clockid_t clock_id`` the clock to be used ”h]”(j¯)�”}”(hŒ``clockid_t clock_id``”h]”jS)�”}”(hjÝh]”hŒclockid_t clock_id”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mb hj×ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe clock to be used”h]”hŒthe clock to be used”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jòh´Mb hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jòh´Mb hj›ubj©)�”}”(hŒ-``enum hrtimer_mode mode`` timer mode abs/rel”h]”(j¯)�”}”(hŒ``enum hrtimer_mode mode``”h]”jS)�”}”(hjh]”hŒenum hrtimer_mode mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Md hjubjÉ)�”}”(hhh]”jM)�”}”(hŒtimer mode abs/rel”h]”hŒtimer mode abs/rel”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´Mc hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j+h´Md hj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj¥Ñh²hh³Nh´Nubeh}”(h]”Œhigh-resolution-timers”ah ]”h"]”Œhigh-resolution timers”ah$]”h&]”uh1hµhh·h²hh³hÊh´K1ubh¶)�”}”(hhh]”(h»)�”}”(hŒWait queues and Wake events”h]”hŒWait queues and Wake events”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj_h²hh³hÊh´K=ubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwaitqueue_active (C function)”Œc.waitqueue_active”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6int waitqueue_active (struct wait_queue_head *wq_head)”h]”hù)�”}”(hŒ5int waitqueue_active(struct wait_queue_head *wq_head)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj…h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K`ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…h²hh³j—h´K`ubhÿ)�”}”(hŒwaitqueue_active”h]”j)�”}”(hŒwaitqueue_active”h]”hŒwaitqueue_active”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj…h²hh³j—h´K`ubj4)�”}”(hŒ!(struct wait_queue_head *wq_head)”h]”j:)�”}”(hŒstruct wait_queue_head *wq_head”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÂubh)�”}”(hhh]”j)�”}”(hŒwait_queue_head”h]”hŒwait_queue_head”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jæŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¬sbŒc.waitqueue_active”†”asbuh1hhjÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÂubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÂubj)�”}”(hŒwq_head”h]”hŒwq_head”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¾ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj…h²hh³j—h´K`ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�h²hh³j—h´K`ubah}”(h]”j|ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j—h´K`hj~h²hubj4)�”}”(hhh]”j C)�”}”(hhh]”j„)�”}”(hŒ(locklessly test for waiters on the queue”h]”jM)�”}”(hjNh]”hŒ(locklessly test for waiters on the queue”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K`hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjIh²hh³j]h´Nubah}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³j]h´K`hjFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj~h²hh³j—h´K`ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjsjHjsjI‰jJ‰jK‰uh1híh²hhj_h³Nh´Nubj„)�”}”(hXÜ**Parameters** ``struct wait_queue_head *wq_head`` the waitqueue to test for waiters **Description** returns true if the wait list is not empty **NOTE** this function is lockless and requires care, incorrect usage _will_ lead to sporadic and non-obvious failure. Use either while holding wait_queue_head::lock or when used for wakeups with an extra smp_mb() like:: CPU0 - waker CPU1 - waiter for (;;) { @cond = true; prepare_to_wait(&wq_head, &wait, state); smp_mb(); // smp_mb() from set_current_state() if (waitqueue_active(wq_head)) if (@cond) wake_up(wq_head); break; schedule(); } finish_wait(&wq_head, &wait); Because without the explicit smp_mb() it's possible for the waitqueue_active() load to get hoisted over the **cond** store such that we'll observe an empty wait list while the waiter might not observe **cond**. Also note that this 'optimization' trades a spin_lock() for an smp_mb(), which (when the lock is uncontended) are of roughly equal cost.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj}h]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Kdhjwubj¤)�”}”(hhh]”j©)�”}”(hŒF``struct wait_queue_head *wq_head`` the waitqueue to test for waiters ”h]”(j¯)�”}”(hŒ#``struct wait_queue_head *wq_head``”h]”jS)�”}”(hjœh]”hŒstruct wait_queue_head *wq_head”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Kahj–ubjÉ)�”}”(hhh]”jM)�”}”(hŒ!the waitqueue to test for waiters”h]”hŒ!the waitqueue to test for waiters”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j±h´Kahj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j±h´Kahj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjwubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KchjwubjM)�”}”(hŒ*returns true if the wait list is not empty”h]”hŒ*returns true if the wait list is not empty”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KbhjwubjM)�”}”(hŒ**NOTE**”h]”jŽ)�”}”(hjþh]”hŒNOTE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KdhjwubjM)�”}”(hŒmthis function is lockless and requires care, incorrect usage _will_ lead to sporadic and non-obvious failure.”h]”hŒmthis function is lockless and requires care, incorrect usage _will_ lead to sporadic and non-obvious failure.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KehjwubjM)�”}”(hŒeUse either while holding wait_queue_head::lock or when used for wakeups with an extra smp_mb() like::”h]”hŒdUse either while holding wait_queue_head::lock or when used for wakeups with an extra smp_mb() like:”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KhhjwubjÅ)�”}”(hXÛCPU0 - waker CPU1 - waiter for (;;) { @cond = true; prepare_to_wait(&wq_head, &wait, state); smp_mb(); // smp_mb() from set_current_state() if (waitqueue_active(wq_head)) if (@cond) wake_up(wq_head); break; schedule(); } finish_wait(&wq_head, &wait);”h]”hXÛCPU0 - waker CPU1 - waiter for (;;) { @cond = true; prepare_to_wait(&wq_head, &wait, state); smp_mb(); // smp_mb() from set_current_state() if (waitqueue_active(wq_head)) if (@cond) wake_up(wq_head); break; schedule(); } finish_wait(&wq_head, &wait);”…”�”}”hj2sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KkhjwubjM)�”}”(hŒÒBecause without the explicit smp_mb() it's possible for the waitqueue_active() load to get hoisted over the **cond** store such that we'll observe an empty wait list while the waiter might not observe **cond**.”h]”(hŒnBecause without the explicit smp_mb() it’s possible for the waitqueue_active() load to get hoisted over the ”…”�”}”(hjAh²hh³Nh´NubjŽ)�”}”(hŒ**cond**”h]”hŒcond”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAubhŒW store such that we’ll observe an empty wait list while the waiter might not observe ”…”�”}”(hjAh²hh³Nh´NubjŽ)�”}”(hŒ**cond**”h]”hŒcond”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAubhŒ.”…”�”}”(hjAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KvhjwubjM)�”}”(hŒˆAlso note that this 'optimization' trades a spin_lock() for an smp_mb(), which (when the lock is uncontended) are of roughly equal cost.”h]”hŒŒAlso note that this ‘optimization’ trades a spin_lock() for an smp_mb(), which (when the lock is uncontended) are of roughly equal cost.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Kzhjwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"wq_has_single_sleeper (C function)”Œc.wq_has_single_sleeper”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒhjÛubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛubh)�”}”(hhh]”j)�”}”(hŒwait_queue_head”h]”hŒwait_queue_head”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÿŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÅsbŒc.wq_has_single_sleeper”†”asbuh1hhjÛubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÛubj)�”}”(hŒwq_head”h]”hŒwq_head”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj×ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŸh²hh³j°h´Kƒubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj›h²hh³j°h´Kƒubah}”(h]”j–ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j°h´Kƒhj˜h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"check if there is only one sleeper”h]”hŒ"check if there is only one sleeper”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Kƒhj_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj˜h²hh³j°h´Kƒubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjzjHjzjI‰jJ‰jK‰uh1híh²hhj_h³Nh´Nubj„)�”}”(hŒÄ**Parameters** ``struct wait_queue_head *wq_head`` wait queue head **Description** Returns true of wq_head has only one sleeper on the list. Please refer to the comment for waitqueue_active.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K‡hj~ubj¤)�”}”(hhh]”j©)�”}”(hŒ4``struct wait_queue_head *wq_head`` wait queue head ”h]”(j¯)�”}”(hŒ#``struct wait_queue_head *wq_head``”h]”jS)�”}”(hj£h]”hŒstruct wait_queue_head *wq_head”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K„hj�ubjÉ)�”}”(hhh]”jM)�”}”(hŒwait queue head”h]”hŒwait queue head”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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~ubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K†hj~ubjM)�”}”(hŒ9Returns true of wq_head has only one sleeper on the list.”h]”hŒ9Returns true of wq_head has only one sleeper on the list.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K…hj~ubjM)�”}”(hŒ1Please refer to the comment for waitqueue_active.”h]”hŒ1Please refer to the comment for waitqueue_active.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K‡hj~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwq_has_sleeper (C function)”Œc.wq_has_sleeper”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5bool wq_has_sleeper (struct wait_queue_head *wq_head)”h]”hù)�”}”(hŒ4bool wq_has_sleeper(struct wait_queue_head *wq_head)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj.h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj.h²hh³j?h´K�ubhÿ)�”}”(hŒwq_has_sleeper”h]”j)�”}”(hŒwq_has_sleeper”h]”hŒwq_has_sleeper”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj.h²hh³j?h´K�ubj4)�”}”(hŒ!(struct wait_queue_head *wq_head)”h]”j:)�”}”(hŒstruct wait_queue_head *wq_head”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjjubh)�”}”(hhh]”j)�”}”(hŒwait_queue_head”h]”hŒwait_queue_head”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŽŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjTsbŒc.wq_has_sleeper”†”asbuh1hhjjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjjubj)�”}”(hŒwq_head”h]”hŒwq_head”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjfubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj.h²hh³j?h´K�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj*h²hh³j?h´K�ubah}”(h]”j%ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j?h´K�hj'h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(check if there are any waiting processes”h]”hŒ(check if there are any waiting processes”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K�hjîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj'h²hh³j?h´K�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj jHj jI‰jJ‰jK‰uh1híh²hhj_h³Nh´Nubj„)�”}”(hŒ¸**Parameters** ``struct wait_queue_head *wq_head`` wait queue head **Description** Returns true if wq_head has waiting processes Please refer to the comment for waitqueue_active.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K”hj ubj¤)�”}”(hhh]”j©)�”}”(hŒ4``struct wait_queue_head *wq_head`` wait queue head ”h]”(j¯)�”}”(hŒ#``struct wait_queue_head *wq_head``”h]”jS)�”}”(hj2h]”hŒstruct wait_queue_head *wq_head”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K‘hj,ubjÉ)�”}”(hhh]”jM)�”}”(hŒwait queue head”h]”hŒwait queue head”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jGh´K‘hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jGh´K‘hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjmh]”hŒ Description”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K“hj ubjM)�”}”(hŒ-Returns true if wq_head has waiting processes”h]”hŒ-Returns true if wq_head has waiting processes”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K’hj ubjM)�”}”(hŒ1Please refer to the comment for waitqueue_active.”h]”hŒ1Please refer to the comment for waitqueue_active.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K”hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwake_up_pollfree (C function)”Œc.wake_up_pollfree”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7void wake_up_pollfree (struct wait_queue_head *wq_head)”h]”hù)�”}”(hŒ6void wake_up_pollfree(struct wait_queue_head *wq_head)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj½h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KüubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½h²hh³jÏh´Küubhÿ)�”}”(hŒwake_up_pollfree”h]”j)�”}”(hŒwake_up_pollfree”h]”hŒwake_up_pollfree”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj½h²hh³jÏh´Küubj4)�”}”(hŒ!(struct wait_queue_head *wq_head)”h]”j:)�”}”(hŒstruct wait_queue_head *wq_head”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjúubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjúubh)�”}”(hhh]”j)�”}”(hŒwait_queue_head”h]”hŒwait_queue_head”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjäsbŒc.wake_up_pollfree”†”asbuh1hhjúubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjúubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjúubj)�”}”(hŒwq_head”h]”hŒwq_head”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjöubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj½h²hh³jÏh´Küubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¹h²hh³jÏh´Küubah}”(h]”j´ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÏh´Kühj¶h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,signal that a polled waitqueue is going away”h]”hŒ,signal that a polled waitqueue is going away”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Kühj~ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¶h²hh³jÏh´Küubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj™ jHj™ jI‰jJ‰jK‰uh1híh²hhj_h³Nh´Nubj„)�”}”(hX**Parameters** ``struct wait_queue_head *wq_head`` the wait queue head **Description** In the very rare cases where a ->poll() implementation uses a waitqueue whose lifetime is tied to a task rather than to the 'struct file' being polled, this function must be called before the waitqueue is freed so that non-blocking polls (e.g. epoll) are notified that the queue is going away. The caller must also RCU-delay the freeing of the wait_queue_head, e.g. via an explicit synchronize_rcu() or call_rcu(), or via SLAB_TYPESAFE_BY_RCU.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj� ubj¤)�”}”(hhh]”j©)�”}”(hŒ8``struct wait_queue_head *wq_head`` the wait queue head ”h]”(j¯)�”}”(hŒ#``struct wait_queue_head *wq_head``”h]”jS)�”}”(hj h]”hŒstruct wait_queue_head *wq_head”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÀ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Kýhj¼ ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe wait queue head”h]”hŒthe wait queue head”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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� ubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Kÿhj� ubjM)�”}”(hX%In the very rare cases where a ->poll() implementation uses a waitqueue whose lifetime is tied to a task rather than to the 'struct file' being polled, this function must be called before the waitqueue is freed so that non-blocking polls (e.g. epoll) are notified that the queue is going away.”h]”hX)In the very rare cases where a ->poll() implementation uses a waitqueue whose lifetime is tied to a task rather than to the ‘struct file’ being polled, this function must be called before the waitqueue is freed so that non-blocking polls (e.g. epoll) are notified that the queue is going away.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Kþhj� ubjM)�”}”(hŒ•The caller must also RCU-delay the freeing of the wait_queue_head, e.g. via an explicit synchronize_rcu() or call_rcu(), or via SLAB_TYPESAFE_BY_RCU.”h]”hŒ•The caller must also RCU-delay the freeing of the wait_queue_head, e.g. via an explicit synchronize_rcu() or call_rcu(), or via SLAB_TYPESAFE_BY_RCU.”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj� ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event (C macro)”Œ c.wait_event”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ wait_event”h]”hù)�”}”(hŒ wait_event”h]”hÿ)�”}”(hŒ wait_event”h]”j)�”}”(hjK h]”hŒ wait_event”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQ ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjM h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MNubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjI h²hh³jh h´MNubah}”(h]”jD ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh h´MNhjF h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjF h²hh³jh h´MNubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj� jHj� jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ#``wait_event (wq_head, condition)``”h]”jS)�”}”(hj‡ h]”hŒwait_event (wq_head, condition)”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MPhj_h²hubji)�”}”(hŒ"sleep until a condition gets true ”h]”jM)�”}”(hŒ!sleep until a condition gets true”h]”hŒ!sleep until a condition gets true”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MNhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j¯ h´MNhj_h²hubj„)�”}”(hXš**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for **Description** The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MRhj¶ ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjÛ h]”hŒwq_head”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MOhjÕ ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jð h´MOhjñ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÕ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jð h´MOhjÒ ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj h]”hŒ condition”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MPhj ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j) h´MPhj* ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j) h´MPhjÒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¶ ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjO h]”hŒ Description”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MRhj¶ ubjM)�”}”(hŒ«The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ=The process is put to sleep (TASK_UNINTERRUPTIBLE) until the ”…”�”}”(hje h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hje ubhŒ evaluates to true. The ”…”�”}”(hje h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hje ubhŒ$ is checked each time the waitqueue ”…”�”}”(hje h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hje ubhŒ is woken up.”…”�”}”(hje h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MQhj¶ ubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MUhj¶ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_freezable (C macro)”Œc.wait_event_freezable”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_freezable”h]”hù)�”}”(hŒwait_event_freezable”h]”hÿ)�”}”(hŒwait_event_freezable”h]”j)�”}”(hjÓ h]”hŒwait_event_freezable”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙ ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÕ h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Muubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÑ h²hh³jð h´Muubah}”(h]”jÌ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jð h´MuhjÎ h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÎ h²hh³jð h´Muubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj jHj jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ-``wait_event_freezable (wq_head, condition)``”h]”jS)�”}”(hj h]”hŒ)wait_event_freezable (wq_head, condition)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mwhj_h²hubji)�”}”(hŒ.sleep (or freeze) until a condition gets true ”h]”jM)�”}”(hŒ-sleep (or freeze) until a condition gets true”h]”hŒ-sleep (or freeze) until a condition gets true”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Muhj% ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j7 h´Muhj_h²hubj„)�”}”(hXÂ**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for **Description** The process is put to sleep (TASK_INTERRUPTIBLE -- so as not to contribute to system load) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjD h]”hŒ Parameters”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjB ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Myhj> ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjc h]”hŒwq_head”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhja ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mvhj] ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jx h´Mvhjy ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj] ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jx h´MvhjZ ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjœ h]”hŒ condition”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjš ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mwhj– ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j± h´Mwhj² ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj– ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j± h´MwhjZ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj> ubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Myhj> ubjM)�”}”(hŒÓThe process is put to sleep (TASK_INTERRUPTIBLE -- so as not to contribute to system load) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒeThe process is put to sleep (TASK_INTERRUPTIBLE -- so as not to contribute to system load) until the ”…”�”}”(hjí h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjí ubhŒ evaluates to true. The ”…”�”}”(hjí h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjí ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjí h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjí ubhŒ is woken up.”…”�”}”(hjí h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mxhj> ubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M|hj> ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_timeout (C macro)”Œc.wait_event_timeout”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_timeout”h]”hù)�”}”(hŒwait_event_timeout”h]”hÿ)�”}”(hŒwait_event_timeout”h]”j)�”}”(hj[ h]”hŒwait_event_timeout”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhja ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj] h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M�ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjY h²hh³jx h´M�ubah}”(h]”jT ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jx h´M�hjV h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjV h²hh³jx h´M�ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj‘ jHj‘ jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ4``wait_event_timeout (wq_head, condition, timeout)``”h]”jS)�”}”(hj— h]”hŒ0wait_event_timeout (wq_head, condition, timeout)”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj• ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M‘hj_h²hubji)�”}”(hŒ7sleep until a condition gets true or a timeout elapses ”h]”jM)�”}”(hŒ6sleep until a condition gets true or a timeout elapses”h]”hŒ6sleep until a condition gets true or a timeout elapses”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M�hj­ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j¿ h´M�hj_h²hubj„)�”}”(hXÔ**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``timeout`` timeout, in jiffies **Description** The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. **Return** 0 if the **condition** evaluated to ``false`` after the **timeout** elapsed, 1 if the **condition** evaluated to ``true`` after the **timeout** elapsed, or the remaining jiffies (at least 1) if the **condition** evaluated to ``true`` before the **timeout** elapsed.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M“hjÆ ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjë h]”hŒwq_head”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M�hjå ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´M�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjå ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´M�hjâ ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj$h]”hŒ condition”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M‘hjubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j9h´M‘hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j9h´M‘hjâ ubj©)�”}”(hŒ ``timeout`` timeout, in jiffies ”h]”(j¯)�”}”(hŒ ``timeout``”h]”jS)�”}”(hj]h]”hŒtimeout”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M’hjWubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, in jiffies”h]”hŒtimeout, in jiffies”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jrh´M’hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jrh´M’hjâ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÆ ubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M”hjÆ ubjM)�”}”(hŒ«The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ=The process is put to sleep (TASK_UNINTERRUPTIBLE) until the ”…”�”}”(hj®h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®ubhŒ evaluates to true. The ”…”�”}”(hj®h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®ubhŒ$ is checked each time the waitqueue ”…”�”}”(hj®h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®ubhŒ is woken up.”…”�”}”(hj®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M“hjÆ ubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M—hjÆ ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MšhjÆ ubjM)�”}”(hX 0 if the **condition** evaluated to ``false`` after the **timeout** elapsed, 1 if the **condition** evaluated to ``true`` after the **timeout** elapsed, or the remaining jiffies (at least 1) if the **condition** evaluated to ``true`` before the **timeout** elapsed.”h]”(hŒ 0 if the ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ evaluated to ”…”�”}”(hjh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubhŒ after the ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ elapsed, 1 if the ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ evaluated to ”…”�”}”hjsbjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”•}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubhŒ after the ”…”�”}”hjsbjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ7 elapsed, or the remaining jiffies (at least 1) if the ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ evaluated to ”…”�”}”(hjh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubhŒ before the ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ elapsed.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M›hjÆ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_cmd (C macro)”Œc.wait_event_cmd”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_cmd”h]”hù)�”}”(hŒwait_event_cmd”h]”hÿ)�”}”(hŒwait_event_cmd”h]”j)�”}”(hjåh]”hŒwait_event_cmd”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjçh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÎubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjãh²hh³jh´MÎubah}”(h]”jÞah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´MÎhjàh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjàh²hh³jh´MÎubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ3``wait_event_cmd (wq_head, condition, cmd1, cmd2)``”h]”jS)�”}”(hj!h]”hŒ/wait_event_cmd (wq_head, condition, cmd1, cmd2)”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÐhj_h²hubji)�”}”(hŒ"sleep until a condition gets true ”h]”jM)�”}”(hŒ!sleep until a condition gets true”h]”hŒ!sleep until a condition gets true”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÎhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jIh´MÎhj_h²hubj„)�”}”(hX**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``cmd1`` the command will be executed before sleep ``cmd2`` the command will be executed after sleep **Description** The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjVh]”hŒ Parameters”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÒhjPubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjuh]”hŒwq_head”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÏhjoubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠh´MÏhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠh´MÏhjlubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj®h]”hŒ condition”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÐhj¨ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÃh´MÐhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÃh´MÐhjlubj©)�”}”(hŒ3``cmd1`` the command will be executed before sleep ”h]”(j¯)�”}”(hŒ``cmd1``”h]”jS)�”}”(hjçh]”hŒcmd1”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÑhjáubjÉ)�”}”(hhh]”jM)�”}”(hŒ)the command will be executed before sleep”h]”hŒ)the command will be executed before sleep”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jüh´MÑhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jüh´MÑhjlubj©)�”}”(hŒ2``cmd2`` the command will be executed after sleep ”h]”(j¯)�”}”(hŒ``cmd2``”h]”jS)�”}”(hj h]”hŒcmd2”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÒhjubjÉ)�”}”(hhh]”jM)�”}”(hŒ(the command will be executed after sleep”h]”hŒ(the command will be executed after sleep”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j5h´MÒhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j5h´MÒhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjPubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj[h]”hŒ Description”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÔhjPubjM)�”}”(hŒ«The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ=The process is put to sleep (TASK_UNINTERRUPTIBLE) until the ”…”�”}”(hjqh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubhŒ evaluates to true. The ”…”�”}”(hjqh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubhŒ$ is checked each time the waitqueue ”…”�”}”(hjqh²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubhŒ is woken up.”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÓhjPubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M×hjPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"wait_event_interruptible (C macro)”Œc.wait_event_interruptible”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_interruptible”h]”hù)�”}”(hŒwait_event_interruptible”h]”hÿ)�”}”(hŒwait_event_interruptible”h]”j)�”}”(hjßh]”hŒwait_event_interruptible”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjáh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mçubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÝh²hh³jüh´Mçubah}”(h]”jØah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jüh´MçhjÚh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÚh²hh³jüh´Mçubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ1``wait_event_interruptible (wq_head, condition)``”h]”jS)�”}”(hjh]”hŒ-wait_event_interruptible (wq_head, condition)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Méhj_h²hubji)�”}”(hŒ"sleep until a condition gets true ”h]”jM)�”}”(hŒ!sleep until a condition gets true”h]”hŒ!sleep until a condition gets true”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mçhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jCh´Mçhj_h²hubj„)�”}”(hX#**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for **Description** The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. The function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjPh]”hŒ Parameters”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MëhjJubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjoh]”hŒwq_head”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MèhjiubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j„h´Mèhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„h´Mèhjfubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj¨h]”hŒ condition”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Méhj¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j½h´Méhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j½h´Méhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjJubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MëhjJubjM)�”}”(hŒÁThe process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ;The process is put to sleep (TASK_INTERRUPTIBLE) until the ”…”�”}”(hjùh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjùh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùubhŒ$ is checked each time the waitqueue ”…”�”}”(hjùh²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùubhŒ is woken up.”…”�”}”(hjùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MêhjJubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MîhjJubjM)�”}”(hŒqThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(hŒQThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if ”…”�”}”(hjMh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMubhŒ evaluated to true.”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MñhjJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*wait_event_interruptible_timeout (C macro)”Œ"c.wait_event_interruptible_timeout”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ wait_event_interruptible_timeout”h]”hù)�”}”(hŒ wait_event_interruptible_timeout”h]”hÿ)�”}”(hŒ wait_event_interruptible_timeout”h]”j)�”}”(hjˆh]”hŒ wait_event_interruptible_timeout”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŠh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj†h²hh³j¥h´Mubah}”(h]”j�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¥h´Mhjƒh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjƒh²hh³j¥h´Mubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj¾jHj¾jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒB``wait_event_interruptible_timeout (wq_head, condition, timeout)``”h]”jS)�”}”(hjÄh]”hŒ>wait_event_interruptible_timeout (wq_head, condition, timeout)”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj_h²hubji)�”}”(hŒ7sleep until a condition gets true or a timeout elapses ”h]”jM)�”}”(hŒ6sleep until a condition gets true or a timeout elapses”h]”hŒ6sleep until a condition gets true or a timeout elapses”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jìh´Mhj_h²hubj„)�”}”(hX**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``timeout`` timeout, in jiffies **Description** The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. **Return** 0 if the **condition** evaluated to ``false`` after the **timeout** elapsed, 1 if the **condition** evaluated to ``true`` after the **timeout** elapsed, the remaining jiffies (at least 1) if the **condition** evaluated to ``true`` before the **timeout** elapsed, or -``ERESTARTSYS`` if it was interrupted by a signal.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjóubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjh]”hŒwq_head”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MhjubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j-h´Mhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j-h´Mhjubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjQh]”hŒ condition”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MhjKubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jfh´Mhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jfh´Mhjubj©)�”}”(hŒ ``timeout`` timeout, in jiffies ”h]”(j¯)�”}”(hŒ ``timeout``”h]”jS)�”}”(hjŠh]”hŒtimeout”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj„ubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, in jiffies”h]”hŒtimeout, in jiffies”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŸh´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŸh´Mhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjóubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M hjóubjM)�”}”(hŒÁThe process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ;The process is put to sleep (TASK_INTERRUPTIBLE) until the ”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ$ is checked each time the waitqueue ”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ is woken up.”…”�”}”(hjÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MhjóubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M hjóubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj1h]”hŒReturn”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MhjóubjM)�”}”(hX=0 if the **condition** evaluated to ``false`` after the **timeout** elapsed, 1 if the **condition** evaluated to ``true`` after the **timeout** elapsed, the remaining jiffies (at least 1) if the **condition** evaluated to ``true`` before the **timeout** elapsed, or -``ERESTARTSYS`` if it was interrupted by a signal.”h]”(hŒ 0 if the ”…”�”}”(hjGh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubhŒ evaluated to ”…”�”}”(hjGh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjGubhŒ after the ”…”�”}”(hjGh²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubhŒ elapsed, 1 if the ”…”�”}”(hjGh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubhŒ evaluated to ”…”�”}”hjGsbjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjGubhŒ after the ”…”�”}”hjGsbjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubhŒ4 elapsed, the remaining jiffies (at least 1) if the ”…”�”}”(hjGh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubhŒ evaluated to ”…”�”}”(hjGh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjGubhŒ before the ”…”�”}”(hjGh²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubhŒ elapsed, or -”…”�”}”(hjGh²hh³Nh´NubjS)�”}”(hŒ``ERESTARTSYS``”h]”hŒ ERESTARTSYS”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjGubhŒ# if it was interrupted by a signal.”…”�”}”(hjGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_hrtimeout (C macro)”Œc.wait_event_hrtimeout”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_hrtimeout”h]”hù)�”}”(hŒwait_event_hrtimeout”h]”hÿ)�”}”(hŒwait_event_hrtimeout”h]”j)�”}”(hj$h]”hŒwait_event_hrtimeout”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj&h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M;ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj"h²hh³jAh´M;ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jAh´M;hjh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³jAh´M;ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjZjHjZjI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ6``wait_event_hrtimeout (wq_head, condition, timeout)``”h]”jS)�”}”(hj`h]”hŒ2wait_event_hrtimeout (wq_head, condition, timeout)”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M=hj_h²hubji)�”}”(hŒ7sleep until a condition gets true or a timeout elapses ”h]”jM)�”}”(hŒ6sleep until a condition gets true or a timeout elapses”h]”hŒ6sleep until a condition gets true or a timeout elapses”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M;hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jˆh´M;hj_h²hubj„)�”}”(hX/**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``timeout`` timeout, as a ktime_t **Description** The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. The function returns 0 if **condition** became true, or -ETIME if the timeout elapsed.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M?hj�ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hj´h]”hŒwq_head”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M<hj®ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjíh]”hŒ condition”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M=hjçubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´M=hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´M=hj«ubj©)�”}”(hŒ"``timeout`` timeout, as a ktime_t ”h]”(j¯)�”}”(hŒ ``timeout``”h]”jS)�”}”(hj&h]”hŒtimeout”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M>hj ubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, as a ktime_t”h]”hŒtimeout, as a ktime_t”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj�ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjah]”hŒ Description”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M@hj�ubjM)�”}”(hŒÃThe process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ=The process is put to sleep (TASK_UNINTERRUPTIBLE) until the ”…”�”}”(hjwh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjwh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwubhŒ$ is checked each time the waitqueue ”…”�”}”(hjwh²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwubhŒ is woken up.”…”�”}”(hjwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M?hj�ubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MChj�ubjM)�”}”(hŒVThe function returns 0 if **condition** became true, or -ETIME if the timeout elapsed.”h]”(hŒThe function returns 0 if ”…”�”}”(hjËh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËubhŒ/ became true, or -ETIME if the timeout elapsed.”…”�”}”(hjËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MFhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,wait_event_interruptible_hrtimeout (C macro)”Œ$c.wait_event_interruptible_hrtimeout”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ"wait_event_interruptible_hrtimeout”h]”hù)�”}”(hŒ"wait_event_interruptible_hrtimeout”h]”hÿ)�”}”(hŒ"wait_event_interruptible_hrtimeout”h]”j)�”}”(hjh]”hŒ"wait_event_interruptible_hrtimeout”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MUubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j#h´MUubah}”(h]”jÿah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j#h´MUhjh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j#h´MUubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj<jHj<jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ?``wait_event_interruptible_hrtimeout (wq, condition, timeout)``”h]”jS)�”}”(hjBh]”hŒ;wait_event_interruptible_hrtimeout (wq, condition, timeout)”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MWhj_h²hubji)�”}”(hŒ7sleep until a condition gets true or a timeout elapses ”h]”jM)�”}”(hŒ6sleep until a condition gets true or a timeout elapses”h]”hŒ6sleep until a condition gets true or a timeout elapses”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MUhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jjh´MUhj_h²hubj„)�”}”(hXS**Parameters** ``wq`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``timeout`` timeout, as a ktime_t **Description** The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. The function returns 0 if **condition** became true, -ERESTARTSYS if it was interrupted by a signal, or -ETIME if the timeout elapsed.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjwh]”hŒ Parameters”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MYhjqubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``wq`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ``wq``”h]”jS)�”}”(hj–h]”hŒwq”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MVhj�ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j«h´MVhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j«h´MVhj�ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjÏh]”hŒ condition”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MWhjÉubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jäh´MWhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jäh´MWhj�ubj©)�”}”(hŒ"``timeout`` timeout, as a ktime_t ”h]”(j¯)�”}”(hŒ ``timeout``”h]”jS)�”}”(hjh]”hŒtimeout”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MXhjubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, as a ktime_t”h]”hŒtimeout, as a ktime_t”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´MXhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´MXhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjqubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjCh]”hŒ Description”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MZhjqubjM)�”}”(hŒ¼The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq** is woken up.”h]”(hŒ;The process is put to sleep (TASK_INTERRUPTIBLE) until the ”…”�”}”(hjYh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjYubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjYh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjYubhŒ$ is checked each time the waitqueue ”…”�”}”(hjYh²hh³Nh´NubjŽ)�”}”(hŒ**wq**”h]”hŒwq”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjYubhŒ is woken up.”…”�”}”(hjYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MYhjqubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M]hjqubjM)�”}”(hŒ†The function returns 0 if **condition** became true, -ERESTARTSYS if it was interrupted by a signal, or -ETIME if the timeout elapsed.”h]”(hŒThe function returns 0 if ”…”�”}”(hj­h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj­ubhŒ_ became true, -ERESTARTSYS if it was interrupted by a signal, or -ETIME if the timeout elapsed.”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M`hjqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_idle (C macro)”Œc.wait_event_idle”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_idle”h]”hù)�”}”(hŒwait_event_idle”h]”hÿ)�”}”(hŒwait_event_idle”h]”j)�”}”(hjèh]”hŒwait_event_idle”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjêh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M—ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjæh²hh³jh´M—ubah}”(h]”jáah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´M—hjãh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjãh²hh³jh´M—ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ(``wait_event_idle (wq_head, condition)``”h]”jS)�”}”(hj$h]”hŒ$wait_event_idle (wq_head, condition)”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M™hj_h²hubji)�”}”(hŒ9wait for a condition without contributing to system load ”h]”jM)�”}”(hŒ8wait for a condition without contributing to system load”h]”hŒ8wait for a condition without contributing to system load”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M—hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jLh´M—hj_h²hubj„)�”}”(hX�**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for **Description** The process is put to sleep (TASK_IDLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjYh]”hŒ Parameters”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M›hjSubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjxh]”hŒwq_head”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M˜hjrubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�h´M˜hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�h´M˜hjoubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj±h]”hŒ condition”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M™hj«ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÆh´M™hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÆh´M™hjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjSubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M›hjSubjM)�”}”(hŒ The process is put to sleep (TASK_IDLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ2The process is put to sleep (TASK_IDLE) until the ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ evaluates to true. The ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ$ is checked each time the waitqueue ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ is woken up.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MšhjSubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MžhjSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#wait_event_idle_exclusive (C macro)”Œc.wait_event_idle_exclusive”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_idle_exclusive”h]”hù)�”}”(hŒwait_event_idle_exclusive”h]”hÿ)�”}”(hŒwait_event_idle_exclusive”h]”j)�”}”(hjph]”hŒwait_event_idle_exclusive”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjrh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M«ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjnh²hh³j�h´M«ubah}”(h]”jiah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�h´M«hjkh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjkh²hh³j�h´M«ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj¦jHj¦jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ2``wait_event_idle_exclusive (wq_head, condition)``”h]”jS)�”}”(hj¬h]”hŒ.wait_event_idle_exclusive (wq_head, condition)”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M­hj_h²hubji)�”}”(hŒ6wait for a condition with contributing to system load ”h]”jM)�”}”(hŒ5wait for a condition with contributing to system load”h]”hŒ5wait for a condition with contributing to system load”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M«hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jÔh´M«hj_h²hubj„)�”}”(hXH**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for **Description** The process is put to sleep (TASK_IDLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up. The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus if other processes wait on the same list, when this process is woken further processes are not considered. wake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M¯hjÛubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjh]”hŒwq_head”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M¬hjúubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´M¬hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´M¬hj÷ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj9h]”hŒ condition”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M­hj3ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jNh´M­hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jNh´M­hj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÛubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjth]”hŒ Description”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M¯hjÛubjM)�”}”(hŒ The process is put to sleep (TASK_IDLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ2The process is put to sleep (TASK_IDLE) until the ”…”�”}”(hjŠh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŠubhŒ evaluates to true. The ”…”�”}”(hjŠh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŠubhŒ$ is checked each time the waitqueue ”…”�”}”(hjŠh²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŠubhŒ is woken up.”…”�”}”(hjŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M®hjÛubjM)�”}”(hŒ·The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus if other processes wait on the same list, when this process is woken further processes are not considered.”h]”hŒ·The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus if other processes wait on the same list, when this process is woken further processes are not considered.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M²hjÛubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M¶hjÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!wait_event_idle_timeout (C macro)”Œc.wait_event_idle_timeout”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_idle_timeout”h]”hù)�”}”(hŒwait_event_idle_timeout”h]”hÿ)�”}”(hŒwait_event_idle_timeout”h]”j)�”}”(hjh]”hŒwait_event_idle_timeout”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÈubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j$h´MÈubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j$h´MÈhjh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j$h´MÈubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj=jHj=jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ9``wait_event_idle_timeout (wq_head, condition, timeout)``”h]”jS)�”}”(hjCh]”hŒ5wait_event_idle_timeout (wq_head, condition, timeout)”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÊhj_h²hubji)�”}”(hŒGsleep without load until a condition becomes true or a timeout elapses ”h]”jM)�”}”(hŒFsleep without load until a condition becomes true or a timeout elapses”h]”hŒFsleep without load until a condition becomes true or a timeout elapses”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÈhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jkh´MÈhj_h²hubj„)�”}”(hXÉ**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``timeout`` timeout, in jiffies **Description** The process is put to sleep (TASK_IDLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. **Return** 0 if the **condition** evaluated to ``false`` after the **timeout** elapsed, 1 if the **condition** evaluated to ``true`` after the **timeout** elapsed, or the remaining jiffies (at least 1) if the **condition** evaluated to ``true`` before the **timeout** elapsed.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjxh]”hŒ Parameters”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÌhjrubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hj—h]”hŒwq_head”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÉhj‘ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjÐh]”hŒ condition”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÊhjÊubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``timeout`` timeout, in jiffies ”h]”(j¯)�”}”(hŒ ``timeout``”h]”jS)�”}”(hj h]”hŒtimeout”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MËhjubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, in jiffies”h]”hŒtimeout, in jiffies”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´MËhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´MËhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjrubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjDh]”hŒ Description”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÍhjrubjM)�”}”(hŒ The process is put to sleep (TASK_IDLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ2The process is put to sleep (TASK_IDLE) until the ”…”�”}”(hjZh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZubhŒ evaluates to true. The ”…”�”}”(hjZh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZubhŒ$ is checked each time the waitqueue ”…”�”}”(hjZh²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZubhŒ is woken up.”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÌhjrubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÐhjrubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj°h]”hŒReturn”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÓhjrubjM)�”}”(hX 0 if the **condition** evaluated to ``false`` after the **timeout** elapsed, 1 if the **condition** evaluated to ``true`` after the **timeout** elapsed, or the remaining jiffies (at least 1) if the **condition** evaluated to ``true`` before the **timeout** elapsed.”h]”(hŒ 0 if the ”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ evaluated to ”…”�”}”(hjÆh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆubhŒ after the ”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ elapsed, 1 if the ”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ evaluated to ”…”�”}”hjÆsbjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆubhŒ after the ”…”�”}”hjÆsbjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ7 elapsed, or the remaining jiffies (at least 1) if the ”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ evaluated to ”…”�”}”(hjÆh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆubhŒ before the ”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ elapsed.”…”�”}”(hjÆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÔhjrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+wait_event_idle_exclusive_timeout (C macro)”Œ#c.wait_event_idle_exclusive_timeout”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ!wait_event_idle_exclusive_timeout”h]”hù)�”}”(hŒ!wait_event_idle_exclusive_timeout”h]”hÿ)�”}”(hŒ!wait_event_idle_exclusive_timeout”h]”j)�”}”(hj‘h]”hŒ!wait_event_idle_exclusive_timeout”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj“h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Méubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�h²hh³j®h´Méubah}”(h]”jŠah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j®h´MéhjŒh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŒh²hh³j®h´Méubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjÇjHjÇjI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒC``wait_event_idle_exclusive_timeout (wq_head, condition, timeout)``”h]”jS)�”}”(hjÍh]”hŒ?wait_event_idle_exclusive_timeout (wq_head, condition, timeout)”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mëhj_h²hubji)�”}”(hŒGsleep without load until a condition becomes true or a timeout elapses ”h]”jM)�”}”(hŒFsleep without load until a condition becomes true or a timeout elapses”h]”hŒFsleep without load until a condition becomes true or a timeout elapses”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Méhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jõh´Méhj_h²hubj„)�”}”(hX‚**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``timeout`` timeout, in jiffies **Description** The process is put to sleep (TASK_IDLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up. The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus if other processes wait on the same list, when this process is woken further processes are not considered. wake_up() has to be called after changing any variable that could change the result of the wait condition. **Return** 0 if the **condition** evaluated to ``false`` after the **timeout** elapsed, 1 if the **condition** evaluated to ``true`` after the **timeout** elapsed, or the remaining jiffies (at least 1) if the **condition** evaluated to ``true`` before the **timeout** elapsed.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Míhjüubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hj! h]”hŒwq_head”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mêhj ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6 h´Mêhj7 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6 h´Mêhj ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjZ h]”hŒ condition”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjX ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MëhjT ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jo h´Mëhjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjT ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jo h´Mëhj ubj©)�”}”(hŒ ``timeout`` timeout, in jiffies ”h]”(j¯)�”}”(hŒ ``timeout``”h]”jS)�”}”(hj“ h]”hŒtimeout”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mìhj� ubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, in jiffies”h]”hŒtimeout, in jiffies”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjüubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MîhjüubjM)�”}”(hŒ The process is put to sleep (TASK_IDLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ2The process is put to sleep (TASK_IDLE) until the ”…”�”}”(hjä h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjä ubhŒ evaluates to true. The ”…”�”}”(hjä h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjä ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjä h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjä ubhŒ is woken up.”…”�”}”(hjä h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MíhjüubjM)�”}”(hŒ·The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus if other processes wait on the same list, when this process is woken further processes are not considered.”h]”hŒ·The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus if other processes wait on the same list, when this process is woken further processes are not considered.”…”�”}”(hj)!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MñhjüubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj8!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MõhjüubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjI!h]”hŒReturn”…”�”}”(hjK!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjG!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MøhjüubjM)�”}”(hX 0 if the **condition** evaluated to ``false`` after the **timeout** elapsed, 1 if the **condition** evaluated to ``true`` after the **timeout** elapsed, or the remaining jiffies (at least 1) if the **condition** evaluated to ``true`` before the **timeout** elapsed.”h]”(hŒ 0 if the ”…”�”}”(hj_!h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjg!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_!ubhŒ evaluated to ”…”�”}”(hj_!h²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjy!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj_!ubhŒ after the ”…”�”}”(hj_!h²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hj‹!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_!ubhŒ elapsed, 1 if the ”…”�”}”(hj_!h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_!ubhŒ evaluated to ”…”�”}”hj_!sbjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj¯!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj_!ubhŒ after the ”…”�”}”hj_!sbjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjÁ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_!ubhŒ7 elapsed, or the remaining jiffies (at least 1) if the ”…”�”}”(hj_!h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjÓ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_!ubhŒ evaluated to ”…”�”}”(hj_!h²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjå!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj_!ubhŒ before the ”…”�”}”(hj_!h²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hj÷!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1•]j�hj_!ubhŒ elapsed.”…”�”}”(hj_!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mùhjüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)wait_event_interruptible_locked (C macro)”Œ!c.wait_event_interruptible_locked”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_interruptible_locked”h]”hù)�”}”(hŒwait_event_interruptible_locked”h]”hÿ)�”}”(hŒwait_event_interruptible_locked”h]”j)�”}”(hj*"h]”hŒwait_event_interruptible_locked”…”�”}”(hj4"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0"ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj,"h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj("h²hh³jG"h´Mubah}”(h]”j#"ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jG"h´Mhj%"h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj%"h²hh³jG"h´Mubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj`"jHj`"jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ3``wait_event_interruptible_locked (wq, condition)``”h]”jS)�”}”(hjf"h]”hŒ/wait_event_interruptible_locked (wq, condition)”…”�”}”(hjh"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjd"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj_h²hubji)�”}”(hŒ"sleep until a condition gets true ”h]”jM)�”}”(hŒ!sleep until a condition gets true”h]”hŒ!sleep until a condition gets true”…”�”}”(hj€"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj|"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jŽ"h´Mhj_h²hubj„)�”}”(hXg**Parameters** ``wq`` the waitqueue to wait on ``condition`` a C expression for the event to wait for **Description** The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq** is woken up. It must be called with wq.lock being held. This spinlock is unlocked while sleeping but **condition** testing is done while lock is held and when this macro exits the lock is held. The lock is locked/unlocked using spin_lock()/spin_unlock() functions which must match the way they are locked/unlocked outside of this macro. wake_up_locked() has to be called after changing any variable that could change the result of the wait condition. The function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M!hj•"ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``wq`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ``wq``”h]”jS)�”}”(hjº"h]”hŒwq”…”�”}”(hj¼"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¸"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj´"ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjÓ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÏ"h´MhjÐ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj´"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÏ"h´Mhj±"ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjó"h]”hŒ condition”…”�”}”(hjõ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjñ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjí"ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j#h´Mhj #ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjí"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j#h´Mhj±"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj•"ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj.#h]”hŒ Description”…”�”}”(hj0#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M!hj•"ubjM)�”}”(hŒ¼The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq** is woken up.”h]”(hŒ;The process is put to sleep (TASK_INTERRUPTIBLE) until the ”…”�”}”(hjD#h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjL#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD#ubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjD#h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj^#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD#ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjD#h²hh³Nh´NubjŽ)�”}”(hŒ**wq**”h]”hŒwq”…”�”}”(hjp#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD#ubhŒ is woken up.”…”�”}”(hjD#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M hj•"ubjM)�”}”(hŒµIt must be called with wq.lock being held. This spinlock is unlocked while sleeping but **condition** testing is done while lock is held and when this macro exits the lock is held.”h]”(hŒYIt must be called with wq.lock being held. This spinlock is unlocked while sleeping but ”…”�”}”(hj‰#h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj‘#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‰#ubhŒO testing is done while lock is held and when this macro exits the lock is held.”…”�”}”(hj‰#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M$hj•"ubjM)�”}”(hŒŽThe lock is locked/unlocked using spin_lock()/spin_unlock() functions which must match the way they are locked/unlocked outside of this macro.”h]”hŒŽThe lock is locked/unlocked using spin_lock()/spin_unlock() functions which must match the way they are locked/unlocked outside of this macro.”…”�”}”(hjª#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M(hj•"ubjM)�”}”(hŒqwake_up_locked() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒqwake_up_locked() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj¹#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M,hj•"ubjM)�”}”(hŒqThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(hŒQThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if ”…”�”}”(hjÈ#h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjÐ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈ#ubhŒ evaluated to true.”…”�”}”(hjÈ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M/hj•"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-wait_event_interruptible_locked_irq (C macro)”Œ%c.wait_event_interruptible_locked_irq”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ#wait_event_interruptible_locked_irq”h]”hù)�”}”(hŒ#wait_event_interruptible_locked_irq”h]”hÿ)�”}”(hŒ#wait_event_interruptible_locked_irq”h]”j)�”}”(hj$h]”hŒ#wait_event_interruptible_locked_irq”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj $ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj$h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M8ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj$h²hh³j $h´M8ubah}”(h]”jü#ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j $h´M8hjþ#h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjþ#h²hh³j $h´M8ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj9$jHj9$jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ7``wait_event_interruptible_locked_irq (wq, condition)``”h]”jS)�”}”(hj?$h]”hŒ3wait_event_interruptible_locked_irq (wq, condition)”…”�”}”(hjA$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M:hj_h²hubji)�”}”(hŒ"sleep until a condition gets true ”h]”jM)�”}”(hŒ!sleep until a condition gets true”h]”hŒ!sleep until a condition gets true”…”�”}”(hjY$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M8hjU$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jg$h´M8hj_h²hubj„)�”}”(hXo**Parameters** ``wq`` the waitqueue to wait on ``condition`` a C expression for the event to wait for **Description** The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq** is woken up. It must be called with wq.lock being held. This spinlock is unlocked while sleeping but **condition** testing is done while lock is held and when this macro exits the lock is held. The lock is locked/unlocked using spin_lock_irq()/spin_unlock_irq() functions which must match the way they are locked/unlocked outside of this macro. wake_up_locked() has to be called after changing any variable that could change the result of the wait condition. The function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjt$h]”hŒ Parameters”…”�”}”(hjv$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjr$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M<hjn$ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``wq`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ``wq``”h]”jS)�”}”(hj“$h]”hŒwq”…”�”}”(hj•$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M9hj�$ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hj¬$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¨$h´M9hj©$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¨$h´M9hjŠ$ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjÌ$h]”hŒ condition”…”�”}”(hjÎ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÊ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M:hjÆ$ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjå$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjn$ubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M<hjn$ubjM)�”}”(hŒ¼The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq** is woken up.”h]”(hŒ;The process is put to sleep (TASK_INTERRUPTIBLE) until the ”…”�”}”(hj%h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj%%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hj%h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj7%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ubhŒ$ is checked each time the waitqueue ”…”�”}”(hj%h²hh³Nh´NubjŽ)�”}”(hŒ**wq**”h]”hŒwq”…”�”}”(hjI%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ubhŒ is woken up.”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M;hjn$ubjM)�”}”(hŒµIt must be called with wq.lock being held. This spinlock is unlocked while sleeping but **condition** testing is done while lock is held and when this macro exits the lock is held.”h]”(hŒYIt must be called with wq.lock being held. This spinlock is unlocked while sleeping but ”…”�”}”(hjb%h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjb%ubhŒO testing is done while lock is held and when this macro exits the lock is held.”…”�”}”(hjb%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M?hjn$ubjM)�”}”(hŒ–The lock is locked/unlocked using spin_lock_irq()/spin_unlock_irq() functions which must match the way they are locked/unlocked outside of this macro.”h]”hŒ–The lock is locked/unlocked using spin_lock_irq()/spin_unlock_irq() functions which must match the way they are locked/unlocked outside of this macro.”…”�”}”(hjƒ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MChjn$ubjM)�”}”(hŒqwake_up_locked() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒqwake_up_locked() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj’%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MGhjn$ubjM)�”}”(hŒqThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(hŒQThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if ”…”�”}”(hj¡%h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj©%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡%ubhŒ evaluated to true.”…”�”}”(hj¡%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MJhjn$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ3wait_event_interruptible_exclusive_locked (C macro)”Œ+c.wait_event_interruptible_exclusive_locked”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ)wait_event_interruptible_exclusive_locked”h]”hù)�”}”(hŒ)wait_event_interruptible_exclusive_locked”h]”hÿ)�”}”(hŒ)wait_event_interruptible_exclusive_locked”h]”j)�”}”(hjÜ%h]”hŒ)wait_event_interruptible_exclusive_locked”…”�”}”(hjæ%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ%ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÞ%h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MSubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÚ%h²hh³jù%h´MSubah}”(h]”jÕ%ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jù%h´MShj×%h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj×%h²hh³jù%h´MSubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj&jHj&jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ=``wait_event_interruptible_exclusive_locked (wq, condition)``”h]”jS)�”}”(hj&h]”hŒ9wait_event_interruptible_exclusive_locked (wq, condition)”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MUhj_h²hubji)�”}”(hŒ.sleep exclusively until a condition gets true ”h]”jM)�”}”(hŒ-sleep exclusively until a condition gets true”h]”hŒ-sleep exclusively until a condition gets true”…”�”}”(hj2&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MShj.&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j@&h´MShj_h²hubj„)�”}”(hX"**Parameters** ``wq`` the waitqueue to wait on ``condition`` a C expression for the event to wait for **Description** The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq** is woken up. It must be called with wq.lock being held. This spinlock is unlocked while sleeping but **condition** testing is done while lock is held and when this macro exits the lock is held. The lock is locked/unlocked using spin_lock()/spin_unlock() functions which must match the way they are locked/unlocked outside of this macro. The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus when other process waits process on the list if this process is awaken further processes are not considered. wake_up_locked() has to be called after changing any variable that could change the result of the wait condition. The function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjM&h]”hŒ Parameters”…”�”}”(hjO&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MWhjG&ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``wq`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ``wq``”h]”jS)�”}”(hjl&h]”hŒwq”…”�”}”(hjn&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MThjf&ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hj…&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�&h´MThj‚&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjf&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�&h´MThjc&ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj¥&h]”hŒ condition”…”�”}”(hj§&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MUhjŸ&ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hj¾&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jº&h´MUhj»&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŸ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jº&h´MUhjc&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjG&ubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MWhjG&ubjM)�”}”(hŒ¼The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq** is woken up.”h]”(hŒ;The process is put to sleep (TASK_INTERRUPTIBLE) until the ”…”�”}”(hjö&h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjþ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö&ubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjö&h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö&ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjö&h²hh³Nh´NubjŽ)�”}”(hŒ**wq**”h]”hŒwq”…”�”}”(hj"'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö&ubhŒ is woken up.”…”�”}”(hjö&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MVhjG&ubjM)�”}”(hŒµIt must be called with wq.lock being held. This spinlock is unlocked while sleeping but **condition** testing is done while lock is held and when this macro exits the lock is held.”h]”(hŒYIt must be called with wq.lock being held. This spinlock is unlocked while sleeping but ”…”�”}”(hj;'h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjC'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;'ubhŒO testing is done while lock is held and when this macro exits the lock is held.”…”�”}”(hj;'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MZhjG&ubjM)�”}”(hŒŽThe lock is locked/unlocked using spin_lock()/spin_unlock() functions which must match the way they are locked/unlocked outside of this macro.”h]”hŒŽThe lock is locked/unlocked using spin_lock()/spin_unlock() functions which must match the way they are locked/unlocked outside of this macro.”…”�”}”(hj\'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M^hjG&ubjM)�”}”(hŒ¹The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus when other process waits process on the list if this process is awaken further processes are not considered.”h]”hŒ¹The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus when other process waits process on the list if this process is awaken further processes are not considered.”…”�”}”(hjk'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MbhjG&ubjM)�”}”(hŒqwake_up_locked() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒqwake_up_locked() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hjz'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MfhjG&ubjM)�”}”(hŒqThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(hŒQThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if ”…”�”}”(hj‰'h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj‘'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‰'ubhŒ evaluated to true.”…”�”}”(hj‰'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MihjG&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ7wait_event_interruptible_exclusive_locked_irq (C macro)”Œ/c.wait_event_interruptible_exclusive_locked_irq”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-wait_event_interruptible_exclusive_locked_irq”h]”hù)�”}”(hŒ-wait_event_interruptible_exclusive_locked_irq”h]”hÿ)�”}”(hŒ-wait_event_interruptible_exclusive_locked_irq”h]”j)�”}”(hjÄ'h]”hŒ-wait_event_interruptible_exclusive_locked_irq”…”�”}”(hjÎ'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊ'ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÆ'h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mrubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÂ'h²hh³já'h´Mrubah}”(h]”j½'ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³já'h´Mrhj¿'h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¿'h²hh³já'h´Mrubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjú'jHjú'jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒA``wait_event_interruptible_exclusive_locked_irq (wq, condition)``”h]”jS)�”}”(hj(h]”hŒ=wait_event_interruptible_exclusive_locked_irq (wq, condition)”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjþ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mthj_h²hubji)�”}”(hŒ"sleep until a condition gets true ”h]”jM)�”}”(hŒ!sleep until a condition gets true”h]”hŒ!sleep until a condition gets true”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mrhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j((h´Mrhj_h²hubj„)�”}”(hX***Parameters** ``wq`` the waitqueue to wait on ``condition`` a C expression for the event to wait for **Description** The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq** is woken up. It must be called with wq.lock being held. This spinlock is unlocked while sleeping but **condition** testing is done while lock is held and when this macro exits the lock is held. The lock is locked/unlocked using spin_lock_irq()/spin_unlock_irq() functions which must match the way they are locked/unlocked outside of this macro. The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus when other process waits process on the list if this process is awaken further processes are not considered. wake_up_locked() has to be called after changing any variable that could change the result of the wait condition. The function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj5(h]”hŒ Parameters”…”�”}”(hj7(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mvhj/(ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``wq`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ``wq``”h]”jS)�”}”(hjT(h]”hŒwq”…”�”}”(hjV(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjR(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MshjN(ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjm(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ji(h´Mshjj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjN(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ji(h´MshjK(ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj�(h]”hŒ condition”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‹(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mthj‡(ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hj¦(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¢(h´Mthj£(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‡(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¢(h´MthjK(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj/(ubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mvhj/(ubjM)�”}”(hŒ¼The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq** is woken up.”h]”(hŒ;The process is put to sleep (TASK_INTERRUPTIBLE) until the ”…”�”}”(hjÞ(h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjæ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞ(ubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjÞ(h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjø(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞ(ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjÞ(h²hh³Nh´NubjŽ)�”}”(hŒ**wq**”h]”hŒwq”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞ(ubhŒ is woken up.”…”�”}”(hjÞ(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Muhj/(ubjM)�”}”(hŒµIt must be called with wq.lock being held. This spinlock is unlocked while sleeping but **condition** testing is done while lock is held and when this macro exits the lock is held.”h]”(hŒYIt must be called with wq.lock being held. This spinlock is unlocked while sleeping but ”…”�”}”(hj#)h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj+)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#)ubhŒO testing is done while lock is held and when this macro exits the lock is held.”…”�”}”(hj#)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Myhj/(ubjM)�”}”(hŒ–The lock is locked/unlocked using spin_lock_irq()/spin_unlock_irq() functions which must match the way they are locked/unlocked outside of this macro.”h]”hŒ–The lock is locked/unlocked using spin_lock_irq()/spin_unlock_irq() functions which must match the way they are locked/unlocked outside of this macro.”…”�”}”(hjD)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M}hj/(ubjM)�”}”(hŒ¹The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus when other process waits process on the list if this process is awaken further processes are not considered.”h]”hŒ¹The process is put on the wait queue with an WQ_FLAG_EXCLUSIVE flag set thus when other process waits process on the list if this process is awaken further processes are not considered.”…”�”}”(hjS)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M�hj/(ubjM)�”}”(hŒqwake_up_locked() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒqwake_up_locked() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hjb)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M…hj/(ubjM)�”}”(hŒqThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(hŒQThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if ”…”�”}”(hjq)h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjy)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjq)ubhŒ evaluated to true.”…”�”}”(hjq)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mˆhj/(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_killable (C macro)”Œc.wait_event_killable”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_killable”h]”hù)�”}”(hŒwait_event_killable”h]”hÿ)�”}”(hŒwait_event_killable”h]”j)�”}”(hj¬)h]”hŒwait_event_killable”…”�”}”(hj¶)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²)ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj®)h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M•ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjª)h²hh³jÉ)h´M•ubah}”(h]”j¥)ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÉ)h´M•hj§)h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj§)h²hh³jÉ)h´M•ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjâ)jHjâ)jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ,``wait_event_killable (wq_head, condition)``”h]”jS)�”}”(hjè)h]”hŒ(wait_event_killable (wq_head, condition)”…”�”}”(hjê)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjæ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M—hj_h²hubji)�”}”(hŒ"sleep until a condition gets true ”h]”jM)�”}”(hŒ!sleep until a condition gets true”h]”hŒ!sleep until a condition gets true”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M•hjþ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j*h´M•hj_h²hubj„)�”}”(hX**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for **Description** The process is put to sleep (TASK_KILLABLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. The function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M™hj*ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hj<*h]”hŒwq_head”…”�”}”(hj>*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M–hj6*ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjU*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ*h´M–hjR*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQ*h´M–hj3*ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hju*h]”hŒ condition”…”�”}”(hjw*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjs*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M—hjo*ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjŽ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠ*h´M—hj‹*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjo*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠ*h´M—hj3*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj*ubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M™hj*ubjM)�”}”(hŒ¼The process is put to sleep (TASK_KILLABLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ6The process is put to sleep (TASK_KILLABLE) until the ”…”�”}”(hjÆ*h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjÎ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆ*ubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjÆ*h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjà*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆ*ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjÆ*h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hjò*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆ*ubhŒ is woken up.”…”�”}”(hjÆ*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M˜hj*ubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mœhj*ubjM)�”}”(hŒqThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(hŒQThe function will return -ERESTARTSYS if it was interrupted by a signal and 0 if ”…”�”}”(hj+h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj"+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj+ubhŒ evaluated to true.”…”�”}”(hj+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MŸhj*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_state (C macro)”Œc.wait_event_state”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_state”h]”hù)�”}”(hŒwait_event_state”h]”hÿ)�”}”(hŒwait_event_state”h]”j)�”}”(hjU+h]”hŒwait_event_state”…”�”}”(hj_+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[+ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjW+h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M¿ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjS+h²hh³jr+h´M¿ubah}”(h]”jN+ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jr+h´M¿hjP+h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjP+h²hh³jr+h´M¿ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj‹+jHj‹+jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ0``wait_event_state (wq_head, condition, state)``”h]”jS)�”}”(hj‘+h]”hŒ,wait_event_state (wq_head, condition, state)”…”�”}”(hj“+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÁhj_h²hubji)�”}”(hŒ"sleep until a condition gets true ”h]”jM)�”}”(hŒ!sleep until a condition gets true”h]”hŒ!sleep until a condition gets true”…”�”}”(hj«+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M¿hj§+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j¹+h´M¿hj_h²hubj„)�”}”(hXr**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``state`` state to sleep in **Description** The process is put to sleep (**state**) until the **condition** evaluates to true or a signal is received (when allowed by **state**). The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. The function will return -ERESTARTSYS if it was interrupted by a signal (when allowed by **state**) and 0 if **condition** evaluated to true.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÃhjÀ+ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjå+h]”hŒwq_head”…”�”}”(hjç+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjã+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÀhjß+ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjþ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj,h]”hŒ condition”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÁhj,ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hj7,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j3,h´MÁhj4,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j3,h´MÁhjÜ+ubj©)�”}”(hŒ``state`` state to sleep in ”h]”(j¯)�”}”(hŒ ``state``”h]”jS)�”}”(hjW,h]”hŒstate”…”�”}”(hjY,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjU,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÂhjQ,ubjÉ)�”}”(hhh]”jM)�”}”(hŒstate to sleep in”h]”hŒstate to sleep in”…”�”}”(hjp,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jl,h´MÂhjm,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jl,h´MÂhjÜ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÀ+ubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÄhjÀ+ubjM)�”}”(hŒÕThe process is put to sleep (**state**) until the **condition** evaluates to true or a signal is received (when allowed by **state**). The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒThe process is put to sleep (”…”�”}”(hj¨,h²hh³Nh´NubjŽ)�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj°,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨,ubhŒ ) until the ”…”�”}”(hj¨,h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjÂ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨,ubhŒ< evaluates to true or a signal is received (when allowed by ”…”�”}”(hj¨,h²hh³Nh´NubjŽ)�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjÔ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨,ubhŒ). The ”…”�”}”(hj¨,h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjæ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨,ubhŒ$ is checked each time the waitqueue ”…”�”}”(hj¨,h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hjø,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨,ubhŒ is woken up.”…”�”}”(hj¨,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÃhjÀ+ubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÇhjÀ+ubjM)�”}”(hŒ�The function will return -ERESTARTSYS if it was interrupted by a signal (when allowed by **state**) and 0 if **condition** evaluated to true.”h]”(hŒYThe function will return -ERESTARTSYS if it was interrupted by a signal (when allowed by ”…”�”}”(hj -h²hh³Nh´NubjŽ)�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj(-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj -ubhŒ ) and 0 if ”…”�”}”(hj -h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj:-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj -ubhŒ evaluated to true.”…”�”}”(hj -h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÊhjÀ+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%wait_event_killable_timeout (C macro)”Œc.wait_event_killable_timeout”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_killable_timeout”h]”hù)�”}”(hŒwait_event_killable_timeout”h]”hÿ)�”}”(hŒwait_event_killable_timeout”h]”j)�”}”(hjm-h]”hŒwait_event_killable_timeout”…”�”}”(hjw-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs-ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjo-h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Méubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjk-h²hh³jŠ-h´Méubah}”(h]”jf-ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŠ-h´Méhjh-h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh-h²hh³jŠ-h´Méubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj£-jHj£-jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ=``wait_event_killable_timeout (wq_head, condition, timeout)``”h]”jS)�”}”(hj©-h]”hŒ9wait_event_killable_timeout (wq_head, condition, timeout)”…”�”}”(hj«-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj§-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mëhj_h²hubji)�”}”(hŒ7sleep until a condition gets true or a timeout elapses ”h]”jM)�”}”(hŒ6sleep until a condition gets true or a timeout elapses”h]”hŒ6sleep until a condition gets true or a timeout elapses”…”�”}”(hjÃ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Méhj¿-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jÑ-h´Méhj_h²hubj„)�”}”(hXO**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``timeout`` timeout, in jiffies **Description** The process is put to sleep (TASK_KILLABLE) until the **condition** evaluates to true or a kill signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. Only kill signals interrupt this process. **Return** 0 if the **condition** evaluated to ``false`` after the **timeout** elapsed, 1 if the **condition** evaluated to ``true`` after the **timeout** elapsed, the remaining jiffies (at least 1) if the **condition** evaluated to ``true`` before the **timeout** elapsed, or -``ERESTARTSYS`` if it was interrupted by a kill signal.”h]”(jM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MíhjØ-ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjý-h]”hŒwq_head”…”�”}”(hjÿ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjû-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mêhj÷-ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj6.h]”hŒ condition”…”�”}”(hj8.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mëhj0.ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjO.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jK.h´MëhjL.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jK.h´Mëhjô-ubj©)�”}”(hŒ ``timeout`` timeout, in jiffies ”h]”(j¯)�”}”(hŒ ``timeout``”h]”jS)�”}”(hjo.h]”hŒtimeout”…”�”}”(hjq.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjm.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mìhji.ubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, in jiffies”h]”hŒtimeout, in jiffies”…”�”}”(hjˆ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j„.h´Mìhj….ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhji.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„.h´Mìhjô-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjØ-ubjM)�”}”(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&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MîhjØ-ubjM)�”}”(hŒÁThe process is put to sleep (TASK_KILLABLE) until the **condition** evaluates to true or a kill signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ6The process is put to sleep (TASK_KILLABLE) until the ”…”�”}”(hjÀ.h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjÈ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀ.ubhŒ5 evaluates to true or a kill signal is received. The ”…”�”}”(hjÀ.h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjÚ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀ.ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjÀ.h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hjì.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀ.ubhŒ is woken up.”…”�”}”(hjÀ.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MíhjØ-ubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MñhjØ-ubjM)�”}”(hŒ)Only kill signals interrupt this process.”h]”hŒ)Only kill signals interrupt this process.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MõhjØ-ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj%/h]”hŒReturn”…”�”}”(hj'/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M÷hjØ-ubjM)�”}”(hXB0 if the **condition** evaluated to ``false`` after the **timeout** elapsed, 1 if the **condition** evaluated to ``true`` after the **timeout** elapsed, the remaining jiffies (at least 1) if the **condition** evaluated to ``true`` before the **timeout** elapsed, or -``ERESTARTSYS`` if it was interrupted by a kill signal.”h]”(hŒ 0 if the ”…”�”}”(hj;/h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjC/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;/ubhŒ evaluated to ”…”�”}”(hj;/h²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjU/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;/ubhŒ after the ”…”�”}”(hj;/h²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjg/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;/ubhŒ elapsed, 1 if the ”…”�”}”(hj;/h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjy/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;/ubhŒ evaluated to ”…”�”}”hj;/sbjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj‹/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;/ubhŒ after the ”…”�”}”hj;/sbjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;/ubhŒ4 elapsed, the remaining jiffies (at least 1) if the ”…”�”}”(hj;/h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj¯/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;/ubhŒ evaluated to ”…”�”}”(hj;/h²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÁ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;/ubhŒ before the ”…”�”}”(hj;/h²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjÓ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;/ubhŒ elapsed, or -”…”�”}”(hj;/h²hh³Nh´NubjS)�”}”(hŒ``ERESTARTSYS``”h]”hŒ ERESTARTSYS”…”�”}”(hjå/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;/ubhŒ( if it was interrupted by a kill signal.”…”�”}”(hj;/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MõhjØ-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!wait_event_lock_irq_cmd (C macro)”Œc.wait_event_lock_irq_cmd”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_lock_irq_cmd”h]”hù)�”}”(hŒwait_event_lock_irq_cmd”h]”hÿ)�”}”(hŒwait_event_lock_irq_cmd”h]”j)�”}”(hj0h]”hŒwait_event_lock_irq_cmd”…”�”}”(hj"0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj0h²hh³j50h´Mubah}”(h]”j0ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j50h´Mhj0h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj0h²hh³j50h´Mubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjN0jHjN0jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ;``wait_event_lock_irq_cmd (wq_head, condition, lock, cmd)``”h]”jS)�”}”(hjT0h]”hŒ7wait_event_lock_irq_cmd (wq_head, condition, lock, cmd)”…”�”}”(hjV0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjR0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj_h²hubji)�”}”(hŒsleep until a condition gets true. The condition is checked under the lock. This is expected to be called with the lock taken. ”h]”jM)�”}”(hŒ~sleep until a condition gets true. The condition is checked under the lock. This is expected to be called with the lock taken.”h]”hŒ~sleep until a condition gets true. The condition is checked under the lock. This is expected to be called with the lock taken.”…”�”}”(hjn0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j|0h´Mhj_h²hubj„)�”}”(hXï**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``lock`` a locked spinlock_t, which will be released before cmd and schedule() and reacquired afterwards. ``cmd`` a command which is invoked outside the critical section before sleep **Description** The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. This is supposed to be called while holding the lock. The lock is dropped before invoking the cmd and going to sleep and is reacquired afterwards.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj‰0h]”hŒ Parameters”…”�”}”(hj‹0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‡0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjƒ0ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hj¨0h]”hŒwq_head”…”�”}”(hjª0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¦0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj¢0ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjÁ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j½0h´Mhj¾0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¢0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j½0h´MhjŸ0ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjá0h]”hŒ condition”…”�”}”(hjã0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjß0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MhjÛ0ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjú0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jö0h´Mhj÷0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÛ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jö0h´MhjŸ0ubj©)�”}”(hŒj``lock`` a locked spinlock_t, which will be released before cmd and schedule() and reacquired afterwards. ”h]”(j¯)�”}”(hŒ``lock``”h]”jS)�”}”(hj1h]”hŒlock”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj1ubjÉ)�”}”(hhh]”jM)�”}”(hŒ`a locked spinlock_t, which will be released before cmd and schedule() and reacquired afterwards.”h]”hŒ`a locked spinlock_t, which will be released before cmd and schedule() and reacquired afterwards.”…”�”}”(hj31h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj01ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j/1h´MhjŸ0ubj©)�”}”(hŒM``cmd`` a command which is invoked outside the critical section before sleep ”h]”(j¯)�”}”(hŒ``cmd``”h]”jS)�”}”(hjT1h]”hŒcmd”…”�”}”(hjV1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjR1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MhjN1ubjÉ)�”}”(hhh]”jM)�”}”(hŒDa command which is invoked outside the critical section before sleep”h]”hŒDa command which is invoked outside the critical section before sleep”…”�”}”(hjm1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjN1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ji1h´MhjŸ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjƒ0ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj�1h]”hŒ Description”…”�”}”(hj’1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjƒ0ubjM)�”}”(hŒ«The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ=The process is put to sleep (TASK_UNINTERRUPTIBLE) until the ”…”�”}”(hj¦1h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj®1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦1ubhŒ evaluates to true. The ”…”�”}”(hj¦1h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjÀ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦1ubhŒ$ is checked each time the waitqueue ”…”�”}”(hj¦1h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hjÒ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦1ubhŒ is woken up.”…”�”}”(hj¦1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjƒ0ubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hjë1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjƒ0ubjM)�”}”(hŒ’This is supposed to be called while holding the lock. The lock is dropped before invoking the cmd and going to sleep and is reacquired afterwards.”h]”hŒ’This is supposed to be called while holding the lock. The lock is dropped before invoking the cmd and going to sleep and is reacquired afterwards.”…”�”}”(hjú1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M"hjƒ0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_lock_irq (C macro)”Œc.wait_event_lock_irq”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_lock_irq”h]”hù)�”}”(hŒwait_event_lock_irq”h]”hÿ)�”}”(hŒwait_event_lock_irq”h]”j)�”}”(hj#2h]”hŒwait_event_lock_irq”…”�”}”(hj-2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)2ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj%2h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M/ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj!2h²hh³j@2h´M/ubah}”(h]”j2ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j@2h´M/hj2h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj2h²hh³j@2h´M/ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjY2jHjY2jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ2``wait_event_lock_irq (wq_head, condition, lock)``”h]”jS)�”}”(hj_2h]”hŒ.wait_event_lock_irq (wq_head, condition, lock)”…”�”}”(hja2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj]2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M1hj_h²hubji)�”}”(hŒsleep until a condition gets true. The condition is checked under the lock. This is expected to be called with the lock taken. ”h]”jM)�”}”(hŒ~sleep until a condition gets true. The condition is checked under the lock. This is expected to be called with the lock taken.”h]”hŒ~sleep until a condition gets true. The condition is checked under the lock. This is expected to be called with the lock taken.”…”�”}”(hjy2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M/hju2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j‡2h´M/hj_h²hubj„)�”}”(hX€**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``lock`` a locked spinlock_t, which will be released before schedule() and reacquired afterwards. **Description** The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. This is supposed to be called while holding the lock. The lock is dropped before going to sleep and is reacquired afterwards.”•5h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj”2h]”hŒ Parameters”…”�”}”(hj–2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M3hjŽ2ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hj³2h]”hŒwq_head”…”�”}”(hjµ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj±2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M3hj­2ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjÌ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÈ2h´M3hjÉ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj­2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÈ2h´M3hjª2ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjì2h]”hŒ condition”…”�”}”(hjî2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjê2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M4hjæ2ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j3h´M4hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjæ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j3h´M4hjª2ubj©)�”}”(hŒb``lock`` a locked spinlock_t, which will be released before schedule() and reacquired afterwards. ”h]”(j¯)�”}”(hŒ``lock``”h]”jS)�”}”(hj%3h]”hŒlock”…”�”}”(hj'3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj#3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M6hj3ubjÉ)�”}”(hhh]”jM)�”}”(hŒXa locked spinlock_t, which will be released before schedule() and reacquired afterwards.”h]”hŒXa locked spinlock_t, which will be released before schedule() and reacquired afterwards.”…”�”}”(hj>3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M5hj;3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j:3h´M6hjª2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjŽ2ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hja3h]”hŒ Description”…”�”}”(hjc3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M8hjŽ2ubjM)�”}”(hŒ«The process is put to sleep (TASK_UNINTERRUPTIBLE) until the **condition** evaluates to true. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ=The process is put to sleep (TASK_UNINTERRUPTIBLE) until the ”…”�”}”(hjw3h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw3ubhŒ evaluates to true. The ”…”�”}”(hjw3h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj‘3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw3ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjw3h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj£3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw3ubhŒ is woken up.”…”�”}”(hjw3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M7hjŽ2ubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hj¼3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M;hjŽ2ubjM)�”}”(hŒ}This is supposed to be called while holding the lock. The lock is dropped before going to sleep and is reacquired afterwards.”h]”hŒ}This is supposed to be called while holding the lock. The lock is dropped before going to sleep and is reacquired afterwards.”…”�”}”(hjË3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M>hjŽ2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/wait_event_interruptible_lock_irq_cmd (C macro)”Œ'c.wait_event_interruptible_lock_irq_cmd”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ%wait_event_interruptible_lock_irq_cmd”h]”hù)�”}”(hŒ%wait_event_interruptible_lock_irq_cmd”h]”hÿ)�”}”(hŒ%wait_event_interruptible_lock_irq_cmd”h]”j)�”}”(hjô3h]”hŒ%wait_event_interruptible_lock_irq_cmd”…”�”}”(hjþ3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjú3ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjö3h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MRubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjò3h²hh³j4h´MRubah}”(h]”jí3ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j4h´MRhjï3h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjï3h²hh³j4h´MRubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj*4jHj*4jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒI``wait_event_interruptible_lock_irq_cmd (wq_head, condition, lock, cmd)``”h]”jS)�”}”(hj04h]”hŒEwait_event_interruptible_lock_irq_cmd (wq_head, condition, lock, cmd)”…”�”}”(hj24h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj.4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MThj_h²hubji)�”}”(hŒsleep until a condition gets true. The condition is checked under the lock. This is expected to be called with the lock taken. ”h]”jM)�”}”(hŒ~sleep until a condition gets true. The condition is checked under the lock. This is expected to be called with the lock taken.”h]”hŒ~sleep until a condition gets true. The condition is checked under the lock. This is expected to be called with the lock taken.”…”�”}”(hjJ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MRhjF4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jX4h´MRhj_h²hubj„)�”}”(hXu**Parameters** ``wq_head`` the waitqueue to wait on ``condition`` a C expression for the event to wait for ``lock`` a locked spinlock_t, which will be released before cmd and schedule() and reacquired afterwards. ``cmd`` a command which is invoked outside the critical section before sleep **Description** The process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up. wake_up() has to be called after changing any variable that could change the result of the wait condition. This is supposed to be called while holding the lock. The lock is dropped before invoking the cmd and going to sleep and is reacquired afterwards. The macro will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hje4h]”hŒ Parameters”…”�”}”(hjg4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MVhj_4ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hj„4h]”hŒwq_head”…”�”}”(hj†4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‚4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MUhj~4ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j™4h´MUhjš4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj~4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j™4h´MUhj{4ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hj½4h]”hŒ condition”…”�”}”(hj¿4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj»4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MVhj·4ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjÖ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÒ4h´MVhjÓ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj·4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÒ4h´MVhj{4ubj©)�”}”(hŒj``lock`` a locked spinlock_t, which will be released before cmd and schedule() and reacquired afterwards. ”h]”(j¯)�”}”(hŒ``lock``”h]”jS)�”}”(hjö4h]”hŒlock”…”�”}”(hjø4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjô4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MXhjð4ubjÉ)�”}”(hhh]”jM)�”}”(hŒ`a locked spinlock_t, which will be released before cmd and schedule() and reacquired afterwards.”h]”hŒ`a locked spinlock_t, which will be released before cmd and schedule() and reacquired afterwards.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MWhj 5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjð4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j 5h´MXhj{4ubj©)�”}”(hŒM``cmd`` a command which is invoked outside the critical section before sleep ”h]”(j¯)�”}”(hŒ``cmd``”h]”jS)�”}”(hj05h]”hŒcmd”…”�”}”(hj25h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj.5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MZhj*5ubjÉ)�”}”(hhh]”jM)�”}”(hŒDa command which is invoked outside the critical section before sleep”h]”hŒDa command which is invoked outside the critical section before sleep”…”�”}”(hjI5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MYhjF5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jE5h´MZhj{4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj_4ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjl5h]”hŒ Description”…”�”}”(hjn5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M\hj_4ubjM)�”}”(hŒÁThe process is put to sleep (TASK_INTERRUPTIBLE) until the **condition** evaluates to true or a signal is received. The **condition** is checked each time the waitqueue **wq_head** is woken up.”h]”(hŒ;The process is put to sleep (TASK_INTERRUPTIBLE) until the ”…”�”}”(hj‚5h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjŠ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚5ubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hj‚5h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjœ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚5ubhŒ$ is checked each time the waitqueue ”…”�”}”(hj‚5h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj®5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚5ubhŒ is woken up.”…”�”}”(hj‚5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M[hj_4ubjM)�”}”(hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”h]”hŒjwake_up() has to be called after changing any variable that could change the result of the wait condition.”…”�”}”(hjÇ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M_hj_4ubjM)�”}”(hŒ’This is supposed to be called while holding the lock. The lock is dropped before invoking the cmd and going to sleep and is reacquired afterwards.”h]”hŒ’This is supposed to be called while holding the lock. The lock is dropped before invoking the cmd and going to sleep and is reacquired afterwards.”…”�”}”(hjÖ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mbhj_4ubjM)�”}”(hŒnThe macro will return -ERESTARTSYS if it was interrupted by a signal and 0 if **condition** evaluated to true.”h]”(hŒNThe macro will return -ERESTARTSYS if it was interrupted by a signal and 0 if ”…”�”}”(hjå5h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjí5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjå5ubhŒ evaluated to true.”…”�”}”(hjå5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mfhj_4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+wait_event_interruptible_lock_irq (C macro)”Œ#c.wait_event_interruptible_lock_irq”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ!wait_event_interruptible_lock_irq”h]”hù)�”}”(hŒ!wait_event_interruptible_lock_irq”h]”hÿ)�”}”(hŒ!wait_event_interruptible_lock_irq”h]”j)�”}”(hj 6h]”hŒ!wait_event_interruptible_lock_irq”…”�”}”(hj*6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&6ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj"6h²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mtubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj6h²hh³j=6h´Mtubah}”(h]”j6ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j=6h´Mthj6h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj6h²hh³j=6h´Mtubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjV6jHjV6jI‰jJ‰jK‰uh1híh²hhj_h³Nh´NubjM)�”}”(hŒ@``wait_event_interruptible_lock_irq (wq_head, condition, lock)``”h]”jS)�”}”(hj\6h]”hŒhj|:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|:ubh)�”}”(hhh]”j)�”}”(hŒwait_queue_head”h]”hŒwait_queue_head”…”�”}”(hjž:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j :Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjf:sbŒ c.__wake_up”†”asbuh1hhj|:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|:ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÌ:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj|:ubj)�”}”(hŒwq_head”h]”hŒwq_head”…”�”}”(hjÙ:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjx:ubj:)�”}”(hŒunsigned int mode”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjò:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjî:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî:ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjî:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî:ubj)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj*;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjx:ubj:)�”}”(hŒint nr_exclusive”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjC;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj?;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?;ubj)�”}”(hŒ nr_exclusive”h]”hŒ nr_exclusive”…”�”}”(hj_;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjx:ubj:)�”}”(hŒ void *key”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjx;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjt;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjt;ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj”;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjt;ubj)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj¡;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjx:ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj?:h²hh³jQ:h´K…ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj;:h²hh³jQ:h´K…ubah}”(h]”j6:ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jQ:h´K…hj8:h²hubj4)�”}”(hhh]”jM)�”}”(hŒ'wake up threads blocked on a waitqueue.”h]”hŒ'wake up threads blocked on a waitqueue.”…”�”}”(hjË;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K…hjÈ;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj8:h²hh³jQ:h´K…ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjã;jHjã;jI‰jJ‰jK‰uh1híh²hhj_h³Nh´Nubj„)�”}”(hXŸ**Parameters** ``struct wait_queue_head *wq_head`` the waitqueue ``unsigned int mode`` which threads ``int nr_exclusive`` how many wake-one or wake-many threads to wake up ``void *key`` is directly passed to the wakeup function **Description** If this function wakes up a task, it executes a full memory barrier before accessing the task state. Returns the number of exclusive tasks that were awaken.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K‰hjç;ubj¤)�”}”(hhh]”(j©)�”}”(hŒ2``struct wait_queue_head *wq_head`` the waitqueue ”h]”(j¯)�”}”(hŒ#``struct wait_queue_head *wq_head``”h]”jS)�”}”(hj <h]”hŒstruct wait_queue_head *wq_head”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj <ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K†hj<ubjÉ)�”}”(hhh]”jM)�”}”(hŒ the waitqueue”h]”hŒ the waitqueue”…”�”}”(hj%<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``unsigned int mode`` which threads ”h]”(j¯)�”}”(hŒ``unsigned int mode``”h]”jS)�”}”(hjE<h]”hŒunsigned int mode”…”�”}”(hjG<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjC<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K‡hj?<ubjÉ)�”}”(hhh]”jM)�”}”(hŒ which threads”h]”hŒ which threads”…”�”}”(hj^<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jZ<h´K‡hj[<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj?<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jZ<h´K‡hj<ubj©)�”}”(hŒG``int nr_exclusive`` how many wake-one or wake-many threads to wake up ”h]”(j¯)�”}”(hŒ``int nr_exclusive``”h]”jS)�”}”(hj~<h]”hŒint nr_exclusive”…”�”}”(hj€<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj|<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´Kˆhjx<ubjÉ)�”}”(hhh]”jM)�”}”(hŒ1how many wake-one or wake-many threads to wake up”h]”hŒ1how many wake-one or wake-many threads to wake up”…”�”}”(hj—<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j“<h´Kˆhj”<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjx<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j“<h´Kˆhj<ubj©)�”}”(hŒ8``void *key`` is directly passed to the wakeup function ”h]”(j¯)�”}”(hŒ ``void *key``”h]”jS)�”}”(hj·<h]”hŒ void *key”…”�”}”(hj¹<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjµ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K‰hj±<ubjÉ)�”}”(hhh]”jM)�”}”(hŒ)is directly passed to the wakeup function”h]”hŒ)is directly passed to the wakeup function”…”�”}”(hjÐ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjç;ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K‹hjç;ubjM)�”}”(hŒ�If this function wakes up a task, it executes a full memory barrier before accessing the task state. Returns the number of exclusive tasks that were awaken.”h]”hŒ�If this function wakes up a task, it executes a full memory barrier before accessing the task state. Returns the number of exclusive tasks that were awaken.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´KŠhjç;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ__wake_up_sync_key (C function)”Œc.__wake_up_sync_key”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒWvoid __wake_up_sync_key (struct wait_queue_head *wq_head, unsigned int mode, void *key)”h]”hù)�”}”(hŒVvoid __wake_up_sync_key(struct wait_queue_head *wq_head, unsigned int mode, void *key)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj7=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj3=h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K«ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3=h²hh³jE=h´K«ubhÿ)�”}”(hŒ__wake_up_sync_key”h]”j)�”}”(hŒ__wake_up_sync_key”h]”hŒ__wake_up_sync_key”…”�”}”(hjX=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjT=ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj3=h²hh³jE=h´K«ubj4)�”}”(hŒ?(struct wait_queue_head *wq_head, unsigned int mode, void *key)”h]”(j:)�”}”(hŒstruct wait_queue_head *wq_head”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjt=h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjp=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjp=ubh)�”}”(hhh]”j)�”}”(hŒwait_queue_head”h]”hŒwait_queue_head”…”�”}”(hj’=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j”=Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjZ=sbŒc.__wake_up_sync_key”†”asbuh1hhjp=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjp=ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÀ=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjp=ubj)�”}”(hŒwq_head”h]”hŒwq_head”…”�”}”(hjÍ=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjl=ubj:)�”}”(hŒunsigned int mode”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjæ=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjâ=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâ=ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjâ=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâ=ubj)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjl=ubj:)�”}”(hŒ void *key”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj7>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj3>ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE>h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3>ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjS>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj3>ubj)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj`>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjl=ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj3=h²hh³jE=h´K«ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj/=h²hh³jE=h´K«ubah}”(h]”j*=ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jE=h´K«hj,=h²hubj4)�”}”(hhh]”jM)�”}”(hŒ'wake up threads blocked on a waitqueue.”h]”hŒ'wake up threads blocked on a waitqueue.”…”�”}”(hjŠ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K«hj‡>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj,=h²hh³jE=h´K«ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¢>jHj¢>jI‰jJ‰jK‰uh1híh²hhj_h³Nh´Nubj„)�”}”(hX©**Parameters** ``struct wait_queue_head *wq_head`` the waitqueue ``unsigned int mode`` which threads ``void *key`` opaque value to be passed to wakeup targets **Description** Passes WF_SYNC to waitqueue wake functions. The default wake function forwards it to the scheduler; see WF_SYNC for the hint's semantics. If this function wakes up a task, it executes a full memory barrier before accessing the task state.”h]”(jM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K¯hj¦>ubj¤)�”}”(hhh]”(j©)�”}”(hŒ2``struct wait_queue_head *wq_head`` the waitqueue ”h]”(j¯)�”}”(hŒ#``struct wait_queue_head *wq_head``”h]”jS)�”}”(hjË>h]”hŒstruct wait_queue_head *wq_head”…”�”}”(hjÍ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÉ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K¬hjÅ>ubjÉ)�”}”(hhh]”jM)�”}”(hŒ the waitqueue”h]”hŒ the waitqueue”…”�”}”(hjä>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``unsigned int mode`` which threads ”h]”(j¯)�”}”(hŒ``unsigned int mode``”h]”jS)�”}”(hj?h]”hŒunsigned int mode”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K­hjþ>ubjÉ)�”}”(hhh]”jM)�”}”(hŒ which threads”h]”hŒ which threads”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ:``void *key`` opaque value to be passed to wakeup targets ”h]”(j¯)�”}”(hŒ ``void *key``”h]”jS)�”}”(hj=?h]”hŒ void *key”…”�”}”(hj??h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K®hj7?ubjÉ)�”}”(hhh]”jM)�”}”(hŒ+opaque value to be passed to wakeup targets”h]”hŒ+opaque value to be passed to wakeup targets”…”�”}”(hjV?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jR?h´K®hjS?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj7?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jR?h´K®hjÂ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¦>ubjM)�”}”(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&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K°hj¦>ubjM)�”}”(hŒ‰Passes WF_SYNC to waitqueue wake functions. The default wake function forwards it to the scheduler; see WF_SYNC for the hint's semantics.”h]”hŒ‹Passes WF_SYNC to waitqueue wake functions. The default wake function forwards it to the scheduler; see WF_SYNC for the hint’s semantics.”…”�”}”(hjŽ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K¯hj¦>ubjM)�”}”(hŒdIf this function wakes up a task, it executes a full memory barrier before accessing the task state.”h]”hŒdIf this function wakes up a task, it executes a full memory barrier before accessing the task state.”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K²hj¦>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&__wake_up_locked_sync_key (C function)”Œc.__wake_up_locked_sync_key”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ^void __wake_up_locked_sync_key (struct wait_queue_head *wq_head, unsigned int mode, void *key)”h]”hù)�”}”(hŒ]void __wake_up_locked_sync_key(struct wait_queue_head *wq_head, unsigned int mode, void *key)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÈ?h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´KÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÈ?h²hh³jÚ?h´KÁubhÿ)�”}”(hŒ__wake_up_locked_sync_key”h]”j)�”}”(hŒ__wake_up_locked_sync_key”h]”hŒ__wake_up_locked_sync_key”…”�”}”(hjí?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé?ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÈ?h²hh³jÚ?h´KÁubj4)�”}”(hŒ?(struct wait_queue_head *wq_head, unsigned int mode, void *key)”h]”(j:)�”}”(hŒstruct wait_queue_head *wq_head”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj@ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj@ubh)�”}”(hhh]”j)�”}”(hŒwait_queue_head”h]”hŒwait_queue_head”…”�”}”(hj'@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j)@Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjï?sbŒc.__wake_up_locked_sync_key”†”asbuh1hhj@ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj@ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjU@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj@ubj)�”}”(hŒwq_head”h]”hŒwq_head”…”�”}”(hjb@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj@ubj:)�”}”(hŒunsigned int mode”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj{@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjw@ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjw@ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj—@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjw@ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjw@ubj)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj³@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjw@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj@ubj:)�”}”(hŒ void *key”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌ@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÈ@ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÈ@ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjè@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÈ@ubj)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjõ@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj@ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÈ?h²hh³jÚ?h´KÁubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÄ?h²hh³jÚ?h´KÁubah}”(h]”j¿?ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÚ?h´KÁhjÁ?h²hubj4)�”}”(hhh]”jM)�”}”(hŒ/wake up a thread blocked on a locked waitqueue.”h]”hŒ/wake up a thread blocked on a locked waitqueue.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´KÁhjAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÁ?h²hh³jÚ?h´KÁubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj7AjHj7AjI‰jJ‰jK‰uh1híh²hhj_h³Nh´Nubj„)�”}”(hŒÿ**Parameters** ``struct wait_queue_head *wq_head`` the waitqueue ``unsigned int mode`` which threads ``void *key`` opaque value to be passed to wakeup targets **Description** Same as __wake_up_sync_key(), but called with **wq_head->lock** held.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjAAh]”hŒ Parameters”…”�”}”(hjCAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´KÅhj;Aubj¤)�”}”(hhh]”(j©)�”}”(hŒ2``struct wait_queue_head *wq_head`` the waitqueue ”h]”(j¯)�”}”(hŒ#``struct wait_queue_head *wq_head``”h]”jS)�”}”(hj`Ah]”hŒstruct wait_queue_head *wq_head”…”�”}”(hjbAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj^Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´KÂhjZAubjÉ)�”}”(hhh]”jM)�”}”(hŒ the waitqueue”h]”hŒ the waitqueue”…”�”}”(hjyAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³juAh´KÂhjvAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjZAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³juAh´KÂhjWAubj©)�”}”(hŒ$``unsigned int mode`` which threads ”h]”(j¯)�”}”(hŒ``unsigned int mode``”h]”jS)�”}”(hj™Ah]”hŒunsigned int mode”…”�”}”(hj›Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj—Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´KÃhj“AubjÉ)�”}”(hhh]”jM)�”}”(hŒ which threads”h]”hŒ which threads”…”�”}”(hj²Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j®Ah´KÃhj¯Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj“Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j®Ah´KÃhjWAubj©)�”}”(hŒ:``void *key`` opaque value to be passed to wakeup targets ”h]”(j¯)�”}”(hŒ ``void *key``”h]”jS)�”}”(hjÒAh]”hŒ void *key”…”�”}”(hjÔAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÐAubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´KÄhjÌAubjÉ)�”}”(hhh]”jM)�”}”(hŒ+opaque value to be passed to wakeup targets”h]”hŒ+opaque value to be passed to wakeup targets”…”�”}”(hjëAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jçAh´KÄhjèAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÌAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jçAh´KÄhjWAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj;AubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj Bh]”hŒ Description”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´KÆhj;AubjM)�”}”(hŒESame as __wake_up_sync_key(), but called with **wq_head->lock** held.”h]”(hŒ.Same as __wake_up_sync_key(), but called with ”…”�”}”(hj#Bh²hh³Nh´NubjŽ)�”}”(hŒ**wq_head->lock**”h]”hŒ wq_head->lock”…”�”}”(hj+Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#BubhŒ held.”…”�”}”(hj#Bh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´KÅhj;Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒfinish_wait (C function)”Œ c.finish_wait”hNt”auh1hÜhj_h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒUvoid finish_wait (struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)”h]”hù)�”}”(hŒTvoid finish_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjdBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj`Bh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´McubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsBh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`Bh²hh³jrBh´Mcubhÿ)�”}”(hŒ finish_wait”h]”j)�”}”(hŒ finish_wait”h]”hŒ finish_wait”…”�”}”(hj…Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Bubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj`Bh²hh³jrBh´Mcubj4)�”}”(hŒD(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)”h]”(j:)�”}”(hŒstruct wait_queue_head *wq_head”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¡Bh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�BubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Bubh)�”}”(hhh]”j)�”}”(hŒwait_queue_head”h]”hŒwait_queue_head”…”�”}”(hj¿Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÁBŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‡BsbŒ c.finish_wait”†”asbuh1hhj�BubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßBh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Bubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjíBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�Bubj)�”}”(hŒwq_head”h]”hŒwq_head”…”�”}”(hjúBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj™Bubj:)�”}”(hŒ!struct wait_queue_entry *wq_entry”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCubh)�”}”(hhh]”j)�”}”(hŒwait_queue_entry”h]”hŒwait_queue_entry”…”�”}”(hj1Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j3CŒmodname”NŒ classname”Njwjz)�”}”j}]”jÛBŒ c.finish_wait”†”asbuh1hhjCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOCh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj]Ch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjCubj)�”}”(hŒwq_entry”h]”hŒwq_entry”…”�”}”(hjjCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj™Bubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj`Bh²hh³jrBh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj\Bh²hh³jrBh´Mcubah}”(h]”jWBah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jrBh´MchjYBh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!clean up after waiting in a queue”h]”hŒ!clean up after waiting in a queue”…”�”}”(hj”Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´Mchj‘Ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjYBh²hh³jrBh´Mcubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¬CjHj¬CjI‰jJ‰jK‰uh1híh²hhj_h³Nh´Nubj„)�”}”(hX**Parameters** ``struct wait_queue_head *wq_head`` waitqueue waited on ``struct wait_queue_entry *wq_entry`` wait descriptor **Description** Sets current thread back to running state and removes the wait descriptor from the given waitqueue if still queued.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj¶Ch]”hŒ Parameters”…”�”}”(hj¸Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´Mghj°Cubj¤)�”}”(hhh]”(j©)�”}”(hŒ8``struct wait_queue_head *wq_head`` waitqueue waited on ”h]”(j¯)�”}”(hŒ#``struct wait_queue_head *wq_head``”h]”jS)�”}”(hjÕCh]”hŒstruct wait_queue_head *wq_head”…”�”}”(hj×Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÓCubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´MdhjÏCubjÉ)�”}”(hhh]”jM)�”}”(hŒwaitqueue waited on”h]”hŒwaitqueue waited on”…”�”}”(hjîCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jêCh´MdhjëCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÏCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jêCh´MdhjÌCubj©)�”}”(hŒ6``struct wait_queue_entry *wq_entry`` wait descriptor ”h]”(j¯)�”}”(hŒ%``struct wait_queue_entry *wq_entry``”h]”jS)�”}”(hjDh]”hŒ!struct wait_queue_entry *wq_entry”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´MehjDubjÉ)�”}”(hhh]”jM)�”}”(hŒwait descriptor”h]”hŒwait descriptor”…”�”}”(hj'Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j#Dh´Mehj$Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j#Dh´MehjÌCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj°CubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjIDh]”hŒ Description”…”�”}”(hjKDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´Mghj°CubjM)�”}”(hŒsSets current thread back to running state and removes the wait descriptor from the given waitqueue if still queued.”h]”hŒsSets current thread back to running state and removes the wait descriptor from the given waitqueue if still queued.”…”�”}”(hj_Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´Mfhj°Cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj_h²hh³Nh´Nubeh}”(h]”Œwait-queues-and-wake-events”ah ]”h"]”Œwait queues and wake events”ah$]”h&]”uh1hµhh·h²hh³hÊh´K=ubh¶)�”}”(hhh]”(h»)�”}”(hŒInternal Functions”h]”hŒInternal Functions”…”�”}”(hj€Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj}Dh²hh³hÊh´KFubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_task_stopped (C function)”Œc.wait_task_stopped”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒOint wait_task_stopped (struct wait_opts *wo, int ptrace, struct task_struct *p)”h]”hù)�”}”(hŒNint wait_task_stopped(struct wait_opts *wo, int ptrace, struct task_struct *p)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj§Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj£Dh²hh³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M%ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj£Dh²hh³jµDh´M%ubhÿ)�”}”(hŒwait_task_stopped”h]”j)�”}”(hŒwait_task_stopped”h]”hŒwait_task_stopped”…”�”}”(hjÈDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄDubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj£Dh²hh³jµDh´M%ubj4)�”}”(hŒ9(struct wait_opts *wo, int ptrace, struct task_struct *p)”h]”(j:)�”}”(hŒstruct wait_opts *wo”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjäDh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjàDubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñDh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàDubh)�”}”(hhh]”j)�”}”(hŒ wait_opts”h]”hŒ wait_opts”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jEŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÊDsbŒc.wait_task_stopped”†”asbuh1hhjàDubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàDubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj0Eh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjàDubj)�”}”(hŒwo”h]”hŒwo”…”�”}”(hj=Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÜDubj:)�”}”(hŒ int ptrace”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjVEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjREubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdEh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjREubj)�”}”(hŒptrace”h]”hŒptrace”…”�”}”(hjrEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjREubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÜDubj:)�”}”(hŒstruct task_struct *p”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‹Eh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‡EubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡Eubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj©Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j«EŒmodname”NŒ classname”Njwjz)�”}”j}]”jEŒc.wait_task_stopped”†”asbuh1hhj‡EubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇEh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡Eubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÕEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‡Eubj)�”}”(hj h]”hŒp”…”�”}”(hjâEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÜDubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj£Dh²hh³jµDh´M%ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŸDh²hh³jµDh´M%ubah}”(h]”jšDah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jµDh´M%hjœDh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,Wait for ``TASK_STOPPED`` or ``TASK_TRACED``”h]”(hŒ Wait for ”…”�”}”(hj Fh²hh³Nh´NubjS)�”}”(hŒ``TASK_STOPPED``”h]”hŒ TASK_STOPPED”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj FubhŒ or ”…”�”}”(hj Fh²hh³Nh´NubjS)�”}”(hŒ``TASK_TRACED``”h]”hŒ TASK_TRACED”…”�”}”(hj%Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M%hjFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjœDh²hh³jµDh´M%ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjCFjHjCFjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX{**Parameters** ``struct wait_opts *wo`` wait options ``int ptrace`` is the wait for ptrace ``struct task_struct *p`` task to wait for **Description** Handle sys_wait4() work for ``p`` in state ``TASK_STOPPED`` or ``TASK_TRACED``. **Context** read_lock(:c:type:`tasklist_lock`), which is released if return value is non-zero. Also, grabs and releases **p->sighand->siglock**. **Return** 0 if wait condition didn't exist and search for other wait conditions should continue. Non-zero return, -errno on failure and **p**'s pid on success, implies that tasklist_lock is released and wait condition search should terminate.”•Jh]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjMFh]”hŒ Parameters”…”�”}”(hjOFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKFubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M)hjGFubj¤)�”}”(hhh]”(j©)�”}”(hŒ&``struct wait_opts *wo`` wait options ”h]”(j¯)�”}”(hŒ``struct wait_opts *wo``”h]”jS)�”}”(hjlFh]”hŒstruct wait_opts *wo”…”�”}”(hjnFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M&hjfFubjÉ)�”}”(hhh]”jM)�”}”(hŒ wait options”h]”hŒ wait options”…”�”}”(hj…Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�Fh´M&hj‚Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjfFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Fh´M&hjcFubj©)�”}”(hŒ&``int ptrace`` is the wait for ptrace ”h]”(j¯)�”}”(hŒ``int ptrace``”h]”jS)�”}”(hj¥Fh]”hŒ int ptrace”…”�”}”(hj§Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M'hjŸFubjÉ)�”}”(hhh]”jM)�”}”(hŒis the wait for ptrace”h]”hŒis the wait for ptrace”…”�”}”(hj¾Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jºFh´M'hj»Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŸFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jºFh´M'hjcFubj©)�”}”(hŒ+``struct task_struct *p`` task to wait for ”h]”(j¯)�”}”(hŒ``struct task_struct *p``”h]”jS)�”}”(hjÞFh]”hŒstruct task_struct *p”…”�”}”(hjàFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÜFubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M(hjØFubjÉ)�”}”(hhh]”jM)�”}”(hŒtask to wait for”h]”hŒtask to wait for”…”�”}”(hj÷Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jóFh´M(hjôFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjØFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jóFh´M(hjcFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjGFubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjGh]”hŒ Description”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M*hjGFubjM)�”}”(hŒOHandle sys_wait4() work for ``p`` in state ``TASK_STOPPED`` or ``TASK_TRACED``.”h]”(hŒHandle sys_wait4() work for ”…”�”}”(hj/Gh²hh³Nh´NubjS)�”}”(hŒ``p``”h]”hŒp”…”�”}”(hj7Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj/GubhŒ in state ”…”�”}”(hj/Gh²hh³Nh´NubjS)�”}”(hŒ``TASK_STOPPED``”h]”hŒ TASK_STOPPED”…”�”}”(hjIGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj/GubhŒ or ”…”�”}”(hj/Gh²hh³Nh´NubjS)�”}”(hŒ``TASK_TRACED``”h]”hŒ TASK_TRACED”…”�”}”(hj[Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj/GubhŒ.”…”�”}”(hj/Gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M)hjGFubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjvGh]”hŒContext”…”�”}”(hjxGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjtGubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M+hjGFubjM)�”}”(hŒ…read_lock(:c:type:`tasklist_lock`), which is released if return value is non-zero. Also, grabs and releases **p->sighand->siglock**.”h]”(hŒ read_lock(”…”�”}”(hjŒGh²hh³Nh´Nubh)�”}”(hŒ:c:type:`tasklist_lock`”h]”jS)�”}”(hj–Gh]”hŒ tasklist_lock”…”�”}”(hj˜Gh²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhj”Gubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jwj?€jB€Œ tasklist_lock”uh1hh³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M,hjŒGubhŒL), which is released if return value is non-zero. Also, grabs and releases ”…”�”}”(hjŒGh²hh³Nh´NubjŽ)�”}”(hŒ**p->sighand->siglock**”h]”hŒp->sighand->siglock”…”�”}”(hj¸Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŒGubhŒ.”…”�”}”(hjŒGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j³Gh´M,hjGFubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÒGh]”hŒReturn”…”�”}”(hjÔGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐGubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M/hjGFubjM)�”}”(hŒé0 if wait condition didn't exist and search for other wait conditions should continue. Non-zero return, -errno on failure and **p**'s pid on success, implies that tasklist_lock is released and wait condition search should terminate.”h]”(hŒ�0 if wait condition didn’t exist and search for other wait conditions should continue. Non-zero return, -errno on failure and ”…”�”}”(hjèGh²hh³Nh´NubjŽ)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hjðGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjèGubhŒg’s pid on success, implies that tasklist_lock is released and wait condition search should terminate.”…”�”}”(hjèGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M0hjGFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$task_set_jobctl_pending (C function)”Œc.task_set_jobctl_pending”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒKbool task_set_jobctl_pending (struct task_struct *task, unsigned long mask)”h]”hù)�”}”(hŒJbool task_set_jobctl_pending(struct task_struct *task, unsigned long mask)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj)Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj%Hh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´KöubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj%Hh²hh³j6Hh´Köubhÿ)�”}”(hŒtask_set_jobctl_pending”h]”j)�”}”(hŒtask_set_jobctl_pending”h]”hŒtask_set_jobctl_pending”…”�”}”(hjIHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEHubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj%Hh²hh³j6Hh´Köubj4)�”}”(hŒ.(struct task_struct *task, unsigned long mask)”h]”(j:)�”}”(hŒstruct task_struct *task”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjeHh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjaHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrHh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaHubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hjƒHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j…HŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjKHsbŒc.task_set_jobctl_pending”†”asbuh1hhjaHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£Hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaHubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj±Hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjaHubj)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj¾Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]Hubj:)�”}”(hŒunsigned long mask”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj×Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÓHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåHh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÓHubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjóHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÓHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÓHubj)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]Hubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj%Hh²hh³j6Hh´Köubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj!Hh²hh³j6Hh´Köubah}”(h]”jHah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j6Hh´KöhjHh²hubj4)�”}”(hhh]”jM)�”}”(hŒset jobctl pending bits”h]”hŒset jobctl pending bits”…”�”}”(hj9Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Köhj6Ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjHh²hh³j6Hh´Köubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjQIjHjQIjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXH**Parameters** ``struct task_struct *task`` target task ``unsigned long mask`` pending bits to set **Description** Clear **mask** from **task->jobctl**. **mask** must be subset of ``JOBCTL_PENDING_MASK`` | ``JOBCTL_STOP_CONSUME`` | ``JOBCTL_STOP_SIGMASK`` | ``JOBCTL_TRAPPING``. If stop signo is being set, the existing signo is cleared. If **task** is already being killed or exiting, this function becomes noop. **Context** Must be called with **task->sighand->siglock** held. **Return** ``true`` if **mask** is set, ``false`` if made noop because **task** was dying.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj[Ih]”hŒ Parameters”…”�”}”(hj]Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjYIubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´KúhjUIubj¤)�”}”(hhh]”(j©)�”}”(hŒ)``struct task_struct *task`` target task ”h]”(j¯)�”}”(hŒ``struct task_struct *task``”h]”jS)�”}”(hjzIh]”hŒstruct task_struct *task”…”�”}”(hj|Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjxIubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´K÷hjtIubjÉ)�”}”(hhh]”jM)�”}”(hŒ target task”h]”hŒ target task”…”�”}”(hj“Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�Ih´K÷hj�Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjtIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Ih´K÷hjqIubj©)�”}”(hŒ+``unsigned long mask`` pending bits to set ”h]”(j¯)�”}”(hŒ``unsigned long mask``”h]”jS)�”}”(hj³Ih]”hŒunsigned long mask”…”�”}”(hjµIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj±Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Køhj­IubjÉ)�”}”(hhh]”jM)�”}”(hŒpending bits to set”h]”hŒpending bits to set”…”�”}”(hjÌIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÈIh´KøhjÉIubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj­Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÈIh´KøhjqIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjUIubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjîIh]”hŒ Description”…”�”}”(hjðIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjìIubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´KúhjUIubjM)�”}”(hX-Clear **mask** from **task->jobctl**. **mask** must be subset of ``JOBCTL_PENDING_MASK`` | ``JOBCTL_STOP_CONSUME`` | ``JOBCTL_STOP_SIGMASK`` | ``JOBCTL_TRAPPING``. If stop signo is being set, the existing signo is cleared. If **task** is already being killed or exiting, this function becomes noop.”h]”(hŒClear ”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ from ”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ**task->jobctl**”h]”hŒ task->jobctl”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ. ”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hj0Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ must be subset of ”…”�”}”(hjJh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_PENDING_MASK``”h]”hŒJOBCTL_PENDING_MASK”…”�”}”(hjBJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJubhŒ | ”…”�”}”(hjJh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_STOP_CONSUME``”h]”hŒJOBCTL_STOP_CONSUME”…”�”}”(hjTJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJubhŒ | ”…”�”}”hjJsbjS)�”}”(hŒ``JOBCTL_STOP_SIGMASK``”h]”hŒJOBCTL_STOP_SIGMASK”…”�”}”(hjfJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJubhŒ | ”…”�”}”(hjJh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_TRAPPING``”h]”hŒJOBCTL_TRAPPING”…”�”}”(hjxJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJubhŒB. If stop signo is being set, the existing signo is cleared. If ”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hjŠJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ@ is already being killed or exiting, this function becomes noop.”…”�”}”(hjJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´KùhjUIubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hj¥Jh]”hŒContext”…”�”}”(hj§Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj£Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´KÿhjUIubjM)�”}”(hŒ4Must be called with **task->sighand->siglock** held.”h]”(hŒMust be called with ”…”�”}”(hj»Jh²hh³Nh´NubjŽ)�”}”(hŒ**task->sighand->siglock**”h]”hŒtask->sighand->siglock”…”�”}”(hjÃJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»JubhŒ held.”…”�”}”(hj»Jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjUIubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÞJh]”hŒReturn”…”�”}”(hjàJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜJubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjUIubjM)�”}”(hŒO``true`` if **mask** is set, ``false`` if made noop because **task** was dying.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjøJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjôJubhŒ if ”…”�”}”(hjôJh²hh³Nh´NubjŽ)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjôJubhŒ is set, ”…”�”}”(hjôJh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjôJubhŒ if made noop because ”…”�”}”(hjôJh²hh³Nh´NubjŽ)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hj.Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjôJubhŒ was dying.”…”�”}”(hjôJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjUIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'task_clear_jobctl_trapping (C function)”Œc.task_clear_jobctl_trapping”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:void task_clear_jobctl_trapping (struct task_struct *task)”h]”hù)�”}”(hŒ9void task_clear_jobctl_trapping(struct task_struct *task)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjgKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjcKh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvKh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcKh²hh³juKh´Mubhÿ)�”}”(hŒtask_clear_jobctl_trapping”h]”j)�”}”(hŒtask_clear_jobctl_trapping”h]”hŒtask_clear_jobctl_trapping”…”�”}”(hjˆKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„Kubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjcKh²hh³juKh´Mubj4)�”}”(hŒ(struct task_struct *task)”h]”j:)�”}”(hŒstruct task_struct *task”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¤Kh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj KubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Kubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hjÂKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿Kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÄKŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŠKsbŒc.task_clear_jobctl_trapping”†”asbuh1hhj KubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâKh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Kubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjðKh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj Kubj)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjýKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœKubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjcKh²hh³juKh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj_Kh²hh³juKh´Mubah}”(h]”jZKah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³juKh´Mhj\Kh²hubj4)�”}”(hhh]”jM)�”}”(hŒclear jobctl trapping bit”h]”hŒclear jobctl trapping bit”…”�”}”(hj'Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mhj$Lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj\Kh²hh³juKh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj?LjHj?LjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXr**Parameters** ``struct task_struct *task`` target task **Description** If JOBCTL_TRAPPING is set, a ptracer is waiting for us to enter TRACED. Clear it and wake up the ptracer. Note that we don't need any further locking. **task->siglock** guarantees that **task->parent** points to the ptracer. **Context** Must be called with **task->sighand->siglock** held.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjILh]”hŒ Parameters”…”�”}”(hjKLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGLubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjCLubj¤)�”}”(hhh]”j©)�”}”(hŒ)``struct task_struct *task`` target task ”h]”(j¯)�”}”(hŒ``struct task_struct *task``”h]”jS)�”}”(hjhLh]”hŒstruct task_struct *task”…”�”}”(hjjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjfLubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjbLubjÉ)�”}”(hhh]”jM)�”}”(hŒ target task”h]”hŒ target task”…”�”}”(hj�Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j}Lh´Mhj~Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjbLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j}Lh´Mhj_Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjCLubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj£Lh]”hŒ Description”…”�”}”(hj¥Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjCLubjM)�”}”(hŒâIf JOBCTL_TRAPPING is set, a ptracer is waiting for us to enter TRACED. Clear it and wake up the ptracer. Note that we don't need any further locking. **task->siglock** guarantees that **task->parent** points to the ptracer.”h]”(hŒ›If JOBCTL_TRAPPING is set, a ptracer is waiting for us to enter TRACED. Clear it and wake up the ptracer. Note that we don’t need any further locking. ”…”�”}”(hj¹Lh²hh³Nh´NubjŽ)�”}”(hŒ**task->siglock**”h]”hŒ task->siglock”…”�”}”(hjÁLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹LubhŒ guarantees that ”…”�”}”(hj¹Lh²hh³Nh´NubjŽ)�”}”(hŒ**task->parent**”h]”hŒ task->parent”…”�”}”(hjÓLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹LubhŒ points to the ptracer.”…”�”}”(hj¹Lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjCLubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjîLh]”hŒContext”…”�”}”(hjðLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjìLubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjCLubjM)�”}”(hŒ4Must be called with **task->sighand->siglock** held.”h]”(hŒMust be called with ”…”�”}”(hjMh²hh³Nh´NubjŽ)�”}”(hŒ**task->sighand->siglock**”h]”hŒtask->sighand->siglock”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMubhŒ held.”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjCLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&task_clear_jobctl_pending (C function)”Œc.task_clear_jobctl_pending”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒMvoid task_clear_jobctl_pending (struct task_struct *task, unsigned long mask)”h]”hù)�”}”(hŒLvoid task_clear_jobctl_pending(struct task_struct *task, unsigned long mask)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjEMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjAMh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTMh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjAMh²hh³jSMh´M,ubhÿ)�”}”(hŒtask_clear_jobctl_pending”h]”j)�”}”(hŒtask_clear_jobctl_pending”h]”hŒtask_clear_jobctl_pending”…”�”}”(hjfMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbMubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjAMh²hh³jSMh´M,ubj4)�”}”(hŒ.(struct task_struct *task, unsigned long mask)”h]”(j:)�”}”(hŒstruct task_struct *task”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‚Mh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj~MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~Mubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¢MŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjhMsbŒc.task_clear_jobctl_pending”†”asbuh1hhj~MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀMh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~Mubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÎMh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj~Mubj)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjÛMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjzMubj:)�”}”(hŒunsigned long mask”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjôMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjðMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjðMubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjðMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjðMubj)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj,Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjzMubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjAMh²hh³jSMh´M,ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj=Mh²hh³jSMh´M,ubah}”(h]”j8Mah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jSMh´M,hj:Mh²hubj4)�”}”(hhh]”jM)�”}”(hŒclear jobctl pending bits”h]”hŒclear jobctl pending bits”…”�”}”(hjVNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M,hjSNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj:Mh²hh³jSMh´M,ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjnNjHjnNjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXÙ**Parameters** ``struct task_struct *task`` target task ``unsigned long mask`` pending bits to clear **Description** Clear **mask** from **task->jobctl**. **mask** must be subset of ``JOBCTL_PENDING_MASK``. If ``JOBCTL_STOP_PENDING`` is being cleared, other STOP bits are cleared together. If clearing of **mask** leaves no stop or trap pending, this function calls task_clear_jobctl_trapping(). **Context** Must be called with **task->sighand->siglock** held.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjxNh]”hŒ Parameters”…”�”}”(hjzNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvNubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M0hjrNubj¤)�”}”(hhh]”(j©)�”}”(hŒ)``struct task_struct *task`` target task ”h]”(j¯)�”}”(hŒ``struct task_struct *task``”h]”jS)�”}”(hj—Nh]”hŒstruct task_struct *task”…”�”}”(hj™Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj•Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M-hj‘NubjÉ)�”}”(hhh]”jM)�”}”(hŒ target task”h]”hŒ target task”…”�”}”(hj°Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¬Nh´M-hj­Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‘Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¬Nh´M-hjŽNubj©)�”}”(hŒ-``unsigned long mask`` pending bits to clear ”h]”(j¯)�”}”(hŒ``unsigned long mask``”h]”jS)�”}”(hjÐNh]”hŒunsigned long mask”…”�”}”(hjÒNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÎNubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M.hjÊNubjÉ)�”}”(hhh]”jM)�”}”(hŒpending bits to clear”h]”hŒpending bits to clear”…”�”}”(hjéNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jåNh´M.hjæNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÊNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jåNh´M.hjŽNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjrNubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj Oh]”hŒ Description”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M0hjrNubjM)�”}”(hŒ®Clear **mask** from **task->jobctl**. **mask** must be subset of ``JOBCTL_PENDING_MASK``. If ``JOBCTL_STOP_PENDING`` is being cleared, other STOP bits are cleared together.”h]”(hŒClear ”…”�”}”(hj!Oh²hh³Nh´NubjŽ)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hj)Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!OubhŒ from ”…”�”}”(hj!Oh²hh³Nh´NubjŽ)�”}”(hŒ**task->jobctl**”h]”hŒ task->jobctl”…”�”}”(hj;Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!OubhŒ. ”…”�”}”(hj!Oh²hh³Nh´NubjŽ)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hjMOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!OubhŒ must be subset of ”…”�”}”(hj!Oh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_PENDING_MASK``”h]”hŒJOBCTL_PENDING_MASK”…”�”}”(hj_Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!OubhŒ. If ”…”�”}”(hj!Oh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_STOP_PENDING``”h]”hŒJOBCTL_STOP_PENDING”…”�”}”(hjqOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!OubhŒ8 is being cleared, other STOP bits are cleared together.”…”�”}”(hj!Oh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M/hjrNubjM)�”}”(hŒiIf clearing of **mask** leaves no stop or trap pending, this function calls task_clear_jobctl_trapping().”h]”(hŒIf clearing of ”…”�”}”(hjŠOh²hh³Nh´NubjŽ)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hj’Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŠOubhŒR leaves no stop or trap pending, this function calls task_clear_jobctl_trapping().”…”�”}”(hjŠOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M3hjrNubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hj­Oh]”hŒContext”…”�”}”(hj¯Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M6hjrNubjM)�”}”(hŒ4Must be called with **task->sighand->siglock** held.”h]”(hŒMust be called with ”…”�”}”(hjÃOh²hh³Nh´NubjŽ)�”}”(hŒ**task->sighand->siglock**”h]”hŒtask->sighand->siglock”…”�”}”(hjËOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÃOubhŒ held.”…”�”}”(hjÃOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M7hjrNubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(task_participate_group_stop (C function)”Œc.task_participate_group_stop”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;bool task_participate_group_stop (struct task_struct *task)”h]”hù)�”}”(hŒ:bool task_participate_group_stop(struct task_struct *task)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjPh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPh²hh³jPh´MHubhÿ)�”}”(hŒtask_participate_group_stop”h]”j)�”}”(hŒtask_participate_group_stop”h]”hŒtask_participate_group_stop”…”�”}”(hj$Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Pubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjPh²hh³jPh´MHubj4)�”}”(hŒ(struct task_struct *task)”h]”j:)�”}”(hŒstruct task_struct *task”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj@Ph²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjsighand->siglock** held. **Return** ``true`` if group stop completion should be notified to the parent, ``false`` otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjåPh]”hŒ Parameters”…”�”}”(hjçPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãPubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MLhjßPubj¤)�”}”(hhh]”j©)�”}”(hŒ@``struct task_struct *task`` task participating in a group stop ”h]”(j¯)�”}”(hŒ``struct task_struct *task``”h]”jS)�”}”(hjQh]”hŒstruct task_struct *task”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MIhjþPubjÉ)�”}”(hhh]”jM)�”}”(hŒ"task participating in a group stop”h]”hŒ"task participating in a group stop”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQh´MIhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjþPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQh´MIhjûPubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjßPubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj?Qh]”hŒ Description”…”�”}”(hjAQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MKhjßPubjM)�”}”(hX **task** has ``JOBCTL_STOP_PENDING`` set and is participating in a group stop. Group stop states are cleared and the group stop count is consumed if ``JOBCTL_STOP_CONSUME`` was set. If the consumption completes the group stop, the appropriate `SIGNAL_*` flags are set.”h]”(jŽ)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hjYQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjUQubhŒ has ”…”�”}”(hjUQh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_STOP_PENDING``”h]”hŒJOBCTL_STOP_PENDING”…”�”}”(hjkQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjUQubhŒq set and is participating in a group stop. Group stop states are cleared and the group stop count is consumed if ”…”�”}”(hjUQh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_STOP_CONSUME``”h]”hŒJOBCTL_STOP_CONSUME”…”�”}”(hj}Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjUQubhŒH was set. If the consumption completes the group stop, the appropriate ”…”�”}”(hjUQh²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ `SIGNAL_*`”h]”hŒSIGNAL_*”…”�”}”(hj‘Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�QhjUQubhŒ flags are set.”…”�”}”(hjUQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MJhjßPubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hj¬Qh]”hŒContext”…”�”}”(hj®Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªQubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MOhjßPubjM)�”}”(hŒ4Must be called with **task->sighand->siglock** held.”h]”(hŒMust be called with ”…”�”}”(hjÂQh²hh³Nh´NubjŽ)�”}”(hŒ**task->sighand->siglock**”h]”hŒtask->sighand->siglock”…”�”}”(hjÊQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂQubhŒ held.”…”�”}”(hjÂQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MPhjßPubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjåQh]”hŒReturn”…”�”}”(hjçQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãQubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MRhjßPubjM)�”}”(hŒX``true`` if group stop completion should be notified to the parent, ``false`` otherwise.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÿQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjûQubhŒ< if group stop completion should be notified to the parent, ”…”�”}”(hjûQh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjûQubhŒ otherwise.”…”�”}”(hjûQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MShjßPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒptrace_trap_notify (C function)”Œc.ptrace_trap_notify”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void ptrace_trap_notify (struct task_struct *t)”h]”hù)�”}”(hŒ.void ptrace_trap_notify(struct task_struct *t)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjFRh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MKubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYRh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjFRh²hh³jXRh´MKubhÿ)�”}”(hŒptrace_trap_notify”h]”j)�”}”(hŒptrace_trap_notify”h]”hŒptrace_trap_notify”…”�”}”(hjkRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgRubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjFRh²hh³jXRh´MKubj4)�”}”(hŒ(struct task_struct *t)”h]”j:)�”}”(hŒstruct task_struct *t”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‡Rh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjƒRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Rh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjƒRubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj¥Rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢Rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j§RŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjmRsbŒc.ptrace_trap_notify”†”asbuh1hhjƒRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅRh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjƒRubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÓRh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjƒRubj)�”}”(hŒt”h]”hŒt”…”�”}”(hjàRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjRubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjFRh²hh³jXRh´MKubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjBRh²hh³jXRh´MKubah}”(h]”j=Rah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jXRh´MKhj?Rh²hubj4)�”}”(hhh]”jM)�”}”(hŒschedule trap to notify ptracer”h]”hŒschedule trap to notify ptracer”…”�”}”(hj Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MKhjSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj?Rh²hh³jXRh´MKubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj"SjHj"SjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXn**Parameters** ``struct task_struct *t`` tracee wanting to notify tracer **Description** This function schedules sticky ptrace trap which is cleared on the next TRAP_STOP to notify ptracer of an event. **t** must have been seized by ptracer. If **t** is running, STOP trap will be taken. If trapped for STOP and ptracer is listening for events, tracee is woken up so that it can re-trap for the new event. If trapped otherwise, STOP trap will be eventually taken without returning to userland after the existing traps are finished by PTRACE_CONT. **Context** Must be called with **task->sighand->siglock** held.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj,Sh]”hŒ Parameters”…”�”}”(hj.Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*Subah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MOhj&Subj¤)�”}”(hhh]”j©)�”}”(hŒ:``struct task_struct *t`` tracee wanting to notify tracer ”h]”(j¯)�”}”(hŒ``struct task_struct *t``”h]”jS)�”}”(hjKSh]”hŒstruct task_struct *t”…”�”}”(hjMSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjISubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MLhjESubjÉ)�”}”(hhh]”jM)�”}”(hŒtracee wanting to notify tracer”h]”hŒtracee wanting to notify tracer”…”�”}”(hjdSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`Sh´MLhjaSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjESubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`Sh´MLhjBSubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj&SubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj†Sh]”hŒ Description”…”�”}”(hjˆSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„Subah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MNhj&SubjM)�”}”(hŒ™This function schedules sticky ptrace trap which is cleared on the next TRAP_STOP to notify ptracer of an event. **t** must have been seized by ptracer.”h]”(hŒrThis function schedules sticky ptrace trap which is cleared on the next TRAP_STOP to notify ptracer of an event. ”…”�”}”(hjœSh²hh³Nh´NubjŽ)�”}”(hŒ**t**”h]”hŒt”…”�”}”(hj¤Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœSubhŒ" must have been seized by ptracer.”…”�”}”(hjœSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MMhj&SubjM)�”}”(hX2If **t** is running, STOP trap will be taken. If trapped for STOP and ptracer is listening for events, tracee is woken up so that it can re-trap for the new event. If trapped otherwise, STOP trap will be eventually taken without returning to userland after the existing traps are finished by PTRACE_CONT.”h]”(hŒIf ”…”�”}”(hj½Sh²hh³Nh´NubjŽ)�”}”(hŒ**t**”h]”hŒt”…”�”}”(hjÅSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj½SubhX* is running, STOP trap will be taken. If trapped for STOP and ptracer is listening for events, tracee is woken up so that it can re-trap for the new event. If trapped otherwise, STOP trap will be eventually taken without returning to userland after the existing traps are finished by PTRACE_CONT.”…”�”}”(hj½Sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MQhj&SubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjàSh]”hŒContext”…”�”}”(hjâSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞSubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MWhj&SubjM)�”}”(hŒ4Must be called with **task->sighand->siglock** held.”h]”(hŒMust be called with ”…”�”}”(hjöSh²hh³Nh´NubjŽ)�”}”(hŒ**task->sighand->siglock**”h]”hŒtask->sighand->siglock”…”�”}”(hjþSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjöSubhŒ held.”…”�”}”(hjöSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MXhj&Subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒforce_sig_seccomp (C function)”Œc.force_sig_seccomp”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDint force_sig_seccomp (int syscall, int reason, bool force_coredump)”h]”hù)�”}”(hŒCint force_sig_seccomp(int syscall, int reason, bool force_coredump)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj7Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj3Th²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFTh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3Th²hh³jETh´M8ubhÿ)�”}”(hŒforce_sig_seccomp”h]”j)�”}”(hŒforce_sig_seccomp”h]”hŒforce_sig_seccomp”…”�”}”(hjXTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTTubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj3Th²hh³jETh´M8ubj4)�”}”(hŒ.(int syscall, int reason, bool force_coredump)”h]”(j:)�”}”(hŒ int syscall”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjtTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjpTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjpTubj)�”}”(hŒsyscall”h]”hŒsyscall”…”�”}”(hj�Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjpTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjlTubj:)�”}”(hŒ int reason”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj©Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¥TubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¥Tubj)�”}”(hŒreason”h]”hŒreason”…”�”}”(hjÅTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjlTubj:)�”}”(hŒbool force_coredump”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjÞTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÚTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëTh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚTubj)�”}”(hŒforce_coredump”h]”hŒforce_coredump”…”�”}”(hjùTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjlTubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj3Th²hh³jETh´M8ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj/Th²hh³jETh´M8ubah}”(h]”j*Tah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jETh´M8hj,Th²hubj4)�”}”(hhh]”jM)�”}”(hŒ6signals the task to allow in-process syscall emulation”h]”hŒ6signals the task to allow in-process syscall emulation”…”�”}”(hj#Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M8hj Uh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj,Th²hh³jETh´M8ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj;UjHj;UjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX!**Parameters** ``int syscall`` syscall number to send to userland ``int reason`` filter-supplied reason code to send to userland (via si_errno) ``bool force_coredump`` true to trigger a coredump **Description** Forces a SIGSYS with a code of SYS_SECCOMP and related sigsys info.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjEUh]”hŒ Parameters”…”�”}”(hjGUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCUubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M<hj?Uubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``int syscall`` syscall number to send to userland ”h]”(j¯)�”}”(hŒ``int syscall``”h]”jS)�”}”(hjdUh]”hŒ int syscall”…”�”}”(hjfUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbUubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M9hj^UubjÉ)�”}”(hhh]”jM)�”}”(hŒ"syscall number to send to userland”h]”hŒ"syscall number to send to userland”…”�”}”(hj}Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jyUh´M9hjzUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jyUh´M9hj[Uubj©)�”}”(hŒN``int reason`` filter-supplied reason code to send to userland (via si_errno) ”h]”(j¯)�”}”(hŒ``int reason``”h]”jS)�”}”(hj�Uh]”hŒ int reason”…”�”}”(hjŸUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj›Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M:hj—UubjÉ)�”}”(hhh]”jM)�”}”(hŒ>filter-supplied reason code to send to userland (via si_errno)”h]”hŒ>filter-supplied reason code to send to userland (via si_errno)”…”�”}”(hj¶Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j²Uh´M:hj³Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj—Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j²Uh´M:hj[Uubj©)�”}”(hŒ3``bool force_coredump`` true to trigger a coredump ”h]”(j¯)�”}”(hŒ``bool force_coredump``”h]”jS)�”}”(hjÖUh]”hŒbool force_coredump”…”�”}”(hjØUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔUubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M;hjÐUubjÉ)�”}”(hhh]”jM)�”}”(hŒtrue to trigger a coredump”h]”hŒtrue to trigger a coredump”…”�”}”(hjïUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jëUh´M;hjìUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÐUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jëUh´M;hj[Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj?UubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjVh]”hŒ Description”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M=hj?UubjM)�”}”(hŒCForces a SIGSYS with a code of SYS_SECCOMP and related sigsys info.”h]”hŒCForces a SIGSYS with a code of SYS_SECCOMP and related sigsys info.”…”�”}”(hj'Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M<hj?Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%do_notify_parent_cldstop (C function)”Œc.do_notify_parent_cldstop”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒRvoid do_notify_parent_cldstop (struct task_struct *tsk, bool for_ptracer, int why)”h]”hù)�”}”(hŒQvoid do_notify_parent_cldstop(struct task_struct *tsk, bool for_ptracer, int why)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjVVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjRVh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M) ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeVh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRVh²hh³jdVh´M) ubhÿ)�”}”(hŒdo_notify_parent_cldstop”h]”j)�”}”(hŒdo_notify_parent_cldstop”h]”hŒdo_notify_parent_cldstop”…”�”}”(hjwVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsVubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjRVh²hh³jdVh´M) ubj4)�”}”(hŒ4(struct task_struct *tsk, bool for_ptracer, int why)”h]”(j:)�”}”(hŒstruct task_struct *tsk”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj“Vh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�VubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Vubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj±Vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®Vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j³VŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjyVsbŒc.do_notify_parent_cldstop”†”asbuh1hhj�VubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑVh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Vubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjßVh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�Vubj)�”}”(hŒtsk”h]”hŒtsk”…”�”}”(hjìVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‹Vubj:)�”}”(hŒbool for_ptracer”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjWubj)�”}”(hŒ for_ptracer”h]”hŒ for_ptracer”…”�”}”(hj Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‹Vubj:)�”}”(hŒint why”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj9Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj5WubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5Wubj)�”}”(hŒwhy”h]”hŒwhy”…”�”}”(hjUWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‹Vubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjRVh²hh³jdVh´M) ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjNVh²hh³jdVh´M) ubah}”(h]”jIVah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jdVh´M) hjKVh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/notify parent of stopped/continued state change”h]”hŒ/notify parent of stopped/continued state change”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M) hj|Wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjKVh²hh³jdVh´M) ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj—WjHj—WjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXÿ**Parameters** ``struct task_struct *tsk`` task reporting the state change ``bool for_ptracer`` the notification is for ptracer ``int why`` CLD_{CONTINUED|STOPPED|TRAPPED} to report **Description** Notify **tsk**'s parent that the stopped/continued state has changed. If **for_ptracer** is ``false``, **tsk**'s group leader notifies to its real parent. If ``true``, **tsk** reports to **tsk->parent** which should be the ptracer. **Context** Must be called with tasklist_lock at least read locked.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj¡Wh]”hŒ Parameters”…”�”}”(hj£Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŸWubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M- hj›Wubj¤)�”}”(hhh]”(j©)�”}”(hŒ<``struct task_struct *tsk`` task reporting the state change ”h]”(j¯)�”}”(hŒ``struct task_struct *tsk``”h]”jS)�”}”(hjÀWh]”hŒstruct task_struct *tsk”…”�”}”(hjÂWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¾Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M* hjºWubjÉ)�”}”(hhh]”jM)�”}”(hŒtask reporting the state change”h]”hŒtask reporting the state change”…”�”}”(hjÙWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÕWh´M* hjÖWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjºWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÕWh´M* hj·Wubj©)�”}”(hŒ5``bool for_ptracer`` the notification is for ptracer ”h]”(j¯)�”}”(hŒ``bool for_ptracer``”h]”jS)�”}”(hjùWh]”hŒbool for_ptracer”…”�”}”(hjûWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj÷Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M+ hjóWubjÉ)�”}”(hhh]”jM)�”}”(hŒthe notification is for ptracer”h]”hŒthe notification is for ptracer”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jXh´M+ hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjóWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jXh´M+ hj·Wubj©)�”}”(hŒ6``int why`` CLD_{CONTINUED|STOPPED|TRAPPED} to report ”h]”(j¯)�”}”(hŒ ``int why``”h]”jS)�”}”(hj2Xh]”hŒint why”…”�”}”(hj4Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M, hj,XubjÉ)�”}”(hhh]”jM)�”}”(hŒ)CLD_{CONTINUED|STOPPED|TRAPPED} to report”h]”hŒ)CLD_{CONTINUED|STOPPED|TRAPPED} to report”…”�”}”(hjKXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jGXh´M, hjHXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jGXh´M, hj·Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj›WubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjmXh]”hŒ Description”…”�”}”(hjoXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkXubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M. hj›WubjM)�”}”(hŒèNotify **tsk**'s parent that the stopped/continued state has changed. If **for_ptracer** is ``false``, **tsk**'s group leader notifies to its real parent. If ``true``, **tsk** reports to **tsk->parent** which should be the ptracer.”h]”(hŒNotify ”…”�”}”(hjƒXh²hh³Nh´NubjŽ)�”}”(hŒ**tsk**”h]”hŒtsk”…”�”}”(hj‹Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒXubhŒ>’s parent that the stopped/continued state has changed. If ”…”�”}”(hjƒXh²hh³Nh´NubjŽ)�”}”(hŒ**for_ptracer**”h]”hŒ for_ptracer”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒXubhŒ is ”…”�”}”(hjƒXh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj¯Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒXubhŒ, ”…”�”}”(hjƒXh²hh³Nh´NubjŽ)�”}”(hŒ**tsk**”h]”hŒtsk”…”�”}”(hjÁXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒXubhŒ2’s group leader notifies to its real parent. If ”…”�”}”(hjƒXh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÓXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒXubhŒ, ”…”�”}”hjƒXsbjŽ)�”}”(hŒ**tsk**”h]”hŒtsk”…”�”}”(hjåXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒXubhŒ reports to ”…”�”}”(hjƒXh²hh³Nh´NubjŽ)�”}”(hŒ**tsk->parent**”h]”hŒ tsk->parent”…”�”}”(hj÷Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒXubhŒ which should be the ptracer.”…”�”}”(hjƒXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M- hj›WubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjYh]”hŒContext”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M1 hj›WubjM)�”}”(hŒ7Must be called with tasklist_lock at least read locked.”h]”hŒ7Must be called with tasklist_lock at least read locked.”…”�”}”(hj(Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M2 hj›Wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdo_signal_stop (C function)”Œc.do_signal_stop”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒbool do_signal_stop (int signr)”h]”hù)�”}”(hŒbool do_signal_stop(int signr)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjWYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjSYh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M/ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeYh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjSYh²hh³jdYh´M/ ubhÿ)�”}”(hŒdo_signal_stop”h]”j)�”}”(hŒdo_signal_stop”h]”hŒdo_signal_stop”…”�”}”(hjwYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsYubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjSYh²hh³jdYh´M/ ubj4)�”}”(hŒ (int signr)”h]”j:)�”}”(hŒ int signr”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj“Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�YubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Yubj)�”}”(hŒsignr”h]”hŒsignr”…”�”}”(hj¯Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‹Yubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjSYh²hh³jdYh´M/ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjOYh²hh³jdYh´M/ ubah}”(h]”jJYah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jdYh´M/ hjLYh²hubj4)�”}”(hhh]”jM)�”}”(hŒ4handle group stop for SIGSTOP and other stop signals”h]”hŒ4handle group stop for SIGSTOP and other stop signals”…”�”}”(hjÙYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M/ hjÖYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjLYh²hh³jdYh´M/ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjñYjHjñYjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX#**Parameters** ``int signr`` signr causing group stop if initiating **Description** If ``JOBCTL_STOP_PENDING`` is not set yet, initiate group stop with **signr** and participate in it. If already set, participate in the existing group stop. If participated in a group stop (and thus slept), ``true`` is returned with siglock released. If ptraced, this function doesn't handle stop itself. Instead, ``JOBCTL_TRAP_STOP`` is scheduled and ``false`` is returned with siglock untouched. The caller must ensure that INTERRUPT trap handling takes places afterwards. **Context** Must be called with **current->sighand->siglock** held, which is released on ``true`` return. **Return** ``false`` if group stop is already cancelled or ptrace trap is scheduled. ``true`` if participated in group stop.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjûYh]”hŒ Parameters”…”�”}”(hjýYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùYubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M3 hjõYubj¤)�”}”(hhh]”j©)�”}”(hŒ5``int signr`` signr causing group stop if initiating ”h]”(j¯)�”}”(hŒ ``int signr``”h]”jS)�”}”(hjZh]”hŒ int signr”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M0 hjZubjÉ)�”}”(hhh]”jM)�”}”(hŒ&signr causing group stop if initiating”h]”hŒ&signr causing group stop if initiating”…”�”}”(hj3Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j/Zh´M0 hj0Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j/Zh´M0 hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjõYubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjUZh]”hŒ Description”…”�”}”(hjWZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSZubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M2 hjõYubjM)�”}”(hŒüIf ``JOBCTL_STOP_PENDING`` is not set yet, initiate group stop with **signr** and participate in it. If already set, participate in the existing group stop. If participated in a group stop (and thus slept), ``true`` is returned with siglock released.”h]”(hŒIf ”…”�”}”(hjkZh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_STOP_PENDING``”h]”hŒJOBCTL_STOP_PENDING”…”�”}”(hjsZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjkZubhŒ* is not set yet, initiate group stop with ”…”�”}”(hjkZh²hh³Nh´NubjŽ)�”}”(hŒ **signr**”h]”hŒsignr”…”�”}”(hj…Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkZubhŒ„ and participate in it. If already set, participate in the existing group stop. If participated in a group stop (and thus slept), ”…”�”}”(hjkZh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj—Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjkZubhŒ# is returned with siglock released.”…”�”}”(hjkZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M1 hjõYubjM)�”}”(hŒáIf ptraced, this function doesn't handle stop itself. Instead, ``JOBCTL_TRAP_STOP`` is scheduled and ``false`` is returned with siglock untouched. The caller must ensure that INTERRUPT trap handling takes places afterwards.”h]”(hŒBIf ptraced, this function doesn’t handle stop itself. Instead, ”…”�”}”(hj°Zh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_TRAP_STOP``”h]”hŒJOBCTL_TRAP_STOP”…”�”}”(hj¸Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°ZubhŒ is scheduled and ”…”�”}”(hj°Zh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjÊZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°ZubhŒr is returned with siglock untouched. The caller must ensure that INTERRUPT trap handling takes places afterwards.”…”�”}”(hj°Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M6 hjõYubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjåZh]”hŒContext”…”�”}”(hjçZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãZubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M; hjõYubjM)�”}”(hŒ]Must be called with **current->sighand->siglock** held, which is released on ``true`` return.”h]”(hŒMust be called with ”…”�”}”(hjûZh²hh³Nh´NubjŽ)�”}”(hŒ**current->sighand->siglock**”h]”hŒcurrent->sighand->siglock”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûZubhŒ held, which is released on ”…”�”}”(hjûZh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjûZubhŒ return.”…”�”}”(hjûZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M< hjõYubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj0[h]”hŒReturn”…”�”}”(hj2[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M? hjõYubjM)�”}”(hŒq``false`` if group stop is already cancelled or ptrace trap is scheduled. ``true`` if participated in group stop.”•h]”(jS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjJ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjF[ubhŒA if group stop is already cancelled or ptrace trap is scheduled. ”…”�”}”(hjF[h²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj\[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjF[ubhŒ if participated in group stop.”…”�”}”(hjF[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M@ hjõYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdo_jobctl_trap (C function)”Œc.do_jobctl_trap”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid do_jobctl_trap (void)”h]”hù)�”}”(hŒvoid do_jobctl_trap(void)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj•[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‘[h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¬ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤[h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‘[h²hh³j£[h´M¬ ubhÿ)�”}”(hŒdo_jobctl_trap”h]”j)�”}”(hŒdo_jobctl_trap”h]”hŒdo_jobctl_trap”…”�”}”(hj¶[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²[ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‘[h²hh³j£[h´M¬ ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÒ[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÎ[ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÊ[ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‘[h²hh³j£[h´M¬ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�[h²hh³j£[h´M¬ ubah}”(h]”jˆ[ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j£[h´M¬ hjŠ[h²hubj4)�”}”(hhh]”jM)�”}”(hŒ take care of ptrace jobctl traps”h]”hŒ take care of ptrace jobctl traps”…”�”}”(hjü[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¬ hjù[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŠ[h²hh³j£[h´M¬ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj\jHj\jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX'**Parameters** ``void`` no arguments **Description** When PT_SEIZED, it's used for both group stop and explicit SEIZE/INTERRUPT traps. Both generate PTRACE_EVENT_STOP trap with accompanying siginfo. If stopped, lower eight bits of exit_code contain the stop signal; otherwise, ``SIGTRAP``. When !PT_SEIZED, it's used only for group stop trap with stop signal number as exit_code and no siginfo. **Context** Must be called with **current->sighand->siglock** held, which may be released and re-acquired before returning with intervening sleep.”h]”(jM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M° hj\ubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj=\h]”hŒvoid”…”�”}”(hj?\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Khj7\ubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjV\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jR\h´KhjS\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj7\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jR\h´Khj4\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj\ubjM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Khj\ubjM)�”}”(hŒîWhen PT_SEIZED, it's used for both group stop and explicit SEIZE/INTERRUPT traps. Both generate PTRACE_EVENT_STOP trap with accompanying siginfo. If stopped, lower eight bits of exit_code contain the stop signal; otherwise, ``SIGTRAP``.”h]”(hŒäWhen PT_SEIZED, it’s used for both group stop and explicit SEIZE/INTERRUPT traps. Both generate PTRACE_EVENT_STOP trap with accompanying siginfo. If stopped, lower eight bits of exit_code contain the stop signal; otherwise, ”…”�”}”(hjŽ\h²hh³Nh´NubjS)�”}”(hŒ ``SIGTRAP``”h]”hŒSIGTRAP”…”�”}”(hj–\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŽ\ubhŒ.”…”�”}”(hjŽ\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M­ hj\ubjM)�”}”(hŒhWhen !PT_SEIZED, it's used only for group stop trap with stop signal number as exit_code and no siginfo.”h]”hŒjWhen !PT_SEIZED, it’s used only for group stop trap with stop signal number as exit_code and no siginfo.”…”�”}”(hj¯\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M² hj\ubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjÀ\h]”hŒContext”…”�”}”(hjÂ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¾\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mµ hj\ubjM)�”}”(hŒ†Must be called with **current->sighand->siglock** held, which may be released and re-acquired before returning with intervening sleep.”h]”(hŒMust be called with ”…”�”}”(hjÖ\h²hh³Nh´NubjŽ)�”}”(hŒ**current->sighand->siglock**”h]”hŒcurrent->sighand->siglock”…”�”}”(hjÞ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ\ubhŒU held, which may be released and re-acquired before returning with intervening sleep.”…”�”}”(hjÖ\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¶ hj\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdo_freezer_trap (C function)”Œc.do_freezer_trap”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid do_freezer_trap (void)”h]”hù)�”}”(hŒvoid do_freezer_trap(void)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj]h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÍ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj]h²hh³j%]h´MÍ ubhÿ)�”}”(hŒdo_freezer_trap”h]”j)�”}”(hŒdo_freezer_trap”h]”hŒdo_freezer_trap”…”�”}”(hj8]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4]ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj]h²hh³j%]h´MÍ ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjT]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjP]ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjL]ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj]h²hh³j%]h´MÍ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj]h²hh³j%]h´MÍ ubah}”(h]”j ]ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j%]h´MÍ hj ]h²hubj4)�”}”(hhh]”jM)�”}”(hŒhandle the freezer jobctl trap”h]”hŒhandle the freezer jobctl trap”…”�”}”(hj~]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÍ hj{]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj ]h²hh³j%]h´MÍ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj–]jHj–]jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX**Parameters** ``void`` no arguments **Description** Puts the task into frozen state, if only the task is not about to quit. In this case it drops JOBCTL_TRAP_FREEZE. **Context** Must be called with **current->sighand->siglock** held, which is always released before returning.”h]”(jM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÑ hjš]ubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj¿]h]”hŒvoid”…”�”}”(hjÁ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj½]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Khj¹]ubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjØ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÔ]h´KhjÕ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¹]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÔ]h´Khj¶]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjš]ubjM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Khjš]ubjM)�”}”(hŒqPuts the task into frozen state, if only the task is not about to quit. In this case it drops JOBCTL_TRAP_FREEZE.”h]”hŒqPuts the task into frozen state, if only the task is not about to quit. In this case it drops JOBCTL_TRAP_FREEZE.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÎ hjš]ubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hj!^h]”hŒContext”…”�”}”(hj#^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÑ hjš]ubjM)�”}”(hŒbMust be called with **current->sighand->siglock** held, which is always released before returning.”h]”(hŒMust be called with ”…”�”}”(hj7^h²hh³Nh´NubjŽ)�”}”(hŒ**current->sighand->siglock**”h]”hŒcurrent->sighand->siglock”…”�”}”(hj?^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7^ubhŒ1 held, which is always released before returning.”…”�”}”(hj7^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÒ hjš]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsignal_delivered (C function)”Œc.signal_delivered”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:void signal_delivered (struct ksignal *ksig, int stepping)”h]”hù)�”}”(hŒ9void signal_delivered(struct ksignal *ksig, int stepping)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjx^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjt^h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M7 ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjt^h²hh³j†^h´M7 ubhÿ)�”}”(hŒsignal_delivered”h]”j)�”}”(hŒsignal_delivered”h]”hŒsignal_delivered”…”�”}”(hj™^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•^ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjt^h²hh³j†^h´M7 ubj4)�”}”(hŒ$(struct ksignal *ksig, int stepping)”h]”(j:)�”}”(hŒstruct ksignal *ksig”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjµ^h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj±^ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±^ubh)�”}”(hhh]”j)�”}”(hŒksignal”h]”hŒksignal”…”�”}”(hjÓ^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐ^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÕ^Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj›^sbŒc.signal_delivered”†”asbuh1hhj±^ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±^ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj±^ubj)�”}”(hŒksig”h]”hŒksig”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj­^ubj:)�”}”(hŒ int stepping”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj'_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj#_ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#_ubj)�”}”(hŒstepping”h]”hŒstepping”…”�”}”(hjC_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj­^ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjt^h²hh³j†^h´M7 ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjp^h²hh³j†^h´M7 ubah}”(h]”jk^ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j†^h´M7 hjm^h²hubj4)�”}”(hhh]”jM)�”}”(hŒ6called after signal delivery to update blocked signals”h]”hŒ6called after signal delivery to update blocked signals”…”�”}”(hjm_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M7 hjj_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjm^h²hh³j†^h´M7 ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj…_jHj…_jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX±**Parameters** ``struct ksignal *ksig`` kernel signal struct ``int stepping`` nonzero if debugger single-step or block-step in use **Description** This function should be called when a signal has successfully been delivered. It updates the blocked signals accordingly (**ksig->ka.sa.sa_mask** is always blocked), and the signal itself is blocked unless ``SA_NODEFER`` is set in **ksig->ka.sa.sa_flags**. Tracing is notified.”h]”(jM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M; hj‰_ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``struct ksignal *ksig`` kernel signal struct ”h]”(j¯)�”}”(hŒ``struct ksignal *ksig``”h]”jS)�”}”(hj®_h]”hŒstruct ksignal *ksig”…”�”}”(hj°_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¬_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M8 hj¨_ubjÉ)�”}”(hhh]”jM)�”}”(hŒkernel signal struct”h]”hŒkernel signal struct”…”�”}”(hjÇ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÃ_h´M8 hjÄ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¨_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÃ_h´M8 hj¥_ubj©)�”}”(hŒF``int stepping`` nonzero if debugger single-step or block-step in use ”h]”(j¯)�”}”(hŒ``int stepping``”h]”jS)�”}”(hjç_h]”hŒ int stepping”…”�”}”(hjé_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjå_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M9 hjá_ubjÉ)�”}”(hhh]”jM)�”}”(hŒ4nonzero if debugger single-step or block-step in use”h]”hŒ4nonzero if debugger single-step or block-step in use”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jü_h´M9 hjý_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjá_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jü_h´M9 hj¥_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‰_ubjM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M; hj‰_ubjM)�”}”(hXThis function should be called when a signal has successfully been delivered. It updates the blocked signals accordingly (**ksig->ka.sa.sa_mask** is always blocked), and the signal itself is blocked unless ``SA_NODEFER`` is set in **ksig->ka.sa.sa_flags**. Tracing is notified.”h]”(hŒzThis function should be called when a signal has successfully been delivered. It updates the blocked signals accordingly (”…”�”}”(hj8`h²hh³Nh´NubjŽ)�”}”(hŒ**ksig->ka.sa.sa_mask**”h]”hŒksig->ka.sa.sa_mask”…”�”}”(hj@`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8`ubhŒ= is always blocked), and the signal itself is blocked unless ”…”�”}”(hj8`h²hh³Nh´NubjS)�”}”(hŒ``SA_NODEFER``”h]”hŒ SA_NODEFER”…”�”}”(hjR`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8`ubhŒ is set in ”…”�”}”(hj8`h²hh³Nh´NubjŽ)�”}”(hŒ**ksig->ka.sa.sa_flags**”h]”hŒksig->ka.sa.sa_flags”…”�”}”(hjd`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8`ubhŒ. Tracing is notified.”…”�”}”(hj8`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M: hj‰_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ sys_restart_syscall (C function)”Œc.sys_restart_syscall”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒlong sys_restart_syscall (void)”h]”hù)�”}”(hŒlong sys_restart_syscall(void)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj�`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj™`h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M° ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™`h²hh³j«`h´M° ubhÿ)�”}”(hŒsys_restart_syscall”h]”j)�”}”(hŒsys_restart_syscall”h]”hŒsys_restart_syscall”…”�”}”(hj¾`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjº`ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj™`h²hh³j«`h´M° ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÚ`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÖ`ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÒ`ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj™`h²hh³j«`h´M° ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj•`h²hh³j«`h´M° ubah}”(h]”j�`ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j«`h´M° hj’`h²hubj4)�”}”(hhh]”jM)�”}”(hŒrestart a system call”h]”hŒrestart a system call”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M° hjah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj’`h²hh³j«`h´M° ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjajHjajI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj&ah]”hŒ Parameters”…”�”}”(hj(ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M´ hj aubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hjEah]”hŒvoid”…”�”}”(hjGah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjCaubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¶ hj?aubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj^ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Khj[aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj?aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jZah´M¶ hjblocked mask”h]”hŒchange current->blocked mask”…”�”}”(hjDbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÔ hjAbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj”ah²hh³j­ah´MÔ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj\bjHj\bjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒÎ**Parameters** ``sigset_t *newset`` new mask **Description** It is wrong to change ->blocked directly, this helper should be used to ensure the process can't miss a shared signal we are going to block.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjfbh]”hŒ Parameters”…”�”}”(hjhbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdbubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MØ hj`bubj¤)�”}”(hhh]”j©)�”}”(hŒ``sigset_t *newset`` new mask ”h]”(j¯)�”}”(hŒ``sigset_t *newset``”h]”jS)�”}”(hj…bh]”hŒsigset_t *newset”…”�”}”(hj‡bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒbubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÕ hjbubjÉ)�”}”(hhh]”jM)�”}”(hŒnew mask”h]”hŒnew mask”…”�”}”(hjžbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jšbh´MÕ hj›bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jšbh´MÕ hj|bubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj`bubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÀbh]”hŒ Description”…”�”}”(hjÂbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¾bubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M× hj`bubjM)�”}”(hŒŒIt is wrong to change ->blocked directly, this helper should be used to ensure the process can't miss a shared signal we are going to block.”h]”hŒŽIt is wrong to change ->blocked directly, this helper should be used to ensure the process can’t miss a shared signal we are going to block.”…”�”}”(hjÖbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÖ hj`bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsys_rt_sigprocmask (C function)”Œc.sys_rt_sigprocmask”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdlong sys_rt_sigprocmask (int how, sigset_t __user * nset, sigset_t __user * oset, size_t sigsetsize)”h]”hù)�”}”(hŒalong sys_rt_sigprocmask(int how, sigset_t __user *nset, sigset_t __user *oset, size_t sigsetsize)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjch²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´ME ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjch²hh³jch´ME ubhÿ)�”}”(hŒsys_rt_sigprocmask”h]”j)�”}”(hŒsys_rt_sigprocmask”h]”hŒsys_rt_sigprocmask”…”�”}”(hj&ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"cubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjch²hh³jch´ME ubj4)�”}”(hŒJ(int how, sigset_t __user *nset, sigset_t __user *oset, size_t sigsetsize)”h]”(j:)�”}”(hŒint how”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjBch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj>cubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>cubj)�”}”(hŒhow”h]”hŒhow”…”�”}”(hj^ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:cubj:)�”}”(hŒsigset_t __user *nset”h]”(h)�”}”(hhh]”j)�”}”(hŒsigset_t”h]”hŒsigset_t”…”�”}”(hjzch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j|cŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj(csbŒc.sys_rt_sigprocmask”†”asbuh1hhjscubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjscubhŒ__user”…”�”}”(hjsch²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬ch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjscubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjºch²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjscubj)�”}”(hŒnset”h]”hŒnset”…”�”}”(hjÇch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjscubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:cubj:)�”}”(hŒsigset_t __user *oset”h]”(h)�”}”(hhh]”j)�”}”(hŒsigset_t”h]”hŒsigset_t”…”�”}”(hjãch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jåcŒmodname”NŒ classname”Njwjz)�”}”j}]”j–cŒc.sys_rt_sigprocmask”†”asbuh1hhjÜcubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜcubhŒ__user”…”�”}”(hjÜch²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜcubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj!dh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÜcubj)�”}”(hŒoset”h]”hŒoset”…”�”}”(hj.dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:cubj:)�”}”(hŒsize_t sigsetsize”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjJdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jLdŒmodname”NŒ classname”Njwjz)�”}”j}]”j–cŒc.sys_rt_sigprocmask”†”asbuh1hhjCdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCdubj)�”}”(hŒ sigsetsize”h]”hŒ sigsetsize”…”�”}”(hjvdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:cubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjch²hh³jch´ME ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjýbh²hh³jch´ME ubah}”(h]”jøbah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jch´ME hjúbh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,change the list of currently blocked signals”h]”hŒ,change the list of currently blocked signals”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´ME hj�dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjúbh²hh³jch´ME ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¸djHj¸djI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒð**Parameters** ``int how`` whether to add, remove, or set signals ``sigset_t __user * nset`` stores pending signals ``sigset_t __user * oset`` previous value of signal mask if non-null ``size_t sigsetsize`` size of sigset_t type”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÂdh]”hŒ Parameters”…”�”}”(hjÄdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀdubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MI hj¼dubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``int how`` whether to add, remove, or set signals ”h]”(j¯)�”}”(hŒ ``int how``”h]”jS)�”}”(hjádh]”hŒint how”…”�”}”(hjãdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjßdubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MF hjÛdubjÉ)�”}”(hhh]”jM)�”}”(hŒ&whether to add, remove, or set signals”h]”hŒ&whether to add, remove, or set signals”…”�”}”(hjúdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jödh´MF hj÷dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÛdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jödh´MF hjØdubj©)�”}”(hŒ2``sigset_t __user * nset`` stores pending signals ”h]”(j¯)�”}”(hŒ``sigset_t __user * nset``”h]”jS)�”}”(hjeh]”hŒsigset_t __user * nset”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MG hjeubjÉ)�”}”(hhh]”jM)�”}”(hŒstores pending signals”h]”hŒstores pending signals”…”�”}”(hj3eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j/eh´MG hj0eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j/eh´MG hjØdubj©)�”}”(hŒE``sigset_t __user * oset`` previous value of signal mask if non-null ”h]”(j¯)�”}”(hŒ``sigset_t __user * oset``”h]”jS)�”}”(hjSeh]”hŒsigset_t __user * oset”…”�”}”(hjUeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjQeubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MH hjMeubjÉ)�”}”(hhh]”jM)�”}”(hŒ)previous value of signal mask if non-null”h]”hŒ)previous value of signal mask if non-null”…”�”}”(hjleh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jheh´MH hjieubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjMeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jheh´MH hjØdubj©)�”}”(hŒ+``size_t sigsetsize`` size of sigset_t type”h]”(j¯)�”}”(hŒ``size_t sigsetsize``”h]”jS)�”}”(hjŒeh]”hŒsize_t sigsetsize”…”�”}”(hjŽeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŠeubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MJ hj†eubjÉ)�”}”(hhh]”jM)�”}”(hŒsize of sigset_t type”h]”hŒsize of sigset_t type”…”�”}”(hj¥eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MI hj¢eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj†eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¡eh´MJ hjØdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¼dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsys_rt_sigpending (C function)”Œc.sys_rt_sigpending”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBlong sys_rt_sigpending (sigset_t __user * uset, size_t sigsetsize)”h]”hù)�”}”(hŒ@long sys_rt_sigpending(sigset_t __user *uset, size_t sigsetsize)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjæeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjâeh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MŽ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõeh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâeh²hh³jôeh´MŽ ubhÿ)�”}”(hŒsys_rt_sigpending”h]”j)�”}”(hŒsys_rt_sigpending”h]”hŒsys_rt_sigpending”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjâeh²hh³jôeh´MŽ ubj4)�”}”(hŒ*(sigset_t __user *uset, size_t sigsetsize)”h]”(j:)�”}”(hŒsigset_t __user *uset”h]”(h)�”}”(hhh]”j)�”}”(hŒsigset_t”h]”hŒsigset_t”…”�”}”(hj&fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j(fŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj fsbŒc.sys_rt_sigpending”†”asbuh1hhjfubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFfh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfubhŒ__user”…”�”}”(hjfh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXfh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjffh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjfubj)�”}”(hŒuset”h]”hŒuset”…”�”}”(hjsfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjfubj:)�”}”(hŒsize_t sigsetsize”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‘fŒmodname”NŒ classname”Njwjz)�”}”j}]”jBfŒc.sys_rt_sigpending”†”asbuh1hhjˆfubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­fh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjˆfubj)�”}”(hŒ sigsetsize”h]”hŒ sigsetsize”…”�”}”(hj»fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjfubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjâeh²hh³jôeh´MŽ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÞeh²hh³jôeh´MŽ ubah}”(h]”jÙeah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jôeh´MŽ hjÛeh²hubj4)�”}”(hhh]”jM)�”}”(hŒ;examine a pending signal that has been raised while blocked”h]”hŒ;examine a pending signal that has been raised while blocked”…”�”}”(hjåfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MŽ hjâfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÛeh²hh³jôeh´MŽ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjýfjHjýfjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒ|**Parameters** ``sigset_t __user * uset`` stores pending signals ``size_t sigsetsize`` size of sigset_t type or larger”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjgh]”hŒ Parameters”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M’ hjgubj¤)�”}”(hhh]”(j©)�”}”(hŒ2``sigset_t __user * uset`` stores pending signals ”h]”(j¯)�”}”(hŒ``sigset_t __user * uset``”h]”jS)�”}”(hj&gh]”hŒsigset_t __user * uset”…”�”}”(hj(gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj$gubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M� hj gubjÉ)�”}”(hhh]”jM)�”}”(hŒstores pending signals”h]”hŒstores pending signals”…”�”}”(hj?gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j;gh´M� hj(struct compat_siginfo *to, const struct kernel_siginfo *from)”h]”(j:)�”}”(hŒstruct compat_siginfo *to”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjögh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjògubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjògubh)�”}”(hhh]”j)�”}”(hŒcompat_siginfo”h]”hŒcompat_siginfo”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jhŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÜgsbŒc.copy_siginfo_to_external32”†”asbuh1hhjògubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjògubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjBhh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjògubj)�”}”(hŒto”h]”hŒto”…”�”}”(hjOhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjògubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîgubj:)�”}”(hŒ!const struct kernel_siginfo *from”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjhhh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjdhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdhubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjƒhh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjdhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdhubh)�”}”(hhh]”j)�”}”(hŒkernel_siginfo”h]”hŒkernel_siginfo”…”�”}”(hj¡hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j£hŒmodname”NŒ classname”Njwjz)�”}”j}]”j0hŒc.copy_siginfo_to_external32”†”asbuh1hhjdhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdhubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÍhh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjdhubj)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hjÚhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîgubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjµgh²hh³jÇgh´M4ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj±gh²hh³jÇgh´M4ubah}”(h]”j¬gah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÇgh´M4hj®gh²hubj4)�”}”(hhh]”jM)�”}”(hŒ0copy a kernel siginfo into a compat user siginfo”h]”hŒ0copy a kernel siginfo into a compat user siginfo”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M4hjih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj®gh²hh³jÇgh´M4ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjijHjijI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX³**Parameters** ``struct compat_siginfo *to`` compat siginfo destination ``const struct kernel_siginfo *from`` kernel siginfo source **Note** This function does not work properly for the SIGCHLD on x32, but fortunately it doesn't have to. The only valid callers for this function are copy_siginfo_to_user32, which is overriden for x32 and the coredump code. The latter does not care because SIGCHLD will never cause a coredump.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj&ih]”hŒ Parameters”…”�”}”(hj(ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$iubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M8hj iubj¤)�”}”(hhh]”(j©)�”}”(hŒ9``struct compat_siginfo *to`` compat siginfo destination ”h]”(j¯)�”}”(hŒ``struct compat_siginfo *to``”h]”jS)�”}”(hjEih]”hŒstruct compat_siginfo *to”…”�”}”(hjGih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjCiubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M5hj?iubjÉ)�”}”(hhh]”jM)�”}”(hŒcompat siginfo destination”h]”hŒcompat siginfo destination”…”�”}”(hj^ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jZih´M5hj[iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj?iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jZih´M5hjhj7jubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7jubh)�”}”(hhh]”j)�”}”(hŒsigset_t”h]”hŒsigset_t”…”�”}”(hjYjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j[jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj!jsbŒc.do_sigtimedwait”†”asbuh1hhj7jubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7jubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‡jh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj7jubj)�”}”(hŒwhich”h]”hŒwhich”…”�”}”(hj”jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3jubj:)�”}”(hŒkernel_siginfo_t *info”h]”(h)�”}”(hhh]”j)�”}”(hŒkernel_siginfo_t”h]”hŒkernel_siginfo_t”…”�”}”(hj°jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j²jŒmodname”NŒ classname”Njwjz)�”}”j}]”jujŒc.do_sigtimedwait”†”asbuh1hhj©jubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj©jubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÜjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj©jubj)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjéjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3jubj:)�”}”(hŒconst struct timespec64 *ts”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjþjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþjubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjþjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþjubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hj;kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j=kŒmodname”NŒ classname”Njwjz)�”}”j}]”jujŒc.do_sigtimedwait”†”asbuh1hhjþjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjgkh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjþjubj)�”}”(hŒts”h]”hŒts”…”�”}”(hjtkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3jubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjúih²hh³j jh´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjöih²hh³j jh´Mñubah}”(h]”jñiah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j jh´Mñhjóih²hubj4)�”}”(hhh]”jM)�”}”(hŒ.wait for queued signals specified in **which**”h]”(hŒ%wait for queued signals specified in ”…”�”}”(hjžkh²hh³Nh´NubjŽ)�”}”(hŒ **which**”h]”hŒwhich”…”�”}”(hj¦kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mñhj›kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjóih²hh³j jh´Mñubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÄkjHjÄkjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒá**Parameters** ``const sigset_t *which`` queued signals to wait for ``kernel_siginfo_t *info`` if non-null, the signal's siginfo is returned here ``const struct timespec64 *ts`` upper bound on process time suspension”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÎkh]”hŒ Parameters”…”�”}”(hjÐkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌkubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MõhjÈkubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``const sigset_t *which`` queued signals to wait for ”h]”(j¯)�”}”(hŒ``const sigset_t *which``”h]”jS)�”}”(hjíkh]”hŒconst sigset_t *which”…”�”}”(hjïkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjëkubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MòhjçkubjÉ)�”}”(hhh]”jM)�”}”(hŒqueued signals to wait for”h]”hŒqueued signals to wait for”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jlh´Mòhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjçkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jlh´Mòhjäkubj©)�”}”(hŒN``kernel_siginfo_t *info`` if non-null, the signal's siginfo is returned here ”h]”(j¯)�”}”(hŒ``kernel_siginfo_t *info``”h]”jS)�”}”(hj&lh]”hŒkernel_siginfo_t *info”…”�”}”(hj(lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj$lubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Móhj lubjÉ)�”}”(hhh]”jM)�”}”(hŒ2if non-null, the signal's siginfo is returned here”h]”hŒ4if non-null, the signal’s siginfo is returned here”…”�”}”(hj?lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j;lh´MóhjhjòlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòlubh)�”}”(hhh]”j)�”}”(hŒsigset_t”h]”hŒsigset_t”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jmŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÜlsbŒc.sys_rt_sigtimedwait”†”asbuh1hhjòlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòlubhŒ__user”…”�”}”(hjòlh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòlubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjTmh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjòlubj)�”}”(hŒuthese”h]”hŒuthese”…”�”}”(hjamh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîlubj:)�”}”(hŒsiginfo_t __user *uinfo”h]”(h)�”}”(hhh]”j)�”}”(hŒ siginfo_t”h]”hŒ siginfo_t”…”�”}”(hj}mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jmŒmodname”NŒ classname”Njwjz)�”}”j}]”j0mŒc.sys_rt_sigtimedwait”†”asbuh1hhjvmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjvmubhŒ__user”…”�”}”(hjvmh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjvmubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj»mh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjvmubj)�”}”(hŒuinfo”h]”hŒuinfo”…”�”}”(hjÈmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîlubj:)�”}”(hŒ*const struct __kernel_timespec __user *uts”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjámh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÝmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝmubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjümh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÝmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝmubh)�”}”(hhh]”j)�”}”(hŒ__kernel_timespec”h]”hŒ__kernel_timespec”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jnŒmodname”NŒ classname”Njwjz)�”}”j}]”j0mŒc.sys_rt_sigtimedwait”†”asbuh1hhjÝmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8nh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝmubhŒ__user”…”�”}”(hjÝmh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJnh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝmubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjXnh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÝmubj)�”}”(hŒuts”h]”hŒuts”…”�”}”(hjenh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîlubj:)�”}”(hŒsize_t sigsetsize”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj�nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jƒnŒmodname”NŒ classname”Njwjz)�”}”j}]”j0mŒc.sys_rt_sigtimedwait”†”asbuh1hhjznubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸnh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjznubj)�”}”(hŒ sigsetsize”h]”hŒ sigsetsize”…”�”}”(hj­nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjznubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîlubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjµlh²hh³jÇlh´M*ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj±lh²hh³jÇlh´M*ubah}”(h]”j¬lah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÇlh´M*hj®lh²hubj4)�”}”(hhh]”jM)�”}”(hŒ=synchronously wait for queued signals specified in **uthese**”h]”(hŒ3synchronously wait for queued signals specified in ”…”�”}”(hj×nh²hh³Nh´NubjŽ)�”}”(hŒ **uthese**”h]”hŒuthese”…”�”}”(hjßnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M*hjÔnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj®lh²hh³jÇlh´M*ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjýnjHjýnjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX+**Parameters** ``const sigset_t __user * uthese`` queued signals to wait for ``siginfo_t __user * uinfo`` if non-null, the signal's siginfo is returned here ``const struct __kernel_timespec __user * uts`` upper bound on process time suspension ``size_t sigsetsize`` size of sigset_t type”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjoh]”hŒ Parameters”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M.hjoubj¤)�”}”(hhh]”(j©)�”}”(hŒ>``const sigset_t __user * uthese`` queued signals to wait for ”h]”(j¯)�”}”(hŒ"``const sigset_t __user * uthese``”h]”jS)�”}”(hj&oh]”hŒconst sigset_t __user * uthese”…”�”}”(hj(oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj$oubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M,hj oubjÉ)�”}”(hhh]”jM)�”}”(hŒqueued signals to wait for”h]”hŒqueued signals to wait for”…”�”}”(hj?oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j;oh´M,hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj:rubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLrh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:rubj)�”}”(hŒsig”h]”hŒsig”…”�”}”(hjZrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjrubj:)�”}”(hŒsiginfo_t __user *info”h]”(h)�”}”(hhh]”j)�”}”(hŒ siginfo_t”h]”hŒ siginfo_t”…”�”}”(hjvrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jxrŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjïqsbŒc.sys_pidfd_send_signal”†”asbuh1hhjorubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–rh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjorubhŒ__user”…”�”}”(hjorh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨rh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjorubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¶rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjorubj)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjÃrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjorubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjrubj:)�”}”(hŒunsigned int flags”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÜrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjØrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêrh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjØrubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjørh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjØrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjØrubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjrubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÈqh²hh³jÚqh´M.ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÄqh²hh³jÚqh´M.ubah}”(h]”j¿qah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÚqh´M.hjÁqh²hubj4)�”}”(hhh]”jM)�”}”(hŒ Signal a process through a pidfd”h]”hŒ Signal a process through a pidfd”…”�”}”(hj>sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M.hj;sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÁqh²hh³jÚqh´M.ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjVsjHjVsjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX­**Parameters** ``int pidfd`` file descriptor of the process ``int sig`` signal to send ``siginfo_t __user * info`` signal info ``unsigned int flags`` future flags **Description** Send the signal to the thread group or to the individual thread depending on PIDFD_THREAD. In the future extension to **flags** may be used to override the default scope of **pidfd**. **Return** 0 on success, negative errno on failure”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj`sh]”hŒ Parameters”…”�”}”(hjbsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^subah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M2hjZsubj¤)�”}”(hhh]”(j©)�”}”(hŒ-``int pidfd`` file descriptor of the process ”h]”(j¯)�”}”(hŒ ``int pidfd``”h]”jS)�”}”(hjsh]”hŒ int pidfd”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj}subah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M/hjysubjÉ)�”}”(hhh]”jM)�”}”(hŒfile descriptor of the process”h]”hŒfile descriptor of the process”…”�”}”(hj˜sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j”sh´M/hj•subah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjysubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”sh´M/hjvsubj©)�”}”(hŒ``int sig`` signal to send ”h]”(j¯)�”}”(hŒ ``int sig``”h]”jS)�”}”(hj¸sh]”hŒint sig”…”�”}”(hjºsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¶subah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M0hj²subjÉ)�”}”(hhh]”jM)�”}”(hŒsignal to send”h]”hŒsignal to send”…”�”}”(hjÑsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÍsh´M0hjÎsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj²subeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÍsh´M0hjvsubj©)�”}”(hŒ(``siginfo_t __user * info`` signal info ”h]”(j¯)�”}”(hŒ``siginfo_t __user * info``”h]”jS)�”}”(hjñsh]”hŒsiginfo_t __user * info”…”�”}”(hjósh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjïsubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M1hjësubjÉ)�”}”(hhh]”jM)�”}”(hŒ signal info”h]”hŒ signal info”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jth´M1hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjësubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jth´M1hjvsubj©)�”}”(hŒ$``unsigned int flags`` future flags ”h]”(j¯)�”}”(hŒ``unsigned int flags``”h]”jS)�”}”(hj*th]”hŒunsigned int flags”…”�”}”(hj,th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj(tubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M2hj$tubjÉ)�”}”(hhh]”jM)�”}”(hŒ future flags”h]”hŒ future flags”…”�”}”(hjCth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j?th´M2hj@tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj$tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j?th´M2hjvsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjZsubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjeth]”hŒ Description”…”�”}”(hjgth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjctubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M4hjZsubjM)�”}”(hŒ·Send the signal to the thread group or to the individual thread depending on PIDFD_THREAD. In the future extension to **flags** may be used to override the default scope of **pidfd**.”h]”(hŒvSend the signal to the thread group or to the individual thread depending on PIDFD_THREAD. In the future extension to ”…”�”}”(hj{th²hh³Nh´NubjŽ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjƒth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj{tubhŒ. may be used to override the default scope of ”…”�”}”(hj{th²hh³Nh´NubjŽ)�”}”(hŒ **pidfd**”h]”hŒpidfd”…”�”}”(hj•th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj{tubhŒ.”…”�”}”(hj{th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M3hjZsubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj°th]”hŒReturn”…”�”}”(hj²th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®tubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M8hjZsubjM)�”}”(hŒ'0 on success, negative errno on failure”h]”hŒ'0 on success, negative errno on failure”…”�”}”(hjÆth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M9hjZsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsys_tgkill (C function)”Œ c.sys_tgkill”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0long sys_tgkill (pid_t tgid, pid_t pid, int sig)”h]”hù)�”}”(hŒ/long sys_tgkill(pid_t tgid, pid_t pid, int sig)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjõth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjñth²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M˜ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjñth²hh³juh´M˜ubhÿ)�”}”(hŒ sys_tgkill”h]”j)�”}”(hŒ sys_tgkill”h]”hŒ sys_tgkill”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjñth²hh³juh´M˜ubj4)�”}”(hŒ (pid_t tgid, pid_t pid, int sig)”h]”(j:)�”}”(hŒ pid_t tgid”h]”(h)�”}”(hhh]”j)�”}”(hŒpid_t”h]”hŒpid_t”…”�”}”(hj5uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j7uŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjusbŒ c.sys_tgkill”†”asbuh1hhj.uubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUuh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj.uubj)�”}”(hŒtgid”h]”hŒtgid”…”�”}”(hjcuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj*uubj:)�”}”(hŒ pid_t pid”h]”(h)�”}”(hhh]”j)�”}”(hŒpid_t”h]”hŒpid_t”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�uŒmodname”NŒ classname”Njwjz)�”}”j}]”jQuŒ c.sys_tgkill”†”asbuh1hhjxuubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�uh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjxuubj)�”}”(hŒpid”h]”hŒpid”…”�”}”(hj«uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjxuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj*uubj:)�”}”(hŒint sig”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÄuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÀuubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒuh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÀuubj)�”}”(hŒsig”h]”hŒsig”…”�”}”(hjàuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj*uubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjñth²hh³juh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjíth²hh³juh´M˜ubah}”(h]”jètah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³juh´M˜hjêth²hubj4)�”}”(hhh]”jM)�”}”(hŒ"send signal to one specific thread”h]”hŒ"send signal to one specific thread”…”�”}”(hj vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M˜hjvh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjêth²hh³juh´M˜ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj"vjHj"vjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXp**Parameters** ``pid_t tgid`` the thread group ID of the thread ``pid_t pid`` the PID of the thread ``int sig`` signal to be sent **Description** This syscall also checks the **tgid** and returns -ESRCH even if the PID exists but it's not belonging to the target process anymore. This method solves the problem of threads exiting and PIDs getting reused.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj,vh]”hŒ Parameters”…”�”}”(hj.vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*vubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mœhj&vubj¤)�”}”(hhh]”(j©)�”}”(hŒ1``pid_t tgid`` the thread group ID of the thread ”h]”(j¯)�”}”(hŒ``pid_t tgid``”h]”jS)�”}”(hjKvh]”hŒ pid_t tgid”…”�”}”(hjMvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjIvubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M™hjEvubjÉ)�”}”(hhh]”jM)�”}”(hŒ!the thread group ID of the thread”h]”hŒ!the thread group ID of the thread”…”�”}”(hjdvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`vh´M™hjavubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjEvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`vh´M™hjBvubj©)�”}”(hŒ$``pid_t pid`` the PID of the thread ”h]”(j¯)�”}”(hŒ ``pid_t pid``”h]”jS)�”}”(hj„vh]”hŒ pid_t pid”…”�”}”(hj†vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‚vubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mšhj~vubjÉ)�”}”(hhh]”jM)�”}”(hŒthe PID of the thread”h]”hŒthe PID of the thread”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j™vh´Mšhjšvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj~vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j™vh´MšhjBvubj©)�”}”(hŒ``int sig`` signal to be sent ”h]”(j¯)�”}”(hŒ ``int sig``”h]”jS)�”}”(hj½vh]”hŒint sig”…”�”}”(hj¿vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj»vubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M›hj·vubjÉ)�”}”(hhh]”jM)�”}”(hŒsignal to be sent”h]”hŒsignal to be sent”…”�”}”(hjÖvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÒvh´M›hjÓvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj·vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÒvh´M›hjBvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj&vubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjøvh]”hŒ Description”…”�”}”(hjúvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjövubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M�hj&vubji)�”}”(hŒÐThis syscall also checks the **tgid** and returns -ESRCH even if the PID exists but it's not belonging to the target process anymore. This method solves the problem of threads exiting and PIDs getting reused.”h]”jM)�”}”(hŒÐThis syscall also checks the **tgid** and returns -ESRCH even if the PID exists but it's not belonging to the target process anymore. This method solves the problem of threads exiting and PIDs getting reused.”h]”(hŒThis syscall also checks the ”…”�”}”(hjwh²hh³Nh´NubjŽ)�”}”(hŒ**tgid**”h]”hŒtgid”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwubhŒ­ and returns -ESRCH even if the PID exists but it’s not belonging to the target process anymore. This method solves the problem of threads exiting and PIDs getting reused.”…”�”}”(hjwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mœhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j2wh´Mœhj&vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsys_tkill (C function)”Œ c.sys_tkill”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ#long sys_tkill (pid_t pid, int sig)”h]”hù)�”}”(hŒ"long sys_tkill(pid_t pid, int sig)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjYwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjUwh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M«ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhwh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjUwh²hh³jgwh´M«ubhÿ)�”}”(hŒ sys_tkill”h]”j)�”}”(hŒ sys_tkill”h]”hŒ sys_tkill”…”�”}”(hjzwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvwubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjUwh²hh³jgwh´M«ubj4)�”}”(hŒ(pid_t pid, int sig)”h]”(j:)�”}”(hŒ pid_t pid”h]”(h)�”}”(hhh]”j)�”}”(hŒpid_t”h]”hŒpid_t”…”�”}”(hj™wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j›wŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj|wsbŒ c.sys_tkill”†”asbuh1hhj’wubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹wh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj’wubj)�”}”(hŒpid”h]”hŒpid”…”�”}”(hjÇwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽwubj:)�”}”(hŒint sig”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjàwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÜwubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîwh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜwubj)�”}”(hŒsig”h]”hŒsig”…”�”}”(hjüwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽwubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjUwh²hh³jgwh´M«ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjQwh²hh³jgwh´M«ubah}”(h]”jLwah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jgwh´M«hjNwh²hubj4)�”}”(hhh]”jM)�”}”(hŒ send signal to one specific task”h]”hŒ send signal to one specific task”…”�”}”(hj&xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M«hj#xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjNwh²hh³jgwh´M«ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj>xjHj>xjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒ©**Parameters** ``pid_t pid`` the PID of the task ``int sig`` signal to be sent **Description** Send a signal to only one task, even if it's a CLONE_THREAD task.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjHxh]”hŒ Parameters”…”�”}”(hjJxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFxubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¯hjBxubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``pid_t pid`` the PID of the task ”h]”(j¯)�”}”(hŒ ``pid_t pid``”h]”jS)�”}”(hjgxh]”hŒ pid_t pid”…”�”}”(hjixh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjexubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¬hjaxubjÉ)�”}”(hhh]”jM)�”}”(hŒthe PID of the task”h]”hŒthe PID of the task”…”�”}”(hj€xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j|xh´M¬hj}xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjaxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j|xh´M¬hj^xubj©)�”}”(hŒ``int sig`` signal to be sent ”h]”(j¯)�”}”(hŒ ``int sig``”h]”jS)�”}”(hj xh]”hŒint sig”…”�”}”(hj¢xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjžxubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M­hjšxubjÉ)�”}”(hhh]”jM)�”}”(hŒsignal to be sent”h]”hŒsignal to be sent”…”�”}”(hj¹xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jµxh´M­hj¶xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjšxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jµxh´M­hj^xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjBxubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÛxh]”hŒ Description”…”�”}”(hjÝxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙxubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¯hjBxubji)�”}”(hŒASend a signal to only one task, even if it's a CLONE_THREAD task.”h]”jM)�”}”(hjóxh]”hŒCSend a signal to only one task, even if it’s a CLONE_THREAD task.”…”�”}”(hjõxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M®hjñxubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jyh´M®hjBxubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ sys_rt_sigqueueinfo (C function)”Œc.sys_rt_sigqueueinfo”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒGlong sys_rt_sigqueueinfo (pid_t pid, int sig, siginfo_t __user * uinfo)”h]”hù)�”}”(hŒElong sys_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t __user *uinfo)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj)yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj%yh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÅubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj%yh²hh³j7yh´MÅubhÿ)�”}”(hŒsys_rt_sigqueueinfo”h]”j)�”}”(hŒsys_rt_sigqueueinfo”h]”hŒsys_rt_sigqueueinfo”…”�”}”(hjJyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFyubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj%yh²hh³j7yh´MÅubj4)�”}”(hŒ-(pid_t pid, int sig, siginfo_t __user *uinfo)”h]”(j:)�”}”(hŒ pid_t pid”h]”(h)�”}”(hhh]”j)�”}”(hŒpid_t”h]”hŒpid_t”…”�”}”(hjiyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jkyŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjLysbŒc.sys_rt_sigqueueinfo”†”asbuh1hhjbyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjbyubj)�”}”(hŒpid”h]”hŒpid”…”�”}”(hj—yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj^yubj:)�”}”(hŒint sig”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj°yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¬yubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¬yubj)�”}”(hŒsig”h]”hŒsig”…”�”}”(hjÌyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj^yubj:)�”}”(hŒsiginfo_t __user *uinfo”h]”(h)�”}”(hhh]”j)�”}”(hŒ siginfo_t”h]”hŒ siginfo_t”…”�”}”(hjèyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jêyŒmodname”NŒ classname”Njwjz)�”}”j}]”j…yŒc.sys_rt_sigqueueinfo”†”asbuh1hhjáyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjáyubhŒ__user”…”�”}”(hjáyh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjáyubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj&zh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjáyubj)�”}”(hŒuinfo”h]”hŒuinfo”…”�”}”(hj3zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj^yubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj%yh²hh³j7yh´MÅubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj!yh²hh³j7yh´MÅubah}”(h]”jyah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j7yh´MÅhjyh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#send signal information to a signal”h]”hŒ#send signal information to a signal”…”�”}”(hj]zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÅhjZzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjyh²hh³j7yh´MÅubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjuzjHjuzjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒ�**Parameters** ``pid_t pid`` the PID of the thread ``int sig`` signal to be sent ``siginfo_t __user * uinfo`` signal info to be sent”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjzh]”hŒ Parameters”…”�”}”(hj�zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÉhjyzubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``pid_t pid`` the PID of the thread ”h]”(j¯)�”}”(hŒ ``pid_t pid``”h]”jS)�”}”(hjžzh]”hŒ pid_t pid”…”�”}”(hj zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjœzubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÆhj˜zubjÉ)�”}”(hhh]”jM)�”}”(hŒthe PID of the thread”h]”hŒthe PID of the thread”…”�”}”(hj·zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j³zh´MÆhj´zubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj˜zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j³zh´MÆhj•zubj©)�”}”(hŒ``int sig`` signal to be sent ”h]”(j¯)�”}”(hŒ ``int sig``”h]”jS)�”}”(hj×zh]”hŒint sig”…”�”}”(hjÙzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÕzubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÇhjÑzubjÉ)�”}”(hhh]”jM)�”}”(hŒsignal to be sent”h]”hŒsignal to be sent”…”�”}”(hjðzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jìzh´MÇhjízubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÑzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jìzh´MÇhj•zubj©)�”}”(hŒ3``siginfo_t __user * uinfo`` signal info to be sent”h]”(j¯)�”}”(hŒ``siginfo_t __user * uinfo``”h]”jS)�”}”(hj{h]”hŒsiginfo_t __user * uinfo”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÉhj {ubjÉ)�”}”(hhh]”jM)�”}”(hŒsignal info to be sent”h]”hŒsignal info to be sent”…”�”}”(hj){h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÈhj&{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj {ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j%{h´MÉhj•zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjyzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsys_sigpending (C function)”Œc.sys_sigpending”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0long sys_sigpending (old_sigset_t __user * uset)”h]”hù)�”}”(hŒ.long sys_sigpending(old_sigset_t __user *uset)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjj{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjf{h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjf{h²hh³jx{h´Mubhÿ)�”}”(hŒsys_sigpending”h]”j)�”}”(hŒsys_sigpending”h]”hŒsys_sigpending”…”�”}”(hj‹{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡{ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjf{h²hh³jx{h´Mubj4)�”}”(hŒ(old_sigset_t __user *uset)”h]”j:)�”}”(hŒold_sigset_t __user *uset”h]”(h)�”}”(hhh]”j)�”}”(hŒ old_sigset_t”h]”hŒ old_sigset_t”…”�”}”(hjª{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¬{Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj�{sbŒc.sys_sigpending”†”asbuh1hhj£{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj£{ubhŒ__user”…”�”}”(hj£{h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj£{ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjê{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj£{ubj)�”}”(hŒuset”h]”hŒuset”…”�”}”(hj÷{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŸ{ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjf{h²hh³jx{h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjb{h²hh³jx{h´Mubah}”(h]”j]{ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jx{h´Mhj_{h²hubj4)�”}”(hhh]”jM)�”}”(hŒexamine pending signals”h]”hŒexamine pending signals”…”�”}”(hj!|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mhj|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj_{h²hh³jx{h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj9|jHj9|jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒY**Parameters** ``old_sigset_t __user * uset`` where mask of pending signal is returned”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjC|h]”hŒ Parameters”…”�”}”(hjE|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjA|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mhj=|ubj¤)�”}”(hhh]”j©)�”}”(hŒG``old_sigset_t __user * uset`` where mask of pending signal is returned”h]”(j¯)�”}”(hŒ``old_sigset_t __user * uset``”h]”jS)�”}”(hjb|h]”hŒold_sigset_t __user * uset”…”�”}”(hjd|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj`|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mhj\|ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(where mask of pending signal is returned”h]”hŒ(where mask of pending signal is returned”…”�”}”(hj{|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mhjx|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj\|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jw|h´MhjY|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj=|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsys_sigprocmask (C function)”Œc.sys_sigprocmask”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒVlong sys_sigprocmask (int how, old_sigset_t __user * nset, old_sigset_t __user * oset)”h]”hù)�”}”(hŒSlong sys_sigprocmask(int how, old_sigset_t __user *nset, old_sigset_t __user *oset)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¼|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¸|h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË|h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸|h²hh³jÊ|h´M0ubhÿ)�”}”(hŒsys_sigprocmask”h]”j)�”}”(hŒsys_sigprocmask”h]”hŒsys_sigprocmask”…”�”}”(hjÝ|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙ|ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¸|h²hh³jÊ|h´M0ubj4)�”}”(hŒ?(int how, old_sigset_t __user *nset, old_sigset_t __user *oset)”h]”(j:)�”}”(hŒint how”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjù|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjõ|ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjõ|ubj)�”}”(hŒhow”h]”hŒhow”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõ|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjñ|ubj:)�”}”(hŒold_sigset_t __user *nset”h]”(h)�”}”(hhh]”j)�”}”(hŒ old_sigset_t”h]”hŒ old_sigset_t”…”�”}”(hj1}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j3}Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjß|sbŒc.sys_sigprocmask”†”asbuh1hhj*}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*}ubhŒ__user”…”�”}”(hj*}h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*}ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjq}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj*}ubj)�”}”(hŒnset”h]”hŒnset”…”�”}”(hj~}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjñ|ubj:)�”}”(hŒold_sigset_t __user *oset”h]”(h)�”}”(hhh]”j)�”}”(hŒ old_sigset_t”h]”hŒ old_sigset_t”…”�”}”(hjš}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jœ}Œmodname”NŒ classname”Njwjz)�”}”j}]”jM}Œc.sys_sigprocmask”†”asbuh1hhj“}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“}ubhŒ__user”…”�”}”(hj“}h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“}ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjØ}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj“}ubj)�”}”(hŒoset”h]”hŒoset”…”�”}”(hjå}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjñ|ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¸|h²hh³jÊ|h´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj´|h²hh³jÊ|h´M0ubah}”(h]”j¯|ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÊ|h´M0hj±|h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"examine and change blocked signals”h]”hŒ"examine and change blocked signals”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M0hj ~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj±|h²hh³jÊ|h´M0ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj'~jHj'~jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXQ**Parameters** ``int how`` whether to add, remove, or set signals ``old_sigset_t __user * nset`` signals to add or remove (if non-null) ``old_sigset_t __user * oset`` previous value of signal mask if non-null **Description** Some platforms have their own version with special arguments; others support only sys_rt_sigprocmask.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj1~h]”hŒ Parameters”…”�”}”(hj3~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M4hj+~ubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``int how`` whether to add, remove, or set signals ”h]”(j¯)�”}”(hŒ ``int how``”h]”jS)�”}”(hjP~h]”hŒint how”…”�”}”(hjR~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjN~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M1hjJ~ubjÉ)�”}”(hhh]”jM)�”}”(hŒ&whether to add, remove, or set signals”h]”hŒ&whether to add, remove, or set signals”…”�”}”(hji~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³je~h´M1hjf~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJ~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³je~h´M1hjG~ubj©)�”}”(hŒF``old_sigset_t __user * nset`` signals to add or remove (if non-null) ”h]”(j¯)�”}”(hŒ``old_sigset_t __user * nset``”h]”jS)�”}”(hj‰~h]”hŒold_sigset_t __user * nset”…”�”}”(hj‹~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‡~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M2hjƒ~ubjÉ)�”}”(hhh]”jM)�”}”(hŒ&signals to add or remove (if non-null)”h]”hŒ&signals to add or remove (if non-null)”…”�”}”(hj¢~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jž~h´M2hjŸ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjƒ~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jž~h´M2hjG~ubj©)�”}”(hŒI``old_sigset_t __user * oset`` previous value of signal mask if non-null ”h]”(j¯)�”}”(hŒ``old_sigset_t __user * oset``”h]”jS)�”}”(hjÂ~h]”hŒold_sigset_t __user * oset”…”�”}”(hjÄ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÀ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M3hj¼~ubjÉ)�”}”(hhh]”jM)�”}”(hŒ)previous value of signal mask if non-null”h]”hŒ)previous value of signal mask if non-null”…”�”}”(hjÛ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j×~h´M3hjØ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¼~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j×~h´M3hjG~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj+~ubjM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M5hj+~ubjM)�”}”(hŒeSome platforms have their own version with special arguments; others support only sys_rt_sigprocmask.”h]”hŒeSome platforms have their own version with special arguments; others support only sys_rt_sigprocmask.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M4hj+~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsys_rt_sigaction (C function)”Œc.sys_rt_sigaction”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwlong sys_rt_sigaction (int sig, const struct sigaction __user * act, struct sigaction __user * oact, size_t sigsetsize)”h]”hù)�”}”(hŒtlong sys_rt_sigaction(int sig, const struct sigaction __user *act, struct sigaction __user *oact, size_t sigsetsize)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj>h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´McubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>h²hh³jPh´Mcubhÿ)�”}”(hŒsys_rt_sigaction”h]”j)�”}”(hŒsys_rt_sigaction”h]”hŒsys_rt_sigaction”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj>h²hh³jPh´Mcubj4)�”}”(hŒ_(int sig, const struct sigaction __user *act, struct sigaction __user *oact, size_t sigsetsize)”h]”(j:)�”}”(hŒint sig”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{ubj)�”}”(hŒsig”h]”hŒsig”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjwubj:)�”}”(hŒ"const struct sigaction __user *act”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°ubh)�”}”(hhh]”j)�”}”(hŒ sigaction”h]”hŒ sigaction”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jïŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjesbŒc.sys_rt_sigaction”†”asbuh1hhj°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°ubhŒ__user”…”�”}”(hj°h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj-€h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj°ubj)�”}”(hŒact”h]”hŒact”…”�”}”(hj:€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjwubj:)�”}”(hŒstruct sigaction __user *oact”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjS€h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjO€ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`€h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjO€ubh)�”}”(hhh]”j)�”}”(hŒ sigaction”h]”hŒ sigaction”…”�”}”(hjq€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”js€Œmodname”NŒ classname”Njwjz)�”}”j}]”j €Œc.sys_rt_sigaction”†”asbuh1hhjO€ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�€h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjO€ubhŒ__user”…”�”}”(hjO€h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡€h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjO€ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¯€h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjO€ubj)�”}”(hŒoact”h]”hŒoact”…”�”}”(hj¼€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjwubj:)�”}”(hŒsize_t sigsetsize”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjØ€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕ€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÚ€Œmodname”NŒ classname”Njwjz)�”}”j}]”j €Œc.sys_rt_sigaction”†”asbuh1hhjÑ€ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö€h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÑ€ubj)�”}”(hŒ sigsetsize”h]”hŒ sigsetsize”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑ€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjwubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj>h²hh³jPh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj:h²hh³jPh´Mcubah}”(h]”j5ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jPh´Mchj7h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"alter an action taken by a process”h]”hŒ"alter an action taken by a process”…”�”}”(hj.�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mchj+�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj7h²hh³jPh´Mcubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjF�jHjF�jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒá**Parameters** ``int sig`` signal to be sent ``const struct sigaction __user * act`` new sigaction ``struct sigaction __user * oact`` used to save the previous sigaction ``size_t sigsetsize`` size of sigset_t type”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjP�h]”hŒ Parameters”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MghjJ�ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int sig`` signal to be sent ”h]”(j¯)�”}”(hŒ ``int sig``”h]”jS)�”}”(hjo�h]”hŒint sig”…”�”}”(hjq�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjm�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mdhji�ubjÉ)�”}”(hhh]”jM)�”}”(hŒsignal to be sent”h]”hŒsignal to be sent”…”�”}”(hjˆ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j„�h´Mdhj…�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhji�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„�h´Mdhjf�ubj©)�”}”(hŒ6``const struct sigaction __user * act`` new sigaction ”h]”(j¯)�”}”(hŒ'``const struct sigaction __user * act``”h]”jS)�”}”(hj¨�h]”hŒ#const struct sigaction __user * act”…”�”}”(hjª�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¦�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mehj¢�ubjÉ)�”}”(hhh]”jM)�”}”(hŒ new sigaction”h]”hŒ new sigaction”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j½�h´Mehj¾�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¢�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j½�h´Mehjf�ubj©)�”}”(hŒG``struct sigaction __user * oact`` used to save the previous sigaction ”h]”(j¯)�”}”(hŒ"``struct sigaction __user * oact``”h]”jS)�”}”(hjá�h]”hŒstruct sigaction __user * oact”…”�”}”(hjã�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjß�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MfhjÛ�ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#used to save the previous sigaction”h]”hŒ#used to save the previous sigaction”…”�”}”(hjú�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jö�h´Mfhj÷�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÛ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jö�h´Mfhjf�ubj©)�”}”(hŒ+``size_t sigsetsize`` size of sigset_t type”h]”(j¯)�”}”(hŒ``size_t sigsetsize``”h]”jS)�”}”(hj‚h]”hŒsize_t sigsetsize”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mhhj‚ubjÉ)�”}”(hhh]”jM)�”}”(hŒsize of sigset_t type”h]”hŒsize of sigset_t type”…”�”}”(hj3‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mghj0‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j/‚h´Mhhjf�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjJ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsys_rt_sigsuspend (C function)”Œc.sys_rt_sigsuspend”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒElong sys_rt_sigsuspend (sigset_t __user * unewset, size_t sigsetsize)”h]”hù)�”}”(hŒClong sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjt‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjp‚h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MIubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ‚h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjp‚h²hh³j‚‚h´MIubhÿ)�”}”(hŒsys_rt_sigsuspend”h]”j)�”}”(hŒsys_rt_sigsuspend”h]”hŒsys_rt_sigsuspend”…”�”}”(hj•‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘‚ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjp‚h²hh³j‚‚h´MIubj4)�”}”(hŒ-(sigset_t __user *unewset, size_t sigsetsize)”h]”(j:)�”}”(hŒsigset_t __user *unewset”h]”(h)�”}”(hhh]”j)�”}”(hŒsigset_t”h]”hŒsigset_t”…”�”}”(hj´‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¶‚Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj—‚sbŒc.sys_rt_sigsuspend”†”asbuh1hhj­‚ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ‚h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­‚ubhŒ__user”…”�”}”(hj­‚h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ‚h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­‚ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjô‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj­‚ubj)�”}”(hŒunewset”h]”hŒunewset”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj©‚ubj:)�”}”(hŒsize_t sigsetsize”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jƒŒmodname”NŒ classname”Njwjz)�”}”j}]”jЂŒc.sys_rt_sigsuspend”†”asbuh1hhjƒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;ƒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjƒubj)�”}”(hŒ sigsetsize”h]”hŒ sigsetsize”…”�”}”(hjIƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj©‚ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjp‚h²hh³j‚‚h´MIubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjl‚h²hh³j‚‚h´MIubah}”(h]”jg‚ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‚‚h´MIhji‚h²hubj4)�”}”(hhh]”jM)�”}”(hŒYreplace the signal mask for a value with the **unewset** value until a signal is received”h]”(hŒ-replace the signal mask for a value with the ”…”�”}”(hjsƒh²hh³Nh´NubjŽ)�”}”(hŒ **unewset**”h]”hŒunewset”…”�”}”(hj{ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsƒubhŒ! value until a signal is received”…”�”}”(hjsƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MIhjpƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hji‚h²hh³j‚‚h´MIubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�ƒjHj�ƒjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒt**Parameters** ``sigset_t __user * unewset`` new signal mask value ``size_t sigsetsize`` size of sigset_t type”h]”(jM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MMhj¡ƒubj¤)�”}”(hhh]”(j©)�”}”(hŒ4``sigset_t __user * unewset`` new signal mask value ”h]”(j¯)�”}”(hŒ``sigset_t __user * unewset``”h]”jS)�”}”(hjƃh]”hŒsigset_t __user * unewset”…”�”}”(hjȃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjăubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MKhjÀƒubjÉ)�”}”(hhh]”jM)�”}”(hŒnew signal mask value”h]”hŒnew signal mask value”…”�”}”(hj߃h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÛƒh´MKhj܃ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÀƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÛƒh´MKhj½ƒubj©)�”}”(hŒ+``size_t sigsetsize`` size of sigset_t type”h]”(j¯)�”}”(hŒ``size_t sigsetsize``”h]”jS)�”}”(hjÿƒh]”hŒsize_t sigsetsize”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjýƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MMhjùƒubjÉ)�”}”(hhh]”jM)�”}”(hŒsize of sigset_t type”h]”hŒsize of sigset_t type”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MLhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjùƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„h´MMhj½ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¡ƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_create (C macro)”Œc.kthread_create”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒkthread_create”h]”hù)�”}”(hŒkthread_create”h]”hÿ)�”}”(hŒkthread_create”h]”j)�”}”(hjS„h]”hŒkthread_create”…”�”}”(hj]„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY„ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjU„h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K#ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjQ„h²hh³jp„h´K#ubah}”(h]”jL„ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jp„h´K#hjN„h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjN„h²hh³jp„h´K#ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj‰„jHj‰„jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´NubjM)�”}”(hŒ4``kthread_create (threadfn, data, namefmt, arg...)``”h]”jS)�”}”(hj�„h]”hŒ0kthread_create (threadfn, data, namefmt, arg...)”…”�”}”(hj‘„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K%hj}Dh²hubji)�”}”(hŒ%create a kthread on the current node ”h]”jM)�”}”(hŒ$create a kthread on the current node”h]”hŒ$create a kthread on the current node”…”�”}”(hj©„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K#hj¥„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j·„h´K#hj}Dh²hubj„)�”}”(hX¡**Parameters** ``threadfn`` the function to run in the thread ``data`` data pointer for **threadfn\(\)** ``namefmt`` printf-style format string for the thread name ``arg...`` arguments for **namefmt**. **Description** This macro will create a kthread on the current node, leaving it in the stopped state. This is just a helper for kthread_create_on_node(); see the documentation there for more details.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K'hj¾„ubj¤)�”}”(hhh]”(j©)�”}”(hŒ/``threadfn`` the function to run in the thread ”h]”(j¯)�”}”(hŒ ``threadfn``”h]”jS)�”}”(hjã„h]”hŒthreadfn”…”�”}”(hjå„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjá„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K$hjÝ„ubjÉ)�”}”(hhh]”jM)�”}”(hŒ!the function to run in the thread”h]”hŒ!the function to run in the thread”…”�”}”(hjü„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ+``data`` data pointer for **threadfn\(\)** ”h]”(j¯)�”}”(hŒ``data``”h]”jS)�”}”(hj…h]”hŒdata”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K%hj…ubjÉ)�”}”(hhh]”jM)�”}”(hŒ!data pointer for **threadfn\(\)**”h]”(hŒdata pointer for ”…”�”}”(hj5…h²hh³Nh´NubjŽ)�”}”(hŒ**threadfn\(\)**”h]”hŒ threadfn()”…”�”}”(hj=…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j1…h´K%hj2…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j1…h´K%hjÚ„ubj©)�”}”(hŒ;``namefmt`` printf-style format string for the thread name ”h]”(j¯)�”}”(hŒ ``namefmt``”h]”jS)�”}”(hjc…h]”hŒnamefmt”…”�”}”(hje…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhja…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K&hj]…ubjÉ)�”}”(hhh]”jM)�”}”(hŒ.printf-style format string for the thread name”h]”hŒ.printf-style format string for the thread name”…”�”}”(hj|…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jx…h´K&hjy…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jx…h´K&hjÚ„ubj©)�”}”(hŒ&``arg...`` arguments for **namefmt**. ”h]”(j¯)�”}”(hŒ ``arg...``”h]”jS)�”}”(hjœ…h]”hŒarg...”…”�”}”(hjž…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjš…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K'hj–…ubjÉ)�”}”(hhh]”jM)�”}”(hŒarguments for **namefmt**.”h]”(hŒarguments for ”…”�”}”(hjµ…h²hh³Nh´NubjŽ)�”}”(hŒ **namefmt**”h]”hŒnamefmt”…”�”}”(hj½…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµ…ubhŒ.”…”�”}”(hjµ…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¾„ubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K)hj¾„ubjM)�”}”(hŒ¹This macro will create a kthread on the current node, leaving it in the stopped state. This is just a helper for kthread_create_on_node(); see the documentation there for more details.”h]”hŒ¹This macro will create a kthread on the current node, leaving it in the stopped state. This is just a helper for kthread_create_on_node(); see the documentation there for more details.”…”�”}”(hjÿ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K(hj¾„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_run (C macro)”Œ c.kthread_run”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ kthread_run”h]”hù)�”}”(hŒ kthread_run”h]”hÿ)�”}”(hŒ kthread_run”h]”j)�”}”(hj(†h]”hŒ kthread_run”…”�”}”(hj2†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.†ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj*†h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K=ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj&†h²hh³jE†h´K=ubah}”(h]”j!†ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jE†h´K=hj#†h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj#†h²hh³jE†h´K=ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj^†jHj^†jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´NubjM)�”}”(hŒ.``kthread_run (threadfn, data, namefmt, ...)``”h]”jS)�”}”(hjd†h]”hŒ*kthread_run (threadfn, data, namefmt, ...)”…”�”}”(hjf†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjb†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K?hj}Dh²hubji)�”}”(hŒcreate and wake a thread. ”h]”jM)�”}”(hŒcreate and wake a thread.”h]”hŒcreate and wake a thread.”…”�”}”(hj~†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K=hjz†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jŒ†h´K=hj}Dh²hubj„)�”}”(hXJ**Parameters** ``threadfn`` the function to run until signal_pending(current). ``data`` data ptr for **threadfn**. ``namefmt`` printf-style name for the thread. ``...`` variable arguments **Description** Convenient wrapper for kthread_create() followed by wake_up_process(). Returns the kthread or ERR_PTR(-ENOMEM).”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KAhj“†ubj¤)�”}”(hhh]”(j©)�”}”(hŒ@``threadfn`` the function to run until signal_pending(current). ”h]”(j¯)�”}”(hŒ ``threadfn``”h]”jS)�”}”(hj¸†h]”hŒthreadfn”…”�”}”(hjº†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¶†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K>hj²†ubjÉ)�”}”(hhh]”jM)�”}”(hŒ2the function to run until signal_pending(current).”h]”hŒ2the function to run until signal_pending(current).”…”�”}”(hjцh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``data`` data ptr for **threadfn**. ”h]”(j¯)�”}”(hŒ``data``”h]”jS)�”}”(hjñ†h]”hŒdata”…”�”}”(hjó†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjï†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K?hjë†ubjÉ)�”}”(hhh]”jM)�”}”(hŒdata ptr for **threadfn**.”h]”(hŒ data ptr for ”…”�”}”(hj ‡h²hh³Nh´NubjŽ)�”}”(hŒ **threadfn**”h]”hŒthreadfn”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ‡ubhŒ.”…”�”}”(hj ‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``namefmt`` printf-style name for the thread. ”h]”(j¯)�”}”(hŒ ``namefmt``”h]”jS)�”}”(hj<‡h]”hŒnamefmt”…”�”}”(hj>‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´K@hj6‡ubjÉ)�”}”(hhh]”jM)�”}”(hŒ!printf-style name for the thread.”h]”hŒ!printf-style name for the thread.”…”�”}”(hjU‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ‡h´K@hjR‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQ‡h´K@hj¯†ubj©)�”}”(hŒ``...`` variable arguments ”h]”(j¯)�”}”(hŒ``...``”h]”jS)�”}”(hju‡h]”hŒ...”…”�”}”(hjw‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjs‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´Khjo‡ubjÉ)�”}”(hhh]”jM)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjއh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jЇh´Khj‹‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjo‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jЇh´Khj¯†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj“†ubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´Khj“†ubjM)�”}”(hŒpConvenient wrapper for kthread_create() followed by wake_up_process(). Returns the kthread or ERR_PTR(-ENOMEM).”h]”hŒpConvenient wrapper for kthread_create() followed by wake_up_process(). Returns the kthread or ERR_PTR(-ENOMEM).”…”�”}”(hjƇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KBhj“†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_run_on_cpu (C function)”Œc.kthread_run_on_cpu”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒxstruct task_struct * kthread_run_on_cpu (int (*threadfn)(void *data), void *data, unsigned int cpu, const char *namefmt)”h]”hù)�”}”(hŒvstruct task_struct *kthread_run_on_cpu(int (*threadfn)(void *data), void *data, unsigned int cpu, const char *namefmt)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjõ‡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjñ‡h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjñ‡h²hh³jˆh´KOubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jˆŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒkthread_run_on_cpu”sbŒc.kthread_run_on_cpu”†”asbuh1hhjñ‡h²hh³jˆh´KOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5ˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjñ‡h²hh³jˆh´KOubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjCˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjñ‡h²hh³jˆh´KOubhÿ)�”}”(hŒkthread_run_on_cpu”h]”j)�”}”(hj2ˆh]”hŒkthread_run_on_cpu”…”�”}”(hjTˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPˆubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjñ‡h²hh³jˆh´KOubj4)�”}”(hŒP(int (*threadfn)(void *data), void *data, unsigned int cpu, const char *namefmt)”h]”(j:)�”}”(hŒint (*threadfn)(void *data)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjoˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjkˆubjQ)�”}”(hŒ ”h]”h•Œ ”…”�”}”(hj}ˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjkˆubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj‹ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjkˆubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj˜ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjkˆubj)�”}”(hŒthreadfn”h]”hŒthreadfn”…”�”}”(hj¥ˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkˆubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj³ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjkˆubj”)�”}”(hjsh]”hŒ(”…”�”}”(hjÀˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjkˆubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj͈h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjkˆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjkˆubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjéˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjkˆubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjöˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkˆubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjkˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjgˆubj:)�”}”(hŒ void *data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj8‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‰ubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjE‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjgˆubj:)�”}”(hŒunsigned int cpu”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj^‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjZ‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZ‰ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjz‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjZ‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZ‰ubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hj–‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjgˆubj:)�”}”(hŒconst char *namefmt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj¯‰h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj«‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj«‰ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjʉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj«‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj؉h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj«‰ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjæ‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj«‰ubj)�”}”(hŒnamefmt”h]”hŒnamefmt”…”�”}”(hjó‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjgˆubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjñ‡h²hh³jˆh´KOubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjí‡h²hh³jˆh´KOubah}”(h]”jè‡ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jˆh´KOhjê‡h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#create and wake a cpu bound thread.”h]”hŒ#create and wake a cpu bound thread.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KOhjŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjê‡h²hh³jˆh´KOubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj5ŠjHj5ŠjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXà**Parameters** ``int (*threadfn)(void *data)`` the function to run until signal_pending(current). ``void *data`` data ptr for **threadfn**. ``unsigned int cpu`` The cpu on which the thread should be bound, ``const char *namefmt`` printf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number. **Description** Convenient wrapper for kthread_create_on_cpu() followed by wake_up_process(). Returns the kthread or ERR_PTR(-ENOMEM).”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj?Šh]”hŒ Parameters”…”�”}”(hjAŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KShj9Šubj¤)�”}”(hhh]”(j©)�”}”(hŒS``int (*threadfn)(void *data)`` the function to run until signal_pending(current). ”h]”(j¯)�”}”(hŒ``int (*threadfn)(void *data)``”h]”jS)�”}”(hj^Šh]”hŒint (*threadfn)(void *data)”…”�”}”(hj`Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj\Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KPhjXŠubjÉ)�”}”(hhh]”jM)�”}”(hŒ2the function to run until signal_pending(current).”h]”hŒ2the function to run until signal_pending(current).”…”�”}”(hjwŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jsŠh´KPhjtŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjXŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jsŠh´KPhjUŠubj©)�”}”(hŒ*``void *data`` data ptr for **threadfn**. ”h]”(j¯)�”}”(hŒ``void *data``”h]”jS)�”}”(hj—Šh]”hŒ void *data”…”�”}”(hj™Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj•Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KQhj‘ŠubjÉ)�”}”(hhh]”jM)�”}”(hŒdata ptr for **threadfn**.”h]”(hŒ data ptr for ”…”�”}”(hj°Šh²hh³Nh´NubjŽ)�”}”(hŒ **threadfn**”h]”hŒthreadfn”…”�”}”(hj¸Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°ŠubhŒ.”…”�”}”(hj°Šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¬Šh´KQhj­Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‘Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¬Šh´KQhjUŠubj©)�”}”(hŒB``unsigned int cpu`` The cpu on which the thread should be bound, ”h]”(j¯)�”}”(hŒ``unsigned int cpu``”h]”jS)�”}”(hjâŠh]”hŒunsigned int cpu”…”�”}”(hjäŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjàŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KRhjÜŠubjÉ)�”}”(hhh]”jM)�”}”(hŒ,The cpu on which the thread should be bound,”h]”hŒ,The cpu on which the thread should be bound,”…”�”}”(hjûŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j÷Šh´KRhjøŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÜŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j÷Šh´KRhjUŠubj©)�”}”(hŒ{``const char *namefmt`` printf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number. ”h]”(j¯)�”}”(hŒ``const char *namefmt``”h]”jS)�”}”(hj‹h]”hŒconst char *namefmt”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KThj‹ubjÉ)�”}”(hhh]”jM)�”}”(hŒbprintf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number.”h]”hŒfprintf-style name for the thread. Format is restricted to “name.*``u``â€�. Code fills in cpu number.”…”�”}”(hj4‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KShj1‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j0‹h´KThjUŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj9ŠubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjW‹h]”hŒ Description”…”�”}”(hjY‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjU‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KVhj9ŠubjM)�”}”(hŒwConvenient wrapper for kthread_create_on_cpu() followed by wake_up_process(). Returns the kthread or ERR_PTR(-ENOMEM).”h]”hŒwConvenient wrapper for kthread_create_on_cpu() followed by wake_up_process(). Returns the kthread or ERR_PTR(-ENOMEM).”…”�”}”(hjm‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KVhj9Šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_run_worker (C macro)”Œc.kthread_run_worker”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒkthread_run_worker”h]”hù)�”}”(hŒkthread_run_worker”h]”hÿ)�”}”(hŒkthread_run_worker”h]”j)�”}”(hj–‹h]”hŒkthread_run_worker”…”�”}”(hj ‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ‹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj˜‹h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KÛubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj”‹h²hh³j³‹h´KÛubah}”(h]”j�‹ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j³‹h´KÛhj‘‹h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‘‹h²hh³j³‹h´KÛubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjÌ‹jHjÌ‹jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´NubjM)�”}”(hŒ,``kthread_run_worker (flags, namefmt, ...)``”h]”jS)�”}”(hjÒ‹h]”hŒ(kthread_run_worker (flags, namefmt, ...)”…”�”}”(hjÔ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjЋubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KÝhj}Dh²hubji)�”}”(hŒ"create and wake a kthread worker. ”h]”jM)�”}”(hŒ!create and wake a kthread worker.”h]”hŒ!create and wake a kthread worker.”…”�”}”(hjì‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KÛhjè‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jú‹h´KÛhj}Dh²hubj„)�”}”(hX.**Parameters** ``flags`` flags modifying the default behavior of the worker ``namefmt`` printf-style name for the thread. ``...`` variable arguments **Description** Convenient wrapper for kthread_create_worker() followed by wake_up_process(). Returns the kthread_worker or ERR_PTR(-ENOMEM).”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KßhjŒubj¤)�”}”(hhh]”(j©)�”}”(hŒ=``flags`` flags modifying the default behavior of the worker ”h]”(j¯)�”}”(hŒ ``flags``”h]”jS)�”}”(hj&Œh]”hŒflags”…”�”}”(hj(Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj$Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KÜhj ŒubjÉ)�”}”(hhh]”jM)�”}”(hŒ2flags modifying the default behavior of the worker”h]”hŒ2flags modifying the default behavior of the worker”…”�”}”(hj?Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``namefmt`` printf-style name for the thread. ”h]”(j¯)�”}”(hŒ ``namefmt``”h]”jS)�”}”(hj_Œh]”hŒnamefmt”…”�”}”(hjaŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj]Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KÝhjYŒubjÉ)�”}”(hhh]”jM)�”}”(hŒ!printf-style name for the thread.”h]”hŒ!printf-style name for the thread.”…”�”}”(hjxŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jtŒh´KÝhjuŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjYŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jtŒh´KÝhjŒubj©)�”}”(hŒ``...`` variable arguments ”h]”(j¯)�”}”(hŒ``...``”h]”jS)�”}”(hj˜Œh]”hŒ...”…”�”}”(hjšŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj–Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´Khj’ŒubjÉ)�”}”(hhh]”jM)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hj±Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j­Œh´Khj®Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj’Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j­Œh´KhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjŒubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KhjŒubjM)�”}”(hŒ~Convenient wrapper for kthread_create_worker() followed by wake_up_process(). Returns the kthread_worker or ERR_PTR(-ENOMEM).”h]”hŒ~Convenient wrapper for kthread_create_worker() followed by wake_up_process(). Returns the kthread_worker or ERR_PTR(-ENOMEM).”…”�”}”(hjéŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KßhjŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&kthread_run_worker_on_cpu (C function)”Œc.kthread_run_worker_on_cpu”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒestruct kthread_worker * kthread_run_worker_on_cpu (int cpu, unsigned int flags, const char namefmt[])”h]”hù)�”}”(hŒcstruct kthread_worker *kthread_run_worker_on_cpu(int cpu, unsigned int flags, const char namefmt[])”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KðubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�h²hh³j%�h´Kðubh)�”}”(hhh]”j)�”}”(hŒkthread_worker”h]”hŒkthread_worker”…”�”}”(hj7�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j9�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒkthread_run_worker_on_cpu”sbŒc.kthread_run_worker_on_cpu”†”asbuh1hhj�h²hh³j%�h´KðubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�h²hh³j%�h´Kðubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�h²hh³j%�h´Kðubhÿ)�”}”(hŒkthread_run_worker_on_cpu”h]”j)�”}”(hjU�h]”hŒkthread_run_worker_on_cpu”…”�”}”(hjw�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�h²hh³j%�h´Kðubj4)�”}”(hŒ3(int cpu, unsigned int flags, const char namefmt[])”h]”(j:)�”}”(hŒint cpu”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj’�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŽ�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽ�ubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hj®�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŠ�ubj:)�”}”(hŒunsigned int flags”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÇ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÃ�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÃ�ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjã�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÃ�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÃ�ubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÿ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŠ�ubj:)�”}”(hŒconst char namefmt[]”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj3Žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAŽh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽubj)�”}”(hŒnamefmt”h]”hŒnamefmt”…”�”}”(hjOŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽubj”)�”}”(hŒ[”h]”hŒ[”…”�”}”(hj]Žh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŽubj”)�”}”(hŒ]”h]”hŒ]”…”�”}”(hjkŽh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŠ�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�h²hh³j%�h´Kðubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�h²hh³j%�h´Kðubah}”(h]”j �ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j%�h´Kðhj �h²hubj4)�”}”(hhh]”jM)�”}”(hŒ+create and wake a cpu bound kthread worker.”h]”hŒ+create and wake a cpu bound kthread worker.”…”�”}”(hj•Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´Kðhj’Žh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj �h²hh³j%�h´Kðubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj­ŽjHj­ŽjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXŽ**Parameters** ``int cpu`` CPU number ``unsigned int flags`` flags modifying the default behavior of the worker ``const char namefmt[]`` printf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number. **Description** Convenient wrapper for kthread_create_worker_on_cpu() followed by wake_up_process(). Returns the kthread_worker or ERR_PTR(-ENOMEM).”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´Kôhj±Žubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int cpu`` CPU number ”h]”(j¯)�”}”(hŒ ``int cpu``”h]”jS)�”}”(hjÖŽh]”hŒint cpu”…”�”}”(hjØŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KñhjÐŽubjÉ)�”}”(hhh]”jM)�”}”(hŒ CPU number”h]”hŒ CPU number”…”�”}”(hjïŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒJ``unsigned int flags`` flags modifying the default behavior of the worker ”h]”(j¯)�”}”(hŒ``unsigned int flags``”h]”jS)�”}”(hj�h]”hŒunsigned int flags”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´Kòhj �ubjÉ)�”}”(hhh]”jM)�”}”(hŒ2flags modifying the default behavior of the worker”h]”hŒ2flags modifying the default behavior of the worker”…”�”}”(hj(�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ|``const char namefmt[]`` printf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number. ”h]”(j¯)�”}”(hŒ``const char namefmt[]``”h]”jS)�”}”(hjH�h]”hŒconst char namefmt[]”…”�”}”(hjJ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjF�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KôhjB�ubjÉ)�”}”(hhh]”jM)�”}”(hŒbprintf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number.”h]”hŒfprintf-style name for the thread. Format is restricted to “name.*``u``â€�. Code fills in cpu number.”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´Kóhj^�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjB�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j]�h´KôhjÍŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj±ŽubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´Köhj±ŽubjM)�”}”(hŒ…Convenient wrapper for kthread_create_worker_on_cpu() followed by wake_up_process(). Returns the kthread_worker or ERR_PTR(-ENOMEM).”h]”hŒ…Convenient wrapper for kthread_create_worker_on_cpu() followed by wake_up_process(). Returns the kthread_worker or ERR_PTR(-ENOMEM).”…”�”}”(hjš�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´Köhj±Žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ kthread_should_stop (C function)”Œc.kthread_should_stop”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒbool kthread_should_stop (void)”h]”hù)�”}”(hŒbool kthread_should_stop(void)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjÉ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÅ�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅ�h²hh³jÖ�h´KŽubhÿ)�”}”(hŒkthread_should_stop”h]”j)�”}”(hŒkthread_should_stop”h]”hŒkthread_should_stop”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjå�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÅ�h²hh³jÖ�h´KŽubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjý�ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÅ�h²hh³jÖ�h´KŽubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÁ�h²hh³jÖ�h´KŽubah}”(h]”j¼�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÖ�h´KŽhj¾�h²hubj4)�”}”(hhh]”jM)�”}”(hŒshould this kthread return now?”h]”hŒshould this kthread return now?”…”�”}”(hj/�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KŽhj,�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¾�h²hh³jÖ�h´KŽubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjG�jHjG�jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒñ**Parameters** ``void`` no arguments **Description** When someone calls kthread_stop() on your kthread, it will be woken and this will return true. You should then return, and your return value will be passed through to kthread_stop().”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjQ�h]”hŒ Parameters”…”�”}”(hjS�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjO�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K’hjK�ubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hjp�h]”hŒvoid”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjn�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Khjj�ubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj‰�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j…�h´Khj†�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…�h´Khjg�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjK�ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KhjK�ubjM)�”}”(hŒ·When someone calls kthread_stop() on your kthread, it will be woken and this will return true. You should then return, and your return value will be passed through to kthread_stop().”h]”hŒ·When someone calls kthread_stop() on your kthread, it will be woken and this will return true. You should then return, and your return value will be passed through to kthread_stop().”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K�hjK�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ kthread_should_park (C function)”Œc.kthread_should_park”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒbool kthread_should_park (void)”h]”hù)�”}”(hŒbool kthread_should_park(void)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjð�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjì�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjì�h²hh³jý�h´K ubhÿ)�”}”(hŒkthread_should_park”h]”j)�”}”(hŒkthread_should_park”h]”hŒkthread_should_park”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ‘ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjì�h²hh³jý�h´K ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj(‘ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj$‘ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjì�h²hh³jý�h´K ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjè�h²hh³jý�h´K ubah}”(h]”jã�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jý�h´K hjå�h²hubj4)�”}”(hhh]”jM)�”}”(hŒshould this kthread park now?”h]”hŒshould this kthread park now?”…”�”}”(hjV‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K hjS‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjå�h²hh³jý�h´K ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjn‘jHjn‘jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXƒ**Parameters** ``void`` no arguments **Description** When someone calls kthread_park() on your kthread, it will be woken and this will return true. You should then do the necessary cleanup and call kthread_parkme() Similar to kthread_should_stop(), but this keeps the thread alive and in a park position. kthread_unpark() "restarts" the thread and calls the thread function again.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K¤hjr‘ubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj—‘h]”hŒvoid”…”�”}”(hj™‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj•‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Khj‘‘ubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj°‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¬‘h´Khj­‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‘‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¬‘h´KhjŽ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjr‘ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Khjr‘ubjM)�”}”(hŒ¢When someone calls kthread_park() on your kthread, it will be woken and this will return true. You should then do the necessary cleanup and call kthread_parkme()”h]”hŒ¢When someone calls kthread_park() on your kthread, it will be woken and this will return true. You should then do the necessary cleanup and call kthread_parkme()”…”�”}”(hjè‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K¡hjr‘ubjM)�”}”(hŒ¥Similar to kthread_should_stop(), but this keeps the thread alive and in a park position. kthread_unpark() "restarts" the thread and calls the thread function again.”h]”hŒ©Similar to kthread_should_stop(), but this keeps the thread alive and in a park position. kthread_unpark() “restartsâ€� the thread and calls the thread function again.”…”�”}”(hj÷‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K¥hjr‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*kthread_freezable_should_stop (C function)”Œc.kthread_freezable_should_stop”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5bool kthread_freezable_should_stop (bool *was_frozen)”h]”hù)�”}”(hŒ4bool kthread_freezable_should_stop(bool *was_frozen)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj&’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj"’h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4’h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"’h²hh³j3’h´K»ubhÿ)�”}”(hŒkthread_freezable_should_stop”h]”j)�”}”(hŒkthread_freezable_should_stop”h]”hŒkthread_freezable_should_stop”…”�”}”(hjF’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB’ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj"’h²hh³j3’h´K»ubj4)�”}”(hŒ(bool *was_frozen)”h]”j:)�”}”(hŒbool *was_frozen”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjb’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj^’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo’h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj^’ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj}’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj^’ubj)�”}”(hŒ was_frozen”h]”hŒ was_frozen”…”�”}”(hjŠ’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZ’ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj"’h²hh³j3’h´K»ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj’h²hh³j3’h´K»ubah}”(h]”j’ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j3’h´K»hj’h²hubj4)�”}”(hhh]”jM)�”}”(hŒ)should this freezable kthread return now?”h]”hŒ)should this freezable kthread return now?”…”�”}”(hj´’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K»hj±’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj’h²hh³j3’h´K»ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÌ’jHjÌ’jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXn**Parameters** ``bool *was_frozen`` optional out parameter, indicates whether ``current`` was frozen **Description** kthread_should_stop() for freezable kthreads, which will enter refrigerator if necessary. This function is safe from kthread_stop() / freezer deadlock and freezable kthreads should use this function instead of calling try_to_freeze() directly.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K¿hjÐ’ubj¤)�”}”(hhh]”j©)�”}”(hŒV``bool *was_frozen`` optional out parameter, indicates whether ``current`` was frozen ”h]”(j¯)�”}”(hŒ``bool *was_frozen``”h]”jS)�”}”(hjõ’h]”hŒbool *was_frozen”…”�”}”(hj÷’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjó’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K¼hjï’ubjÉ)�”}”(hhh]”jM)�”}”(hŒ@optional out parameter, indicates whether ``current`` was frozen”h]”(hŒ*optional out parameter, indicates whether ”…”�”}”(hj“h²hh³Nh´NubjS)�”}”(hŒ ``current``”h]”hŒcurrent”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj“ubhŒ was frozen”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Ð’ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjB“h]”hŒ Description”…”�”}”(hjD“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K¾hjÐ’ubjM)�”}”(hŒôkthread_should_stop() for freezable kthreads, which will enter refrigerator if necessary. This function is safe from kthread_stop() / freezer deadlock and freezable kthreads should use this function instead of calling try_to_freeze() directly.”h]”hŒôkthread_should_stop() for freezable kthreads, which will enter refrigerator if necessary. This function is safe from kthread_stop() / freezer deadlock and freezable kthreads should use this function instead of calling try_to_freeze() directly.”…”�”}”(hjX“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K½hjÐ’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_func (C function)”Œc.kthread_func”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.void * kthread_func (struct task_struct *task)”h]”hù)�”}”(hŒ,void *kthread_func(struct task_struct *task)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjƒ“h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KÔubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–“h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjƒ“h²hh³j•“h´KÔubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¤“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjƒ“h²hh³j•“h´KÔubhÿ)�”}”(hŒ kthread_func”h]”j)�”}”(hŒ kthread_func”h]”hŒ kthread_func”…”�”}”(hjµ“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±“ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjƒ“h²hh³j•“h´KÔubj4)�”}”(hŒ(struct task_struct *task)”h]”j:)�”}”(hŒstruct task_struct *task”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÑ“h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÍ“ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ“h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍ“ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hjï“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjì“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jñ“Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj·“sbŒc.kthread_func”†”asbuh1hhjÍ“ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍ“ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍ“ubj)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj*”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍ“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÉ“ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjƒ“h²hh³j•“h´KÔubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj“h²hh³j•“h´KÔubah}”(h]”jz“ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j•“h´KÔhj|“h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1return the function specified on kthread creation”h]”hŒ1return the function specified on kthread creation”…”�”}”(hjT”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KÔhjQ”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj|“h²hh³j•“h´KÔubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjl”jHjl”jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒ„**Parameters** ``struct task_struct *task`` kthread task in question **Description** Returns NULL if the task is not a kthread.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjv”h]”hŒ Parameters”…”�”}”(hjx”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KØhjp”ubj¤)�”}”(hhh]”j©)�”}”(hŒ6``struct task_struct *task`` kthread task in question ”h]”(j¯)�”}”(hŒ``struct task_struct *task``”h]”jS)�”}”(hj•”h]”hŒstruct task_struct *task”…”�”}”(hj—”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj“”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KÕhj�”ubjÉ)�”}”(hhh]”jM)�”}”(hŒkthread task in question”h]”hŒkthread task in question”…”�”}”(hj®”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjp”ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K×hjp”ubjM)�”}”(hŒ*Returns NULL if the task is not a kthread.”h]”hŒ*Returns NULL if the task is not a kthread.”…”�”}”(hjæ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KÖhjp”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_data (C function)”Œc.kthread_data”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.void * kthread_data (struct task_struct *task)”h]”hù)�”}”(hŒ,void *kthread_data(struct task_struct *task)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj•h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$•h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj•h²hh³j#•h´Kãubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj2•h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj•h²hh³j#•h´Kãubhÿ)�”}”(hŒ kthread_data”h]”j)�”}”(hŒ kthread_data”h]”hŒ kthread_data”…”�”}”(hjC•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?•ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj•h²hh³j#•h´Kãubj4)�”}”(hŒ(struct task_struct *task)”h]”j:)�”}”(hŒstruct task_struct *task”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj_•h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj[•ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl•h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[•ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj}•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j•Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjE•sbŒc.kthread_data”†”asbuh1hhj[•ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�•h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[•ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj«•h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj[•ubj)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj¸•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjW•ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj•h²hh³j#•h´Kãubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj •h²hh³j#•h´Kãubah}”(h]”j•ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j#•h´Kãhj •h²hubj4)�”}”(hhh]”jM)�”}”(hŒ/return data value specified on kthread creation”h]”hŒ/return data value specified on kthread creation”…”�”}”(hjâ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Kãhjß•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj •h²hh³j#•h´Kãubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjú•jHjú•jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒø**Parameters** ``struct task_struct *task`` kthread task in question **Description** Return the data value specified when kthread **task** was created. The caller is responsible for ensuring the validity of **task** when calling this function.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Kçhjþ•ubj¤)�”}”(hhh]”j©)�”}”(hŒ6``struct task_struct *task`` kthread task in question ”h]”(j¯)�”}”(hŒ``struct task_struct *task``”h]”jS)�”}”(hj#–h]”hŒstruct task_struct *task”…”�”}”(hj%–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Kähj–ubjÉ)�”}”(hhh]”jM)�”}”(hŒkthread task in question”h]”hŒkthread task in question”…”�”}”(hj<–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j8–h´Kähj9–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j8–h´Kähj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjþ•ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Kæhjþ•ubjM)�”}”(hŒžReturn the data value specified when kthread **task** was created. The caller is responsible for ensuring the validity of **task** when calling this function.”h]”(hŒ-Return the data value specified when kthread ”…”�”}”(hjt–h²hh³Nh´NubjŽ)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hj|–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt–ubhŒE was created. The caller is responsible for ensuring the validity of ”…”�”}”(hjt–h²hh³Nh´NubjŽ)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hjŽ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt–ubhŒ when calling this function.”…”�”}”(hjt–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Kåhjþ•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&kthread_complete_and_exit (C function)”Œc.kthread_complete_and_exit”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒNvoid __noreturn kthread_complete_and_exit (struct completion *comp, long code)”h]”hù)�”}”(hŒMvoid __noreturn kthread_complete_and_exit(struct completion *comp, long code)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÇ–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÖh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖh²hh³jÕ–h´M6ubhŒ __noreturn”…”�”}”(hjÖh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖh²hh³jÕ–h´M6ubhÿ)�”}”(hŒkthread_complete_and_exit”h]”j)�”}”(hŒkthread_complete_and_exit”h]”hŒkthread_complete_and_exit”…”�”}”(hjú–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjö–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÖh²hh³jÕ–h´M6ubj4)�”}”(hŒ$(struct completion *comp, long code)”h]”(j:)�”}”(hŒstruct completion *comp”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj—ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#—h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj—ubh)�”}”(hhh]”j)�”}”(hŒ completion”h]”hŒ completion”…”�”}”(hj4—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j6—Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjü–sbŒc.kthread_complete_and_exit”†”asbuh1hhj—ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT—h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj—ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjb—h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj—ubj)�”}”(hŒcomp”h]”hŒcomp”…”�”}”(hjo—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj—ubj:)�”}”(hŒ long code”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjˆ—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj„—ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–—h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„—ubj)�”}”(hŒcode”h]”hŒcode”…”�”}”(hj¤—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj—ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÖh²hh³jÕ–h´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¿–h²hh³jÕ–h´M6ubah}”(h]”jº–ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÕ–h´M6hj¼–h²hubj4)�”}”(hhh]”jM)�”}”(hŒExit the current kthread.”h]”hŒExit the current kthread.”…”�”}”(hjΗh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M6hjË—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¼–h²hh³jÕ–h´M6ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjæ—jHjæ—jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXb**Parameters** ``struct completion *comp`` Completion to complete ``long code`` The integer value to return to kthread_stop(). **Description** If present, complete **comp** and then return code to kthread_stop(). A kernel thread whose module may be removed after the completion of **comp** can use this function to exit safely. Does not return.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M:hjê—ubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``struct completion *comp`` Completion to complete ”h]”(j¯)�”}”(hŒ``struct completion *comp``”h]”jS)�”}”(hj˜h]”hŒstruct completion *comp”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M7hj ˜ubjÉ)�”}”(hhh]”jM)�”}”(hŒCompletion to complete”h]”hŒCompletion to complete”…”�”}”(hj(˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j$˜h´M7hj%˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j$˜h´M7hj˜ubj©)�”}”(hŒ=``long code`` The integer value to return to kthread_stop(). ”h]”(j¯)�”}”(hŒ ``long code``”h]”jS)�”}”(hjH˜h]”hŒ long code”…”�”}”(hjJ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjF˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M8hjB˜ubjÉ)�”}”(hhh]”jM)�”}”(hŒ.The integer value to return to kthread_stop().”h]”hŒ.The integer value to return to kthread_stop().”…”�”}”(hja˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j]˜h´M8hj^˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjB˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j]˜h´M8hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjê—ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M:hjê—ubjM)�”}”(hŒEIf present, complete **comp** and then return code to kthread_stop().”h]”(hŒIf present, complete ”…”�”}”(hj™˜h²hh³Nh´NubjŽ)�”}”(hŒ**comp**”h]”hŒcomp”…”�”}”(hj¡˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™˜ubhŒ( and then return code to kthread_stop().”…”�”}”(hj™˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M9hjê—ubjM)�”}”(hŒrA kernel thread whose module may be removed after the completion of **comp** can use this function to exit safely.”h]”(hŒDA kernel thread whose module may be removed after the completion of ”…”�”}”(hjº˜h²hh³Nh´NubjŽ)�”}”(hŒ**comp**”h]”hŒcomp”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjº˜ubhŒ& can use this function to exit safely.”…”�”}”(hjº˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M;hjê—ubjM)�”}”(hŒDoes not return.”h]”hŒDoes not return.”…”�”}”(hjÛ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M>hjê—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#kthread_create_on_node (C function)”Œc.kthread_create_on_node”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒzstruct task_struct * kthread_create_on_node (int (*threadfn)(void *data), void *data, int node, const char namefmt[], ...)”h]”hù)�”}”(hŒxstruct task_struct *kthread_create_on_node(int (*threadfn)(void *data), void *data, int node, const char namefmt[], ...)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™h²hh³j™h´Mubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj)™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j+™Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒkthread_create_on_node”sbŒc.kthread_create_on_node”†”asbuh1hhj™h²hh³j™h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™h²hh³j™h´Mubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjX™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj™h²hh³j™h´Mubhÿ)�”}”(hŒkthread_create_on_node”h]”j)�”}”(hjG™h]”hŒkthread_create_on_node”…”�”}”(hji™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje™ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj™h²hh³j™h´Mubj4)�”}”(hŒN(int (*threadfn)(void *data), void *data, int node, const char namefmt[], ...)”h]”(j:)�”}”(hŒint (*threadfn)(void *data)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj„™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj€™ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€™ubj”)�”}”(hjsh]”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€™ubj)�”}”(hŒthreadfn”h]”hŒthreadfn”…”�”}”(hjº™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€™ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjÈ™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€™ubj”)�”}”(hjsh]”hŒ(”…”�”}”(hjÕ™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€™ubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjâ™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj€™ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€™ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjþ™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€™ubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€™ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|™ubj:)�”}”(hŒ void *data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj1šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj-šubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?šh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj-šubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjMšh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj-šubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjZšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|™ubj:)�”}”(hŒint node”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjsšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjošubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�šh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjošubj)�”}”(hŒnode”h]”hŒnode”…”�”}”(hj�šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjošubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|™ubj:)�”}”(hŒconst char namefmt[]”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj¨šh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¤šubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤šubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¤šubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤šubj)�”}”(hŒnamefmt”h]”hŒnamefmt”…”�”}”(hjßšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤šubj”)�”}”(hj_Žh]”hŒ[”…”�”}”(hjíšh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¤šubj”)�”}”(hjmŽh]”hŒ]”…”�”}”(hjúšh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¤šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|™ubj:)�”}”(hŒ...”h]”j”)�”}”(hŒ...”h]”hŒ...”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj›ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|™ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj™h²hh³j™h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj™h²hh³j™h´Mubah}”(h]”jý˜ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j™h´Mhjÿ˜h²hubj4)�”}”(hhh]”jM)�”}”(hŒcreate a kthread.”h]”hŒcreate a kthread.”…”�”}”(hj<›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj9›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÿ˜h²hh³j™h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjT›jHjT›jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX}**Parameters** ``int (*threadfn)(void *data)`` the function to run until signal_pending(current). ``void *data`` data ptr for **threadfn**. ``int node`` task and thread structures for the thread are allocated on this node ``const char namefmt[]`` printf-style name for the thread. ``...`` variable arguments **Description** This helper function creates and names a kernel thread. The thread will be stopped: use wake_up_process() to start it. See also kthread_run(). The new thread has SCHED_NORMAL policy and is affine to all CPUs. If thread is going to be bound on a particular cpu, give its node in **node**, to get NUMA affinity for kthread stack, or else give NUMA_NO_NODE. When woken, the thread will run **threadfn\(\)** with **data** as its argument. **threadfn\(\)** can either return directly if it is a standalone thread for which no one will call kthread_stop(), or return when 'kthread_should_stop()' is true (which means kthread_stop() has been called). The return value should be zero or a negative error number; it will be passed to kthread_stop(). Returns a task_struct or ERR_PTR(-ENOMEM) or ERR_PTR(-EINTR).”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjX›ubj¤)�”}”(hhh]”(j©)�”}”(hŒS``int (*threadfn)(void *data)`` the function to run until signal_pending(current). ”h]”(j¯)�”}”(hŒ``int (*threadfn)(void *data)``”h]”jS)�”}”(hj}›h]”hŒint (*threadfn)(void *data)”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhjw›ubjÉ)�”}”(hhh]”jM)�”}”(hŒ2the function to run until signal_pending(current).”h]”hŒ2the function to run until signal_pending(current).”…”�”}”(hj–›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j’›h´Mhj“›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjw›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’›h´Mhjt›ubj©)�”}”(hŒ*``void *data`` data ptr for **threadfn**. ”h]”(j¯)�”}”(hŒ``void *data``”h]”jS)�”}”(hj¶›h]”hŒ void *data”…”�”}”(hj¸›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj´›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj°›ubjÉ)�”}”(hhh]”jM)�”}”(hŒdata ptr for **threadfn**.”h]”(hŒ data ptr for ”…”�”}”(hjÏ›h²hh³Nh´NubjŽ)�”}”(hŒ **threadfn**”h]”hŒthreadfn”…”�”}”(hj×›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ›ubhŒ.”…”�”}”(hjÏ›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jË›h´MhjÌ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj°›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jË›h´Mhjt›ubj©)�”}”(hŒR``int node`` task and thread structures for the thread are allocated on this node ”h]”(j¯)�”}”(hŒ ``int node``”h]”jS)�”}”(hjœh]”hŒint node”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÿ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhjû›ubjÉ)�”}”(hhh]”jM)�”}”(hŒDtask and thread structures for the thread are allocated on this node”h]”hŒDtask and thread structures for the thread are allocated on this node”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jœh´Mhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjû›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jœh´Mhjt›ubj©)�”}”(hŒ;``const char namefmt[]`` printf-style name for the thread. ”h]”(j¯)�”}”(hŒ``const char namefmt[]``”h]”jS)�”}”(hj:œh]”hŒconst char namefmt[]”…”�”}”(hj<œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8œubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj4œubjÉ)�”}”(hhh]”jM)�”}”(hŒ!printf-style name for the thread.”h]”hŒ!printf-style name for the thread.”…”�”}”(hjSœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jOœh´MhjPœubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj4œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jOœh´Mhjt›ubj©)�”}”(hŒ``...`` variable arguments ”h]”(j¯)�”}”(hŒ``...``”h]”jS)�”}”(hjsœh]”hŒ...”…”�”}”(hjuœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjqœubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KhjmœubjÉ)�”}”(hhh]”jM)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjŒœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jˆœh´Khj‰œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjmœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆœh´Khjt›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjX›ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KhjX›ubjM)�”}”(hŒÓThis helper function creates and names a kernel thread. The thread will be stopped: use wake_up_process() to start it. See also kthread_run(). The new thread has SCHED_NORMAL policy and is affine to all CPUs.”h]”hŒÓThis helper function creates and names a kernel thread. The thread will be stopped: use wake_up_process() to start it. See also kthread_run(). The new thread has SCHED_NORMAL policy and is affine to all CPUs.”…”�”}”(hjÄœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjX›ubjM)�”}”(hXIf thread is going to be bound on a particular cpu, give its node in **node**, to get NUMA affinity for kthread stack, or else give NUMA_NO_NODE. When woken, the thread will run **threadfn\(\)** with **data** as its argument. **threadfn\(\)** can either return directly if it is a standalone thread for which no one will call kthread_stop(), or return when 'kthread_should_stop()' is true (which means kthread_stop() has been called). The return value should be zero or a negative error number; it will be passed to kthread_stop().”h]”(hŒEIf thread is going to be bound on a particular cpu, give its node in ”…”�”}”(hjÓœh²hh³Nh´NubjŽ)�”}”(hŒ**node**”h]”hŒnode”…”�”}”(hjÛœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓœubhŒe, to get NUMA affinity for kthread stack, or else give NUMA_NO_NODE. When woken, the thread will run ”…”�”}”(hjÓœh²hh³Nh´NubjŽ)�”}”(hŒ**threadfn\(\)**”h]”hŒ threadfn()”…”�”}”(hjíœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓœubhŒ with ”…”�”}”(hjÓœh²hh³Nh´NubjŽ)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjÿœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓœubhŒ as its argument. ”…”�”}”(hjÓœh²hh³Nh´NubjŽ)�”}”(hŒ**threadfn\(\)**”h]”hŒ threadfn()”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓœubhX& can either return directly if it is a standalone thread for which no one will call kthread_stop(), or return when ‘kthread_should_stop()’ is true (which means kthread_stop() has been called). The return value should be zero or a negative error number; it will be passed to kthread_stop().”…”�”}”(hjÓœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjX›ubjM)�”}”(hŒ=Returns a task_struct or ERR_PTR(-ENOMEM) or ERR_PTR(-EINTR).”h]”hŒ=Returns a task_struct or ERR_PTR(-ENOMEM) or ERR_PTR(-EINTR).”…”�”}”(hj*�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M$hjX›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_bind (C function)”Œc.kthread_bind”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;void kthread_bind (struct task_struct *p, unsigned int cpu)”h]”hù)�”}”(hŒ:void kthread_bind(struct task_struct *p, unsigned int cpu)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjU�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MQubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjU�h²hh³jg�h´MQubhÿ)�”}”(hŒ kthread_bind”h]”j)�”}”(hŒ kthread_bind”h]”hŒ kthread_bind”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjv�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjU�h²hh³jg�h´MQubj4)�”}”(hŒ)(struct task_struct *p, unsigned int cpu)”h]”(j:)�”}”(hŒstruct task_struct *p”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj–�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”u•h1j>hj’�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj’�ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj´�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¶�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj|�sbŒc.kthread_bind”†”asbuh1hhj’�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj’�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjâ�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj’�ubj)�”}”(hj h]”hŒp”…”�”}”(hjï�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽ�ubj:)�”}”(hŒunsigned int cpu”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjžubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjžubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj#žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjžubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjžubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hj?žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽ�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjU�h²hh³jg�h´MQubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjQ�h²hh³jg�h´MQubah}”(h]”jL�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jg�h´MQhjN�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%bind a just-created kthread to a cpu.”h]”hŒ%bind a just-created kthread to a cpu.”…”�”}”(hjižh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MQhjfžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjN�h²hh³jg�h´MQubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�žjHj�žjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXh**Parameters** ``struct task_struct *p`` thread created by kthread_create(). ``unsigned int cpu`` cpu (might not be online, must be possible) for **k** to run on. **Description** This function is equivalent to set_cpus_allowed(), except that **cpu** doesn't need to be online, and the thread must be stopped (i.e., just returned from kthread_create()).”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MUhj…žubj¤)�”}”(hhh]”(j©)�”}”(hŒ>``struct task_struct *p`` thread created by kthread_create(). ”h]”(j¯)�”}”(hŒ``struct task_struct *p``”h]”jS)�”}”(hjªžh]”hŒstruct task_struct *p”…”�”}”(hj¬žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¨žubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MRhj¤žubjÉ)�”}”(hhh]”jM)�”}”(hŒ#thread created by kthread_create().”h]”hŒ#thread created by kthread_create().”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¿žh´MRhjÀžubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¤žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¿žh´MRhj¡žubj©)�”}”(hŒV``unsigned int cpu`` cpu (might not be online, must be possible) for **k** to run on. ”h]”(j¯)�”}”(hŒ``unsigned int cpu``”h]”jS)�”}”(hjãžh]”hŒunsigned int cpu”…”�”}”(hjåžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjážubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MShjÝžubjÉ)�”}”(hhh]”jM)�”}”(hŒ@cpu (might not be online, must be possible) for **k** to run on.”h]”(hŒ0cpu (might not be online, must be possible) for ”…”�”}”(hjüžh²hh³Nh´NubjŽ)�”}”(hŒ**k**”h]”hŒk”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüžubhŒ to run on.”…”�”}”(hjüžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jøžh´MShjùžubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÝžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jøžh´MShj¡žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj…žubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj0Ÿh]”hŒ Description”…”�”}”(hj2Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MUhj…žubjM)�”}”(hŒ­This function is equivalent to set_cpus_allowed(), except that **cpu** doesn't need to be online, and the thread must be stopped (i.e., just returned from kthread_create()).”h]”(hŒ?This function is equivalent to set_cpus_allowed(), except that ”…”�”}”(hjFŸh²hh³Nh´NubjŽ)�”}”(hŒ**cpu**”h]”hŒcpu”…”�”}”(hjNŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFŸubhŒi doesn’t need to be online, and the thread must be stopped (i.e., just returned from kthread_create()).”…”�”}”(hjFŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MUhj…žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"kthread_create_on_cpu (C function)”Œc.kthread_create_on_cpu”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ{struct task_struct * kthread_create_on_cpu (int (*threadfn)(void *data), void *data, unsigned int cpu, const char *namefmt)”h]”hù)�”}”(hŒystruct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data), void *data, unsigned int cpu, const char *namefmt)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‡Ÿh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjƒŸh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjƒŸh²hh³j”Ÿh´Mbubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj¦Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¨ŸŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒkthread_create_on_cpu”sbŒc.kthread_create_on_cpu”†”asbuh1hhjƒŸh²hh³j”Ÿh´MbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇŸh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjƒŸh²hh³j”Ÿh´Mbubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÕŸh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjƒŸh²hh³j”Ÿh´Mbubhÿ)�”}”(hŒkthread_create_on_cpu”h]”j)�”}”(hjÄŸh]”hŒkthread_create_on_cpu”…”�”}”(hjæŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâŸubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjƒŸh²hh³j”Ÿh´Mbubj4)�”}”(hŒP(int (*threadfn)(void *data), void *data, unsigned int cpu, const char *namefmt)”h]”(j:)�”}”(hŒint (*threadfn)(void *data)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjýŸubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjýŸubj”)�”}”(hjsh]”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ýŸubj)�”}”(hŒthreadfn”h]”hŒthreadfn”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýŸubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjýŸubj”)�”}”(hjsh]”hŒ(”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjýŸubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjýŸubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjýŸubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjýŸubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýŸubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjýŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjùŸubj:)�”}”(hŒ void *data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjª ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjª ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjª ubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjùŸubj:)�”}”(hŒunsigned int cpu”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjì ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjì ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjì ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjì ubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hj(¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjì ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjùŸubj:)�”}”(hŒconst char *namefmt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjA¡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj=¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj=¡ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj\¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj=¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj=¡ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjx¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj=¡ubj)�”}”(hŒnamefmt”h]”hŒnamefmt”…”�”}”(hj…¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjùŸubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjƒŸh²hh³j”Ÿh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŸh²hh³j”Ÿh´Mbubah}”(h]”jzŸah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j”Ÿh´Mbhj|Ÿh²hubj4)�”}”(hhh]”jM)�”}”(hŒCreate a cpu bound kthread”h]”hŒCreate a cpu bound kthread”…”�”}”(hj¯¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mbhj¬¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj|Ÿh²hh³j”Ÿh´Mbubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÇ¡jHjÇ¡jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXŸ**Parameters** ``int (*threadfn)(void *data)`` the function to run until signal_pending(current). ``void *data`` data ptr for **threadfn**. ``unsigned int cpu`` The cpu on which the thread should be bound, ``const char *namefmt`` printf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number. **Description** This helper function creates and names a kernel thread”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MfhjË¡ubj¤)�”}”(hhh]”(j©)�”}”(hŒS``int (*threadfn)(void *data)`` the function to run until signal_pending(current). ”h]”(j¯)�”}”(hŒ``int (*threadfn)(void *data)``”h]”jS)�”}”(hjð¡h]”hŒint (*threadfn)(void *data)”…”�”}”(hjò¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjî¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mchjê¡ubjÉ)�”}”(hhh]”jM)�”}”(hŒ2the function to run until signal_pending(current).”h]”hŒ2the function to run until signal_pending(current).”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¢h´Mchj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjê¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¢h´Mchjç¡ubj©)�”}”(hŒ*``void *data`` data ptr for **threadfn**. ”h]”(j¯)�”}”(hŒ``void *data``”h]”jS)�”}”(hj)¢h]”hŒ void *data”…”�”}”(hj+¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj'¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mdhj#¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒdata ptr for **threadfn**.”h]”(hŒ data ptr for ”…”�”}”(hjB¢h²hh³Nh´NubjŽ)�”}”(hŒ **threadfn**”h]”hŒthreadfn”…”�”}”(hjJ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjB¢ubhŒ.”…”�”}”(hjB¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j>¢h´Mdhj?¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj#¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j>¢h´Mdhjç¡ubj©)�”}”(hŒB``unsigned int cpu`` The cpu on which the thread should be bound, ”h]”(j¯)�”}”(hŒ``unsigned int cpu``”h]”jS)�”}”(hjt¢h]”hŒunsigned int cpu”…”�”}”(hjv¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjr¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mehjn¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒ,The cpu on which the thread should be bound,”h]”hŒ,The cpu on which the thread should be bound,”…”�”}”(hj�¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‰¢h´MehjŠ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjn¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‰¢h´Mehjç¡ubj©)�”}”(hŒ{``const char *namefmt`` printf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number. ”h]”(j¯)�”}”(hŒ``const char *namefmt``”h]”jS)�”}”(hj­¢h]”hŒconst char *namefmt”…”�”}”(hj¯¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj«¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mghj§¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒbprintf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number.”h]”hŒfprintf-style name for the thread. Format is restricted to “name.*``u``â€�. Code fills in cpu number.”…”�”}”(hjÆ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mfhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj§¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¢h´Mghjç¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjË¡ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MihjË¡ubjM)�”}”(hŒ6This helper function creates and names a kernel thread”h]”hŒ6This helper function creates and names a kernel thread”…”�”}”(hjÿ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MihjË¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_unpark (C function)”Œc.kthread_unpark”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void kthread_unpark (struct task_struct *k)”h]”hù)�”}”(hŒ*void kthread_unpark(struct task_struct *k)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj*£h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M—ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*£h²hh³j<£h´M—ubhÿ)�”}”(hŒkthread_unpark”h]”j)�”}”(hŒkthread_unpark”h]”hŒkthread_unpark”…”�”}”(hjO£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK£ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj*£h²hh³j<£h´M—ubj4)�”}”(hŒ(struct task_struct *k)”h]”j:)�”}”(hŒstruct task_struct *k”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjk£h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjg£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjg£ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj‰£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‹£Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjQ£sbŒc.kthread_unpark”†”asbuh1hhjg£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjg£ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj·£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjg£ubj)�”}”(hjKh]”hŒk”…”�”}”(hjÄ£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjc£ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj*£h²hh³j<£h´M—ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj&£h²hh³j<£h´M—ubah}”(h]”j!£ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j<£h´M—hj#£h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,unpark a thread created by kthread_create().”h]”hŒ,unpark a thread created by kthread_create().”…”�”}”(hjí£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M—hjê£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj#£h²hh³j<£h´M—ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¤jHj¤jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒý**Parameters** ``struct task_struct *k`` thread created by kthread_create(). **Description** Sets kthread_should_park() for **k** to return false, wakes it, and waits for it to return. If the thread is marked percpu then its bound to the cpu again.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M›hj ¤ubj¤)�”}”(hhh]”j©)�”}”(hŒ>``struct task_struct *k`` thread created by kthread_create(). ”h]”(j¯)�”}”(hŒ``struct task_struct *k``”h]”jS)�”}”(hj.¤h]”hŒstruct task_struct *k”…”�”}”(hj0¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj,¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M˜hj(¤ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#thread created by kthread_create().”h]”hŒ#thread created by kthread_create().”…”�”}”(hjG¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jC¤h´M˜hjD¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj(¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jC¤h´M˜hj%¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ¤ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hji¤h]”hŒ Description”…”�”}”(hjk¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjg¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mšhj ¤ubjM)�”}”(hŒ›Sets kthread_should_park() for **k** to return false, wakes it, and waits for it to return. If the thread is marked percpu then its bound to the cpu again.”h]”(hŒSets kthread_should_park() for ”…”�”}”(hj¤h²hh³Nh´NubjŽ)�”}”(hŒ**k**”h]”hŒk”…”�”}”(hj‡¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤ubhŒw to return false, wakes it, and waits for it to return. If the thread is marked percpu then its bound to the cpu again.”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M™hj ¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_park (C function)”Œc.kthread_park”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(int kthread_park (struct task_struct *k)”h]”hù)�”}”(hŒ'int kthread_park(struct task_struct *k)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÀ¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¼¤h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjϤh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¼¤h²hh³jΤh´M´ubhÿ)�”}”(hŒ kthread_park”h]”j)�”}”(hŒ kthread_park”h]”hŒ kthread_park”…”�”}”(hjá¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjݤubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¼¤h²hh³jΤh´M´ubj4)�”}”(hŒ(struct task_struct *k)”h]”j:)�”}”(hŒstruct task_struct *k”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjý¤h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjù¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¥h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjù¤ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¥Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjã¤sbŒc.kthread_park”†”asbuh1hhjù¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;¥h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjù¤ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjI¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjù¤ubj)�”}”(hjKh]”hŒk”…”�”}”(hjV¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjù¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjõ¤ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¼¤h²hh³jΤh´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¸¤h²hh³jΤh´M´ubah}”(h]”j³¤ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jΤh´M´hjµ¤h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*park a thread created by kthread_create().”h]”hŒ*park a thread created by kthread_create().”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M´hj|¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjµ¤h²hh³jΤh´M´ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj—¥jHj—¥jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX¾**Parameters** ``struct task_struct *k`` thread created by kthread_create(). **Description** Sets kthread_should_park() for **k** to return true, wakes it, and waits for it to return. This can also be called after kthread_create() instead of calling wake_up_process(): the thread will park without calling threadfn(). Returns 0 if the thread is parked, -ENOSYS if the thread exited. If called by the kthread itself just the park bit is set.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¸hj›¥ubj¤)�”}”(hhh]”j©)�”}”(hŒ>``struct task_struct *k`` thread created by kthread_create(). ”h]”(j¯)�”}”(hŒ``struct task_struct *k``”h]”jS)�”}”(hjÀ¥h]”hŒstruct task_struct *k”…”�”}”(hjÂ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¾¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mµhjº¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#thread created by kthread_create().”h]”hŒ#thread created by kthread_create().”…”�”}”(hjÙ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj›¥ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M·hj›¥ubjM)�”}”(hŒàSets kthread_should_park() for **k** to return true, wakes it, and waits for it to return. This can also be called after kthread_create() instead of calling wake_up_process(): the thread will park without calling threadfn().”h]”(hŒSets kthread_should_park() for ”…”�”}”(hj¦h²hh³Nh´NubjŽ)�”}”(hŒ**k**”h]”hŒk”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦ubhŒ¼ to return true, wakes it, and waits for it to return. This can also be called after kthread_create() instead of calling wake_up_process(): the thread will park without calling threadfn().”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¶hj›¥ubjM)�”}”(hŒzReturns 0 if the thread is parked, -ENOSYS if the thread exited. If called by the kthread itself just the park bit is set.”h]”hŒzReturns 0 if the thread is parked, -ENOSYS if the thread exited. If called by the kthread itself just the park bit is set.”…”�”}”(hj2¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M»hj›¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_stop (C function)”Œc.kthread_stop”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(int kthread_stop (struct task_struct *k)”h]”hù)�”}”(hŒ'int kthread_stop(struct task_struct *k)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hja¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj]¦h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÝubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj]¦h²hh³jo¦h´MÝubhÿ)�”}”(hŒ kthread_stop”h]”j)�”}”(hŒ kthread_stop”h]”hŒ kthread_stop”…”�”}”(hj‚¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~¦ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj]¦h²hh³jo¦h´MÝubj4)�”}”(hŒ(struct task_struct *k)”h]”j:)�”}”(hŒstruct task_struct *k”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjž¦h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjš¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjš¦ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj¼¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¾¦Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj„¦sbŒc.kthread_stop”†”asbuh1hhjš¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjܦh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjš¦ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjê¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjš¦ubj)�”}”(hjKh]”hŒk”…”�”}”(hj÷¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjš¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj–¦ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj]¦h²hh³jo¦h´MÝubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjY¦h²hh³jo¦h´MÝubah}”(h]”jT¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jo¦h´MÝhjV¦h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*stop a thread created by kthread_create().”h]”hŒ*stop a thread created by kthread_create().”…”�”}”(hj §h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÝhj§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjV¦h²hh³jo¦h´MÝubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj8§jHj8§jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXù**Parameters** ``struct task_struct *k`` thread created by kthread_create(). **Description** Sets kthread_should_stop() for **k** to return true, wakes it, and waits for it to exit. This can also be called after kthread_create() instead of calling wake_up_process(): the thread will exit without calling threadfn(). If threadfn() may call kthread_exit() itself, the caller must ensure task_struct can't go away. Returns the result of threadfn(), or ``-EINTR`` if wake_up_process() was never called.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjB§h]”hŒ Parameters”…”�”}”(hjD§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Máhj<§ubj¤)�”}”(hhh]”j©)�”}”(hŒ>``struct task_struct *k`` thread created by kthread_create(). ”h]”(j¯)�”}”(hŒ``struct task_struct *k``”h]”jS)�”}”(hja§h]”hŒstruct task_struct *k”…”�”}”(hjc§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj_§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÞhj[§ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#thread created by kthread_create().”h]”hŒ#thread created by kthread_create().”…”�”}”(hjz§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jv§h´MÞhjw§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj[§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jv§h´MÞhjX§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj<§ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Màhj<§ubjM)�”}”(hŒÞSets kthread_should_stop() for **k** to return true, wakes it, and waits for it to exit. This can also be called after kthread_create() instead of calling wake_up_process(): the thread will exit without calling threadfn().”h]”(hŒSets kthread_should_stop() for ”…”�”}”(hj²§h²hh³Nh´NubjŽ)�”}”(hŒ**k**”h]”hŒk”…”�”}”(hjº§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj²§ubhŒº to return true, wakes it, and waits for it to exit. This can also be called after kthread_create() instead of calling wake_up_process(): the thread will exit without calling threadfn().”…”�”}”(hj²§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mßhj<§ubjM)�”}”(hŒ_If threadfn() may call kthread_exit() itself, the caller must ensure task_struct can't go away.”h]”hŒaIf threadfn() may call kthread_exit() itself, the caller must ensure task_struct can’t go away.”…”�”}”(hjÓ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mähj<§ubjM)�”}”(hŒVReturns the result of threadfn(), or ``-EINTR`` if wake_up_process() was never called.”h]”(hŒ%Returns the result of threadfn(), or ”…”�”}”(hjâ§h²hh³Nh´NubjS)�”}”(hŒ ``-EINTR``”h]”hŒ-EINTR”…”�”}”(hjê§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjâ§ubhŒ' if wake_up_process() was never called.”…”�”}”(hjâ§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mçhj<§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_stop_put (C function)”Œc.kthread_stop_put”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,int kthread_stop_put (struct task_struct *k)”h]”hù)�”}”(hŒ+int kthread_stop_put(struct task_struct *k)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj#¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¨h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¨h²hh³j1¨h´Mubhÿ)�”}”(hŒkthread_stop_put”h]”j)�”}”(hŒkthread_stop_put”h]”hŒkthread_stop_put”…”�”}”(hjD¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@¨ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¨h²hh³j1¨h´Mubj4)�”}”(hŒ(struct task_struct *k)”h]”j:)�”}”(hŒstruct task_struct *k”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj`¨h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj\¨ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\¨ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hj~¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j€¨Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjF¨sbŒc.kthread_stop_put”†”asbuh1hhj\¨ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\¨ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¬¨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj\¨ubj)�”}”(hjKh]”hŒk”…”�”}”(hj¹¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjX¨ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¨h²hh³j1¨h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¨h²hh³j1¨h´Mubah}”(h]”j¨ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j1¨h´Mhj¨h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%stop a thread and put its task struct”h]”hŒ%stop a thread and put its task struct”…”�”}”(hjâ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhjߨh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨h²hh³j1¨h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjú¨jHjú¨jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX**Parameters** ``struct task_struct *k`` thread created by kthread_create(). **Description** Stops a thread created by kthread_create() and put its task_struct. Only use when holding an extra task struct reference obtained by calling get_task_struct().”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhjþ¨ubj¤)�”}”(hhh]”j©)�”}”(hŒ>``struct task_struct *k`` thread created by kthread_create(). ”h]”(j¯)�”}”(hŒ``struct task_struct *k``”h]”jS)�”}”(hj#©h]”hŒstruct task_struct *k”…”�”}”(hj%©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj©ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#thread created by kthread_create().”h]”hŒ#thread created by kthread_create().”…”�”}”(hj<©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j8©h´Mhj9©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j8©h´Mhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjþ¨ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhjþ¨ubjM)�”}”(hŒŸStops a thread created by kthread_create() and put its task_struct. Only use when holding an extra task struct reference obtained by calling get_task_struct().”h]”hŒŸStops a thread created by kthread_create() and put its task_struct. Only use when holding an extra task struct reference obtained by calling get_task_struct().”…”�”}”(hjt©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhjþ¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%kthread_affine_preferred (C function)”Œc.kthread_affine_preferred”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPint kthread_affine_preferred (struct task_struct *p, const struct cpumask *mask)”h]”hù)�”}”(hŒOint kthread_affine_preferred(struct task_struct *p, const struct cpumask *mask)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj£©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŸ©h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M<ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŸ©h²hh³j±©h´M<ubhÿ)�”}”(hŒkthread_affine_preferred”h]”j)�”}”(hŒkthread_affine_preferred”h]”hŒkthread_affine_preferred”…”�”}”(hjÄ©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ©ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŸ©h²hh³j±©h´M<ubj4)�”}”(hŒ3(struct task_struct *p, const struct cpumask *mask)”h]”(j:)�”}”(hŒstruct task_struct *p”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjà©h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÜ©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜ©ubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hjþ©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjû©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jªŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÆ©sbŒc.kthread_affine_preferred”†”asbuh1hhjÜ©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜ©ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj,ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÜ©ubj)�”}”(hj h]”hŒp”…”�”}”(hj9ªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜ©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjØ©ubj:)�”}”(hŒconst struct cpumask *mask”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjQªh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjMªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^ªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjMªubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjlªh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjMªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjMªubh)�”}”(hhh]”j)�”}”(hŒcpumask”h]”hŒcpumask”…”�”}”(hjŠªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒªŒmodname”NŒ classname”Njwjz)�”}”j}]”jªŒc.kthread_affine_preferred”†”asbuh1hhjMªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjMªubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¶ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjMªubj)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjØ©ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŸ©h²hh³j±©h´M<ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj›©h²hh³j±©h´M<ubah}”(h]”j–©ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j±©h´M<hj˜©h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%Define a kthread's preferred affinity”h]”hŒ'Define a kthread’s preferred affinity”…”�”}”(hjíªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M<hjêªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj˜©h²hh³j±©h´M<ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj«jHj«jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXÛ**Parameters** ``struct task_struct *p`` thread created by kthread_create(). ``const struct cpumask *mask`` preferred mask of CPUs (might not be online, must be possible) for **p** to run on. **Description** Similar to kthread_bind_mask() except that the affinity is not a requirement but rather a preference that can be constrained by CPU isolation or CPU hotplug. Must be called before the first wakeup of the kthread. Returns 0 if the affinity has been applied.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M@hj «ubj¤)�”}”(hhh]”(j©)�”}”(hŒ>``struct task_struct *p`` thread created by kthread_create(). ”h]”(j¯)�”}”(hŒ``struct task_struct *p``”h]”jS)�”}”(hj.«h]”hŒstruct task_struct *p”…”�”}”(hj0«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj,«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M=hj(«ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#thread created by kthread_create().”h]”hŒ#thread created by kthread_create().”…”�”}”(hjG«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jC«h´M=hjD«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj(«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jC«h´M=hj%«ubj©)�”}”(hŒs``const struct cpumask *mask`` preferred mask of CPUs (might not be online, must be possible) for **p** to run on. ”h]”(j¯)�”}”(hŒ``const struct cpumask *mask``”h]”jS)�”}”(hjg«h]”hŒconst struct cpumask *mask”…”�”}”(hji«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhje«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M?hja«ubjÉ)�”}”(hhh]”jM)�”}”(hŒSpreferred mask of CPUs (might not be online, must be possible) for **p** to run on.”h]”(hŒCpreferred mask of CPUs (might not be online, must be possible) for ”…”�”}”(hj€«h²hh³Nh´NubjŽ)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hjˆ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€«ubhŒ to run on.”…”�”}”(hj€«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M>hj}«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhja«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j|«h´M?hj%«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj «ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MAhj «ubjM)�”}”(hŒÔSimilar to kthread_bind_mask() except that the affinity is not a requirement but rather a preference that can be constrained by CPU isolation or CPU hotplug. Must be called before the first wakeup of the kthread.”h]”hŒÔSimilar to kthread_bind_mask() except that the affinity is not a requirement but rather a preference that can be constrained by CPU isolation or CPU hotplug. Must be called before the first wakeup of the kthread.”…”�”}”(hjË«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M@hj «ubjM)�”}”(hŒ+Returns 0 if the affinity has been applied.”h]”hŒ+Returns 0 if the affinity has been applied.”…”�”}”(hjÚ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MDhj «ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_worker_fn (C function)”Œc.kthread_worker_fn”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(int kthread_worker_fn (void *worker_ptr)”h]”hù)�”}”(hŒ'int kthread_worker_fn(void *worker_ptr)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¬h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MËubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¬h²hh³j¬h´MËubhÿ)�”}”(hŒkthread_worker_fn”h]”j)�”}”(hŒkthread_worker_fn”h]”hŒkthread_worker_fn”…”�”}”(hj*¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&¬ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¬h²hh³j¬h´MËubj4)�”}”(hŒ(void *worker_ptr)”h]”j:)�”}”(hŒvoid *worker_ptr”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjF¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjB¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjB¬ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjb¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjB¬ubj)�”}”(hŒ worker_ptr”h]”hŒ worker_ptr”…”�”}”(hjo¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>¬ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¬h²hh³j¬h´MËubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¬h²hh³j¬h´MËubah}”(h]”jü«ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¬h´MËhjþ«h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*kthread function to process kthread_worker”h]”hŒ*kthread function to process kthread_worker”…”�”}”(hj™¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MËhj–¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjþ«h²hh³j¬h´MËubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj±¬jHj±¬jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX-**Parameters** ``void *worker_ptr`` pointer to initialized kthread_worker **Description** This function implements the main cycle of kthread worker. It processes work_list until it is stopped with kthread_stop(). It sleeps when the queue is empty. The works are not allowed to keep any locks, disable preemption or interrupts when they finish. There is defined a safe point for freezing when one work finishes and before a new one is started. Also the works must not be handled by more than one worker at the same time, see also kthread_queue_work().”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÏhjµ¬ubj¤)�”}”(hhh]”j©)�”}”(hŒ;``void *worker_ptr`` pointer to initialized kthread_worker ”h]”(j¯)�”}”(hŒ``void *worker_ptr``”h]”jS)�”}”(hjÚ¬h]”hŒvoid *worker_ptr”…”�”}”(hjܬh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjجubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÌhjÔ¬ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%pointer to initialized kthread_worker”h]”hŒ%pointer to initialized kthread_worker”…”�”}”(hjó¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjµ¬ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÎhjµ¬ubjM)�”}”(hŒ�This function implements the main cycle of kthread worker. It processes work_list until it is stopped with kthread_stop(). It sleeps when the queue is empty.”h]”hŒ�This function implements the main cycle of kthread worker. It processes work_list until it is stopped with kthread_stop(). It sleeps when the queue is empty.”…”�”}”(hj+­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÍhjµ¬ubjM)�”}”(hŒÂThe works are not allowed to keep any locks, disable preemption or interrupts when they finish. There is defined a safe point for freezing when one work finishes and before a new one is started.”h]”hŒÂThe works are not allowed to keep any locks, disable preemption or interrupts when they finish. There is defined a safe point for freezing when one work finishes and before a new one is started.”…”�”}”(hj:­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÑhjµ¬ubjM)�”}”(hŒkAlso the works must not be handled by more than one worker at the same time, see also kthread_queue_work().”h]”hŒkAlso the works must not be handled by more than one worker at the same time, see also kthread_queue_work().”…”�”}”(hjI­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÕhjµ¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*kthread_create_worker_on_node (C function)”Œc.kthread_create_worker_on_node”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒostruct kthread_worker * kthread_create_worker_on_node (unsigned int flags, int node, const char namefmt[], ...)”h]”hù)�”}”(hŒmstruct kthread_worker *kthread_create_worker_on_node(unsigned int flags, int node, const char namefmt[], ...)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjx­h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjt­h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjt­h²hh³j…­h´M5ubh)�”}”(hhh]”j)�”}”(hŒkthread_worker”h]”hŒkthread_worker”…”�”}”(hj—­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j™­Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒkthread_create_worker_on_node”sbŒc.kthread_create_worker_on_node”†”asbuh1hhjt­h²hh³j…­h´M5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjt­h²hh³j…­h´M5ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÆ­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjt­h²hh³j…­h´M5ubhÿ)�”}”(hŒkthread_create_worker_on_node”h]”j)�”}”(hjµ­h]”hŒkthread_create_worker_on_node”…”�”}”(hj×­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ­ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjt­h²hh³j…­h´M5ubj4)�”}”(hŒ9(unsigned int flags, int node, const char namefmt[], ...)”h]”(j:)�”}”(hŒunsigned int flags”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjò­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjî­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî­ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjî­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî­ubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj*®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê­ubj:)�”}”(hŒint node”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjC®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj?®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?®ubj)�”}”(hŒnode”h]”hŒnode”…”�”}”(hj_®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê­ubj:)�”}”(hŒconst char namefmt[]”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjx®h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjt®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjt®ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj“®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjt®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjt®ubj)�”}”(hŒnamefmt”h]”hŒnamefmt”…”�”}”(hj¯®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt®ubj”)�”}”(hj_Žh]”hŒ[”…”�”}”(hj½®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjt®ubj”)�”}”(hjmŽh]”hŒ]”…”�”}”(hjÊ®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjt®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê­ubj:)�”}”(hŒ...”h]”j”)�”}”(hj›h]”hŒ...”…”�”}”(hjâ®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÞ®ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê­ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjt­h²hh³j…­h´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjp­h²hh³j…­h´M5ubah}”(h]”jk­ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j…­h´M5hjm­h²hubj4)�”}”(hhh]”jM)�”}”(hŒcreate a kthread worker”h]”hŒcreate a kthread worker”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M5hj¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjm­h²hh³j…­h´M5ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj#¯jHj#¯jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXÝ**Parameters** ``unsigned int flags`` flags modifying the default behavior of the worker ``int node`` task structure for the thread is allocated on this node ``const char namefmt[]`` printf-style name for the kthread worker (task). ``...`` variable arguments **Description** Returns a pointer to the allocated worker on success, ERR_PTR(-ENOMEM) when the needed structures could not get allocated, and ERR_PTR(-EINTR) when the caller was killed by a fatal signal.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M9hj'¯ubj¤)�”}”(hhh]”(j©)�”}”(hŒJ``unsigned int flags`` flags modifying the default behavior of the worker ”h]”(j¯)�”}”(hŒ``unsigned int flags``”h]”jS)�”}”(hjL¯h]”hŒunsigned int flags”…”�”}”(hjN¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M6hjF¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒ2flags modifying the default behavior of the worker”h]”hŒ2flags modifying the default behavior of the worker”…”�”}”(hje¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ja¯h´M6hjb¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjF¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ja¯h´M6hjC¯ubj©)�”}”(hŒE``int node`` task structure for the thread is allocated on this node ”h]”(j¯)�”}”(hŒ ``int node``”h]”jS)�”}”(hj…¯h]”hŒint node”…”�”}”(hj‡¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M7hj¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒ7task structure for the thread is allocated on this node”h]”hŒ7task structure for the thread is allocated on this node”…”�”}”(hjž¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jš¯h´M7hj›¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jš¯h´M7hjC¯ubj©)�”}”(hŒJ``const char namefmt[]`` printf-style name for the kthread worker (task). ”h]”(j¯)�”}”(hŒ``const char namefmt[]``”h]”jS)�”}”(hj¾¯h]”hŒconst char namefmt[]”…”�”}”(hjÀ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¼¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M8hj¸¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒ0printf-style name for the kthread worker (task).”h]”hŒ0printf-style name for the kthread worker (task).”…”�”}”(hjׯh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÓ¯h´M8hjÔ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¸¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÓ¯h´M8hjC¯ubj©)�”}”(hŒ``...`` variable arguments ”h]”(j¯)�”}”(hŒ``...``”h]”jS)�”}”(hj÷¯h]”hŒ...”…”�”}”(hjù¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjõ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Khjñ¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j °h´Khj °ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjñ¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j °h´KhjC¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj'¯ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj2°h]”hŒ Description”…”�”}”(hj4°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Khj'¯ubjM)�”}”(hŒ¼Returns a pointer to the allocated worker on success, ERR_PTR(-ENOMEM) when the needed structures could not get allocated, and ERR_PTR(-EINTR) when the caller was killed by a fatal signal.”h]”hŒ¼Returns a pointer to the allocated worker on success, ERR_PTR(-ENOMEM) when the needed structures could not get allocated, and ERR_PTR(-EINTR) when the caller was killed by a fatal signal.”…”�”}”(hjH°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M9hj'¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)kthread_create_worker_on_cpu (C function)”Œc.kthread_create_worker_on_cpu”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒhstruct kthread_worker * kthread_create_worker_on_cpu (int cpu, unsigned int flags, const char namefmt[])”h]”hù)�”}”(hŒfstruct kthread_worker *kthread_create_worker_on_cpu(int cpu, unsigned int flags, const char namefmt[])”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjw°h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjs°h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjs°h²hh³j„°h´MMubh)�”}”(hhh]”j)�”}”(hŒkthread_worker”h]”hŒkthread_worker”…”�”}”(hj–°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j˜°Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒkthread_create_worker_on_cpu”sbŒc.kthread_create_worker_on_cpu”†”asbuh1hhjs°h²hh³j„°h´MMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjs°h²hh³j„°h´MMubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŰh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjs°h²hh³j„°h´MMubhÿ)�”}”(hŒkthread_create_worker_on_cpu”h]”j)�”}”(hj´°h]”hŒkthread_create_worker_on_cpu”…”�”}”(hjÖ°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒ°ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjs°h²hh³j„°h´MMubj4)�”}”(hŒ3(int cpu, unsigned int flags, const char namefmt[])”h]”(j:)�”}”(hŒint cpu”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjñ°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjí°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjí°ubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjí°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjé°ubj:)�”}”(hŒunsigned int flags”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj&±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj"±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4±h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"±ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjB±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj"±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP±h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"±ubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj^±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjé°ubj:)�”}”(hŒconst char namefmt[]”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjw±h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjs±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„±h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjs±ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj’±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjs±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjs±ubj)�”}”(hŒnamefmt”h]”hŒnamefmt”…”�”}”(hj®±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs±ubj”)�”}”(hj_Žh]”hŒ[”…”�”}”(hj¼±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjs±ubj”)�”}”(hjmŽh]”hŒ]”…”�”}”(hjɱh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjs±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjé°ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjs°h²hh³j„°h´MMubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjo°h²hh³j„°h´MMubah}”(h]”jj°ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j„°h´MMhjl°h²hubj4)�”}”(hhh]”jM)�”}”(hŒPcreate a kthread worker and bind it to a given CPU and the associated NUMA node.”h]”hŒPcreate a kthread worker and bind it to a given CPU and the associated NUMA node.”…”�”}”(hjò±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MMhjï±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjl°h²hh³j„°h´MMubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj ²jHj ²jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX1**Parameters** ``int cpu`` CPU number ``unsigned int flags`` flags modifying the default behavior of the worker ``const char namefmt[]`` printf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number. **Description** Use a valid CPU number if you want to bind the kthread worker to the given CPU and the associated NUMA node. A good practice is to add the cpu number also into the worker name. For example, use kthread_create_worker_on_cpu(cpu, "helper/``d``", cpu). CPU hotplug: The kthread worker API is simple and generic. It just provides a way to create, use, and destroy workers. It is up to the API user how to handle CPU hotplug. They have to decide how to handle pending work items, prevent queuing new ones, and restore the functionality when the CPU goes off and on. There are a few catches: - CPU affinity gets lost when it is scheduled on an offline CPU. - The worker might not exist when the CPU was off when the user created the workers. Good practice is to implement two CPU hotplug callbacks and to destroy/create the worker when the CPU goes down/up. **Return** The pointer to the allocated worker on success, ERR_PTR(-ENOMEM) when the needed structures could not get allocated, and ERR_PTR(-EINTR) when the caller was killed by a fatal signal.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MQhj²ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int cpu`` CPU number ”h]”(j¯)�”}”(hŒ ``int cpu``”h]”jS)�”}”(hj3²h]”hŒint cpu”…”�”}”(hj5²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MOhj-²ubjÉ)�”}”(hhh]”jM)�”}”(hŒ CPU number”h]”hŒ CPU number”…”�”}”(hjL²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jH²h´MOhjI²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj-²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jH²h´MOhj*²ubj©)�”}”(hŒJ``unsigned int flags`` flags modifying the default behavior of the worker ”h]”(j¯)�”}”(hŒ``unsigned int flags``”h]”jS)�”}”(hjl²h]”hŒunsigned int flags”…”�”}”(hjn²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´•MPhjf²ubjÉ)�”}”(hhh]”jM)�”}”(hŒ2flags modifying the default behavior of the worker”h]”hŒ2flags modifying the default behavior of the worker”…”�”}”(hj…²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�²h´MPhj‚²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjf²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�²h´MPhj*²ubj©)�”}”(hŒ|``const char namefmt[]`` printf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number. ”h]”(j¯)�”}”(hŒ``const char namefmt[]``”h]”jS)�”}”(hj¥²h]”hŒconst char namefmt[]”…”�”}”(hj§²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MRhjŸ²ubjÉ)�”}”(hhh]”jM)�”}”(hŒbprintf-style name for the thread. Format is restricted to "name.*``u``". Code fills in cpu number.”h]”hŒfprintf-style name for the thread. Format is restricted to “name.*``u``â€�. Code fills in cpu number.”…”�”}”(hj¾²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MQhj»²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŸ²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jº²h´MRhj*²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj²ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MThj²ubjM)�”}”(hŒlUse a valid CPU number if you want to bind the kthread worker to the given CPU and the associated NUMA node.”h]”hŒlUse a valid CPU number if you want to bind the kthread worker to the given CPU and the associated NUMA node.”…”�”}”(hj÷²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MShj²ubjM)�”}”(hŒŒA good practice is to add the cpu number also into the worker name. For example, use kthread_create_worker_on_cpu(cpu, "helper/``d``", cpu).”h]”(hŒ�A good practice is to add the cpu number also into the worker name. For example, use kthread_create_worker_on_cpu(cpu, “helper/”…”�”}”(hj³h²hh³Nh´NubjS)�”}”(hŒ``d``”h]”hŒd”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj³ubhŒ â€�, cpu).”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MVhj²ubjM)�”}”(hŒvCPU hotplug: The kthread worker API is simple and generic. It just provides a way to create, use, and destroy workers.”h]”hŒvCPU hotplug: The kthread worker API is simple and generic. It just provides a way to create, use, and destroy workers.”…”�”}”(hj'³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MYhj²ubjM)�”}”(hŒØIt is up to the API user how to handle CPU hotplug. They have to decide how to handle pending work items, prevent queuing new ones, and restore the functionality when the CPU goes off and on. There are a few catches:”h]”hŒØIt is up to the API user how to handle CPU hotplug. They have to decide how to handle pending work items, prevent queuing new ones, and restore the functionality when the CPU goes off and on. There are a few catches:”…”�”}”(hj6³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M]hj²ubji)�”}”(hŒ™- CPU affinity gets lost when it is scheduled on an offline CPU. - The worker might not exist when the CPU was off when the user created the workers. ”h]”j C)�”}”(hhh]”(j„)�”}”(hŒ?CPU affinity gets lost when it is scheduled on an offline CPU. ”h]”jM)�”}”(hŒ>CPU affinity gets lost when it is scheduled on an offline CPU.”h]”hŒ>CPU affinity gets lost when it is scheduled on an offline CPU.”…”�”}”(hjP³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MbhjL³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjI³ubj„)�”}”(hŒSThe worker might not exist when the CPU was off when the user created the workers. ”h]”jM)�”}”(hŒRThe worker might not exist when the CPU was off when the user created the workers.”h]”hŒRThe worker might not exist when the CPU was off when the user created the workers.”…”�”}”(hji³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mdhje³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjI³ubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³j^³h´MbhjE³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j^³h´Mbhj²ubjM)�”}”(hŒsGood practice is to implement two CPU hotplug callbacks and to destroy/create the worker when the CPU goes down/up.”h]”hŒsGood practice is to implement two CPU hotplug callbacks and to destroy/create the worker when the CPU goes down/up.”…”�”}”(hjгh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mghj²ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj›³h]”hŒReturn”…”�”}”(hj�³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mjhj²ubjM)�”}”(hŒ¶The pointer to the allocated worker on success, ERR_PTR(-ENOMEM) when the needed structures could not get allocated, and ERR_PTR(-EINTR) when the caller was killed by a fatal signal.”h]”hŒ¶The pointer to the allocated worker on success, ERR_PTR(-ENOMEM) when the needed structures could not get allocated, and ERR_PTR(-EINTR) when the caller was killed by a fatal signal.”…”�”}”(hj±³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mkhj²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_queue_work (C function)”Œc.kthread_queue_work”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒRbool kthread_queue_work (struct kthread_worker *worker, struct kthread_work *work)”h]”hù)�”}”(hŒQbool kthread_queue_work(struct kthread_worker *worker, struct kthread_work *work)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjà³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjܳh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjܳh²hh³jí³h´M¤ubhÿ)�”}”(hŒkthread_queue_work”h]”j)�”}”(hŒkthread_queue_work”h]”hŒkthread_queue_work”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü³ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjܳh²hh³jí³h´M¤ubj4)�”}”(hŒ:(struct kthread_worker *worker, struct kthread_work *work)”h]”(j:)�”}”(hŒstruct kthread_worker *worker”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)´h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´ubh)�”}”(hhh]”j)�”}”(hŒkthread_worker”h]”hŒkthread_worker”…”�”}”(hj:´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j<´Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj´sbŒc.kthread_queue_work”†”asbuh1hhj´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ´h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj´ubj)�”}”(hŒworker”h]”hŒworker”…”�”}”(hju´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj´ubj:)�”}”(hŒstruct kthread_work *work”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjŽ´h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjŠ´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›´h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠ´ubh)�”}”(hhh]”j)�”}”(hŒ kthread_work”h]”hŒ kthread_work”…”�”}”(hj¬´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j®´Œmodname”NŒ classname”Njwjz)�”}”j}]”jV´Œc.kthread_queue_work”†”asbuh1hhjŠ´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ´h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠ´ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjØ´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŠ´ubj)�”}”(hŒwork”h]”hŒwork”…”�”}”(hjå´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj´ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjܳh²hh³jí³h´M¤ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjسh²hh³jí³h´M¤ubah}”(h]”jÓ³ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jí³h´M¤hjÕ³h²hubj4)�”}”(hhh]”jM)�”}”(hŒqueue a kthread_work”h]”hŒqueue a kthread_work”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¤hj µh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÕ³h²hh³jí³h´M¤ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj'µjHj'µjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hXé**Parameters** ``struct kthread_worker *worker`` target kthread_worker ``struct kthread_work *work`` kthread_work to queue **Description** Queue **work** to work processor **task** for async execution. **task** must have been created with kthread_create_worker(). Returns ``true`` if **work** was successfully queued, ``false`` if it was already pending. Reinitialize the work if it needs to be used by another worker. For example, when the worker was stopped and started again.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj1µh]”hŒ Parameters”…”�”}”(hj3µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/µubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¨hj+µubj¤)�”}”(hhh]”(j©)�”}”(hŒ8``struct kthread_worker *worker`` target kthread_worker ”h]”(j¯)�”}”(hŒ!``struct kthread_worker *worker``”h]”jS)�”}”(hjPµh]”hŒstruct kthread_worker *worker”…”�”}”(hjRµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjNµubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¥hjJµubjÉ)�”}”(hhh]”jM)�”}”(hŒtarget kthread_worker”h]”hŒtarget kthread_worker”…”�”}”(hjiµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jeµh´M¥hjfµubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jeµh´M¥hjGµubj©)�”}”(hŒ4``struct kthread_work *work`` kthread_work to queue ”h]”(j¯)�”}”(hŒ``struct kthread_work *work``”h]”jS)�”}”(hj‰µh]”hŒstruct kthread_work *work”…”�”}”(hj‹µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‡µubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¦hjƒµubjÉ)�”}”(hhh]”jM)�”}”(hŒkthread_work to queue”h]”hŒkthread_work to queue”…”�”}”(hj¢µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jžµh´M¦hjŸµubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjƒµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jžµh´M¦hjGµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj+µubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¨hj+µubjM)�”}”(hŒÙQueue **work** to work processor **task** for async execution. **task** must have been created with kthread_create_worker(). Returns ``true`` if **work** was successfully queued, ``false`` if it was already pending.”h]”(hŒQueue ”…”�”}”(hjÚµh²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hjâµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚµubhŒ to work processor ”…”�”}”(hjÚµh²hh³Nh´NubjŽ)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hjôµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚµubhŒ for async execution. ”…”�”}”(hjÚµh²hh³Nh´NubjŽ)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚµubhŒ? must have been created with kthread_create_worker(). Returns ”…”�”}”(hjÚµh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÚµubhŒ if ”…”�”}”(hjÚµh²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hj*¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚµubhŒ was successfully queued, ”…”�”}”(hjÚµh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj<¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÚµubhŒ if it was already pending.”…”�”}”(hjÚµh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M§hj+µubjM)�”}”(hŒ{Reinitialize the work if it needs to be used by another worker. For example, when the worker was stopped and started again.”h]”hŒ{Reinitialize the work if it needs to be used by another worker. For example, when the worker was stopped and started again.”…”�”}”(hjU¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M«hj+µubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*kthread_delayed_work_timer_fn (C function)”Œc.kthread_delayed_work_timer_fn”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9void kthread_delayed_work_timer_fn (struct timer_list *t)”h]”hù)�”}”(hŒ8void kthread_delayed_work_timer_fn(struct timer_list *t)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj„¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj€¶h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“¶h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€¶h²hh³j’¶h´MÀubhÿ)�”}”(hŒkthread_delayed_work_timer_fn”h]”j)�”}”(hŒkthread_delayed_work_timer_fn”h]”hŒkthread_delayed_work_timer_fn”…”�”}”(hj¥¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡¶ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj€¶h²hh³j’¶h´MÀubj4)�”}”(hŒ(struct timer_list *t)”h]”j:)�”}”(hŒstruct timer_list *t”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÁ¶h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj½¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjζh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½¶ubh)�”}”(hhh]”j)�”}”(hŒ timer_list”h]”hŒ timer_list”…”�”}”(hjß¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjܶubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”já¶Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj§¶sbŒc.kthread_delayed_work_timer_fn”†”asbuh1hhj½¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ¶h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½¶ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj½¶ubj)�”}”(hjâRh]”hŒt”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¹¶ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj€¶h²hh³j’¶h´MÀubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj|¶h²hh³j’¶h´MÀubah}”(h]”jw¶ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j’¶h´MÀhjy¶h²hubj4)�”}”(hhh]”jM)�”}”(hŒPcallback that queues the associated kthread delayed work when the timer expires.”h]”hŒPcallback that queues the associated kthread delayed work when the timer expires.”…”�”}”(hjC·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÀhj@·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjy¶h²hh³j’¶h´MÀubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj[·jHj[·jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒÙ**Parameters** ``struct timer_list *t`` pointer to the expired timer **Description** The format of the function is defined by struct timer_list. It should have been called from irqsafe timer with irq already off.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hje·h]”hŒ Parameters”…”�”}”(hjg·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÄhj_·ubj¤)�”}”(hhh]”j©)�”}”(hŒ6``struct timer_list *t`` pointer to the expired timer ”h]”(j¯)�”}”(hŒ``struct timer_list *t``”h]”jS)�”}”(hj„·h]”hŒstruct timer_list *t”…”�”}”(hj†·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‚·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÂhj~·ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to the expired timer”h]”hŒpointer to the expired timer”…”�”}”(hj�·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj_·ubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÄhj_·ubjM)�”}”(hŒThe format of the function is defined by struct timer_list. It should have been called from irqsafe timer with irq already off.”h]”hŒThe format of the function is defined by struct timer_list. It should have been called from irqsafe timer with irq already off.”…”�”}”(hjÕ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÃhj_·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'kthread_queue_delayed_work (C function)”Œc.kthread_queue_delayed_work”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒxbool kthread_queue_delayed_work (struct kthread_worker *worker, struct kthread_delayed_work *dwork, unsigned long delay)”h]”hù)�”}”(hŒwbool kthread_queue_delayed_work(struct kthread_worker *worker, struct kthread_delayed_work *dwork, unsigned long delay)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¸h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸h²hh³j¸h´Mubhÿ)�”}”(hŒkthread_queue_delayed_work”h]”j)�”}”(hŒkthread_queue_delayed_work”h]”hŒkthread_queue_delayed_work”…”�”}”(hj$¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ¸ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¸h²hh³j¸h´Mubj4)�”}”(hŒX(struct kthread_worker *worker, struct kthread_delayed_work *dwork, unsigned long delay)”h]”(j:)�”}”(hŒstruct kthread_worker *worker”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj@¸h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj<¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj<¸ubh)�”}”(hhh]”j)�”}”(hŒkthread_worker”h]”hŒkthread_worker”…”�”}”(hj^¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j`¸Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj&¸sbŒc.kthread_queue_delayed_work”†”asbuh1hhj<¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj<¸ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŒ¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj<¸ubj)�”}”(hŒworker”h]”hŒworker”…”�”}”(hj™¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj8¸ubj:)�”}”(hŒ"struct kthread_delayed_work *dwork”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj²¸h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj®¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj®¸ubh)�”}”(hhh]”j)�”}”(hŒkthread_delayed_work”h]”hŒkthread_delayed_work”…”�”}”(hjиh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj͸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÒ¸Œmodname”NŒ classname”Njwjz)�”}”j}]”jz¸Œc.kthread_queue_delayed_work”†”asbuh1hhj®¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj®¸ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjü¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj®¸ubj)�”}”(hŒdwork”h]”hŒdwork”…”�”}”(hj ¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj8¸ubj:)�”}”(hŒunsigned long delay”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj"¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj>¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹ubj)�”}”(hŒdelay”h]”hŒdelay”…”�”}”(hjZ¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj8¸ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¸h²hh³j¸h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjü·h²hh³j¸h´Mubah}”(h]”j÷·ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¸h´Mhjù·h²hubj4)�”}”(hhh]”jM)�”}”(hŒ0queue the associated kthread work after a delay.”h]”hŒ0queue the associated kthread work after a delay.”…”�”}”(hj„¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj�¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjù·h²hh³j¸h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjœ¹jHjœ¹jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX'**Parameters** ``struct kthread_worker *worker`` target kthread_worker ``struct kthread_delayed_work *dwork`` kthread_delayed_work to queue ``unsigned long delay`` number of jiffies to wait before queuing **Description** If the work has not been pending it starts a timer that will queue the work after the given **delay**. If **delay** is zero, it queues the work immediately. **Return** ``false`` if the **work** has already been pending. It means that either the timer was running or the work was queued. It returns ``true`` otherwise.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj ¹ubj¤)�”}”(hhh]”(j©)�”}”(hŒ8``struct kthread_worker *worker`` target kthread_worker ”h]”(j¯)�”}”(hŒ!``struct kthread_worker *worker``”h]”jS)�”}”(hjŹh]”hŒstruct kthread_worker *worker”…”�”}”(hjǹh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj¿¹ubjÉ)�”}”(hhh]”jM)�”}”(hŒtarget kthread_worker”h]”hŒtarget kthread_worker”…”�”}”(hjÞ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÚ¹h´MhjÛ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¿¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÚ¹h´Mhj¼¹ubj©)�”}”(hŒE``struct kthread_delayed_work *dwork`` kthread_delayed_work to queue ”h]”(j¯)�”}”(hŒ&``struct kthread_delayed_work *dwork``”h]”jS)�”}”(hjþ¹h]”hŒ"struct kthread_delayed_work *dwork”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjü¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhjø¹ubjÉ)�”}”(hhh]”jM)�”}”(hŒkthread_delayed_work to queue”h]”hŒkthread_delayed_work to queue”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jºh´Mhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjø¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jºh´Mhj¼¹ubj©)�”}”(hŒA``unsigned long delay`` number of jiffies to wait before queuing ”h]”(j¯)�”}”(hŒ``unsigned long delay``”h]”jS)�”}”(hj7ºh]”hŒunsigned long delay”…”�”}”(hj9ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj1ºubjÉ)�”}”(hhh]”jM)�”}”(hŒ(number of jiffies to wait before queuing”h]”hŒ(number of jiffies to wait before queuing”…”�”}”(hjPºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jLºh´MhjMºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jLºh´Mhj¼¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ¹ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjrºh]”hŒ Description”…”�”}”(hjtºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpºubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj ¹ubjM)�”}”(hŒœIf the work has not been pending it starts a timer that will queue the work after the given **delay**. If **delay** is zero, it queues the work immediately.”h]”(hŒ\If the work has not been pending it starts a timer that will queue the work after the given ”…”�”}”(hjˆºh²hh³Nh´NubjŽ)�”}”(hŒ **delay**”h]”hŒdelay”…”�”}”(hj�ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆºubhŒ. If ”…”�”}”(hjˆºh²hh³Nh´NubjŽ)�”}”(hŒ **delay**”h]”hŒdelay”…”�”}”(hj¢ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆºubhŒ) is zero, it queues the work immediately.”…”�”}”(hjˆºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj ¹ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj½ºh]”hŒReturn”…”�”}”(hj¿ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M hj ¹ubjM)�”}”(hŒ•``false`` if the **work** has already been pending. It means that either the timer was running or the work was queued. It returns ``true`` otherwise.”h]”(jS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj׺h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÓºubhŒ if the ”…”�”}”(hjÓºh²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hjéºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓºubhŒi has already been pending. It means that either the timer was running or the work was queued. It returns ”…”�”}”(hjÓºh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjûºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÓºubhŒ otherwise.”…”�”}”(hjÓºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M hj ¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_flush_work (C function)”Œc.kthread_flush_work”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3void kthread_flush_work (struct kthread_work *work)”h]”hù)�”}”(hŒ2void kthread_flush_work(struct kthread_work *work)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj4»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj0»h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0»h²hh³jB»h´M1ubhÿ)�”}”(hŒkthread_flush_work”h]”j)�”}”(hŒkthread_flush_work”h]”hŒkthread_flush_work”…”�”}”(hjU»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQ»ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0»h²hh³jB»h´M1ubj4)�”}”(hŒ(struct kthread_work *work)”h]”j:)�”}”(hŒstruct kthread_work *work”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjq»h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjm»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjm»ubh)�”}”(hhh]”j)�”}”(hŒ kthread_work”h]”hŒ kthread_work”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒ»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‘»Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjW»sbŒc.kthread_flush_work”†”asbuh1hhjm»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjm»ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj½»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjm»ubj)�”}”(hŒwork”h]”hŒwork”…”�”}”(hjÊ»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjm»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hji»ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj0»h²hh³jB»h´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,»h²hh³jB»h´M1ubah}”(h]”j'»ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jB»h´M1hj)»h²hubj4)�”}”(hhh]”jM)�”}”(hŒflush a kthread_work”h]”hŒflush a kthread_work”…”�”}”(hjô»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M1hjñ»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj)»h²hh³jB»h´M1ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj ¼jHj ¼jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒ”**Parameters** ``struct kthread_work *work`` work to flush **Description** If **work** is queued or executing, wait for it to finish execution.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M5hj¼ubj¤)�”}”(hhh]”j©)�”}”(hŒ,``struct kthread_work *work`` work to flush ”h]”(j¯)�”}”(hŒ``struct kthread_work *work``”h]”jS)�”}”(hj5¼h]”hŒstruct kthread_work *work”…”�”}”(hj7¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj3¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M2hj/¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒ work to flush”h]”hŒ work to flush”…”�”}”(hjN¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJ¼h´M2hjK¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJ¼h´M2hj,¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¼ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjp¼h]”hŒ Description”…”�”}”(hjr¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjn¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M4hj¼ubjM)�”}”(hŒDIf **work** is queued or executing, wait for it to finish execution.”h]”(hŒIf ”…”�”}”(hj†¼h²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hj޼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†¼ubhŒ9 is queued or executing, wait for it to finish execution.”…”�”}”(hj†¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M3hj¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%kthread_mod_delayed_work (C function)”Œc.kthread_mod_delayed_work”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvbool kthread_mod_delayed_work (struct kthread_worker *worker, struct kthread_delayed_work *dwork, unsigned long delay)”h]”hù)�”}”(hŒubool kthread_mod_delayed_work(struct kthread_worker *worker, struct kthread_delayed_work *dwork, unsigned long delay)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjǼh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjüh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ¼h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjüh²hh³jÔ¼h´M�ubhÿ)�”}”(hŒkthread_mod_delayed_work”h]”j)�”}”(hŒkthread_mod_delayed_work”h]”hŒkthread_mod_delayed_work”…”�”}”(hjç¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjã¼ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjüh²hh³jÔ¼h´M�ubj4)�”}”(hŒX(struct kthread_worker *worker, struct kthread_delayed_work *dwork, unsigned long delay)”h]”(j:)�”}”(hŒstruct kthread_worker *worker”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÿ¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿ¼ubh)�”}”(hhh]”j)�”}”(hŒkthread_worker”h]”hŒkthread_worker”…”�”}”(hj!½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j#½Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjé¼sbŒc.kthread_mod_delayed_work”†”asbuh1hhjÿ¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿ¼ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjO½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÿ¼ubj)�”}”(hŒworker”h]”hŒworker”…”�”}”(hj\½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿ¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjû¼ubj:)�”}”(hŒ"struct kthread_delayed_work *dwork”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hju½h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjq½ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjq½ubh)�”}”(hhh]”j)�”}”(hŒkthread_delayed_work”h]”hŒkthread_delayed_work”…”�”}”(hj“½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j•½Œmodname”NŒ classname”Njwjz)�”}”j}]”j=½Œc.kthread_mod_delayed_work”†”asbuh1hhjq½ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjq½ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¿½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjq½ubj)�”}”(hŒdwork”h]”hŒdwork”…”�”}”(hj̽h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjû¼ubj:)�”}”(hŒunsigned long delay”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjå½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjá½ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjá½ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjá½ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjá½ubj)�”}”(hŒdelay”h]”hŒdelay”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjá½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjû¼ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjüh²hh³jÔ¼h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¿¼h²hh³jÔ¼h´M�ubah}”(h]”jº¼ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÔ¼h´M�hj¼¼h²hubj4)�”}”(hhh]”jM)�”}”(hŒ/modify delay of or queue a kthread delayed work”h]”hŒ/modify delay of or queue a kthread delayed work”…”�”}”(hjG¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M�hjD¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¼¼h²hh³jÔ¼h´M�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj_¾jHj_¾jI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX>**Parameters** ``struct kthread_worker *worker`` kthread worker to use ``struct kthread_delayed_work *dwork`` kthread delayed work to queue ``unsigned long delay`` number of jiffies to wait before queuing **Description** If **dwork** is idle, equivalent to kthread_queue_delayed_work(). Otherwise, modify **dwork**'s timer so that it expires after **delay**. If **delay** is zero, **work** is guaranteed to be queued immediately. A special case is when the work is being canceled in parallel. It might be caused either by the real kthread_cancel_delayed_work_sync() or yet another kthread_mod_delayed_work() call. We let the other command win and return ``true`` here. The return value can be used for reference counting and the number of queued works stays the same. Anyway, the caller is supposed to synchronize these operations a reasonable way. This function is safe to call from any context including IRQ handler. See __kthread_cancel_work() and kthread_delayed_work_timer_fn() for details. **Return** ``false`` if **dwork** was idle and queued, ``true`` otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hji¾h]”hŒ Parameters”…”�”}”(hjk¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjg¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M‘hjc¾ubj¤)�”}”(hhh]”(j©)�”}”(hŒ8``struct kthread_worker *worker`` kthread worker to use ”h]”(j¯)�”}”(hŒ!``struct kthread_worker *worker``”h]”jS)�”}”(hjˆ¾h]”hŒstruct kthread_worker *worker”…”�”}”(hjоh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj†¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MŽhj‚¾ubjÉ)�”}”(hhh]”jM)�”}”(hŒkthread worker to use”h]”hŒkthread worker to use”…”�”}”(hj¡¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒE``struct kthread_delayed_work *dwork`` kthread delayed work to queue ”h]”(j¯)�”}”(hŒ&``struct kthread_delayed_work *dwork``”h]”jS)�”}”(hjÁ¾h]”hŒ"struct kthread_delayed_work *dwork”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¿¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M�hj»¾ubjÉ)�”}”(hhh]”jM)�”}”(hŒkthread delayed work to queue”h]”hŒkthread delayed work to queue”…”�”}”(hjÚ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒA``unsigned long delay`` number of jiffies to wait before queuing ”h]”(j¯)�”}”(hŒ``unsigned long delay``”h]”jS)�”}”(hjú¾h]”hŒunsigned long delay”…”�”}”(hjü¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjø¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M�hjô¾ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(number of jiffies to wait before queuing”h]”hŒ(number of jiffies to wait before queuing”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjc¾ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj5¿h]”hŒ Description”…”�”}”(hj7¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M’hjc¾ubjM)�”}”(hŒÐIf **dwork** is idle, equivalent to kthread_queue_delayed_work(). Otherwise, modify **dwork**'s timer so that it expires after **delay**. If **delay** is zero, **work** is guaranteed to be queued immediately.”h]”(hŒIf ”…”�”}”(hjK¿h²hh³Nh´NubjŽ)�”}”(hŒ **dwork**”h]”hŒdwork”…”�”}”(hjS¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK¿ubhŒH is idle, equivalent to kthread_queue_delayed_work(). Otherwise, modify ”…”�”}”(hjK¿h²hh³Nh´NubjŽ)�”}”(hŒ **dwork**”h]”hŒdwork”…”�”}”(hje¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK¿ubhŒ$’s timer so that it expires after ”…”�”}”(hjK¿h²hh³Nh´NubjŽ)�”}”(hŒ **delay**”h]”hŒdelay”…”�”}”(hjw¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK¿ubhŒ. If ”…”�”}”(hjK¿h²hh³Nh´NubjŽ)�”}”(hŒ **delay**”h]”hŒdelay”…”�”}”(hj‰¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK¿ubhŒ is zero, ”…”�”}”(hjK¿h²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hj›¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK¿ubhŒ( is guaranteed to be queued immediately.”…”�”}”(hjK¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M‘hjc¾ubjM)�”}”(hX¢A special case is when the work is being canceled in parallel. It might be caused either by the real kthread_cancel_delayed_work_sync() or yet another kthread_mod_delayed_work() call. We let the other command win and return ``true`` here. The return value can be used for reference counting and the number of queued works stays the same. Anyway, the caller is supposed to synchronize these operations a reasonable way.”h]”(hŒàA special case is when the work is being canceled in parallel. It might be caused either by the real kthread_cancel_delayed_work_sync() or yet another kthread_mod_delayed_work() call. We let the other command win and return ”…”�”}”(hj´¿h²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj¼¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj´¿ubhŒº here. The return value can be used for reference counting and the number of queued works stays the same. Anyway, the caller is supposed to synchronize these operations a reasonable way.”…”�”}”(hj´¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M–hjc¾ubjM)�”}”(hŒ’This function is safe to call from any context including IRQ handler. See __kthread_cancel_work() and kthread_delayed_work_timer_fn() for details.”h]”hŒ’This function is safe to call from any context including IRQ handler. See __kthread_cancel_work() and kthread_delayed_work_timer_fn() for details.”…”�”}”(hjÕ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M�hjc¾ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjæ¿h]”hŒReturn”…”�”}”(hjè¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjä¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¡hjc¾ubjM)�”}”(hŒ?``false`` if **dwork** was idle and queued, ``true`` otherwise.”h]”(jS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjü¿ubhŒ if ”…”�”}”(hjü¿h²hh³Nh´NubjŽ)�”}”(hŒ **dwork**”h]”hŒdwork”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjü¿ubhŒ was idle and queued, ”…”�”}”(hjü¿h²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj$Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjü¿ubhŒ otherwise.”…”�”}”(hjü¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M–hjc¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%kthread_cancel_work_sync (C function)”Œc.kthread_cancel_work_sync”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9bool kthread_cancel_work_sync (struct kthread_work *work)”h]”hù)�”}”(hŒ8bool kthread_cancel_work_sync(struct kthread_work *work)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj]Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjYÀh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MøubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjYÀh²hh³jjÀh´Møubhÿ)�”}”(hŒkthread_cancel_work_sync”h]”j)�”}”(hŒkthread_cancel_work_sync”h]”hŒkthread_cancel_work_sync”…”�”}”(hj}Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyÀubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjYÀh²hh³jjÀh´Møubj4)�”}”(hŒ(struct kthread_work *work)”h]”j:)�”}”(hŒstruct kthread_work *work”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj™Àh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj•ÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Àh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj•Àubh)�”}”(hhh]”j)�”}”(hŒ kthread_work”h]”hŒ kthread_work”…”�”}”(hj·Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´Àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¹ÀŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÀsbŒc.kthread_cancel_work_sync”†”asbuh1hhj•ÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Àh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj•Àubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjåÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj•Àubj)�”}”(hŒwork”h]”hŒwork”…”�”}”(hjòÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‘Àubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjYÀh²hh³jjÀh´Møubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjUÀh²hh³jjÀh´Møubah}”(h]”jPÀah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jjÀh´MøhjRÀh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/cancel a kthread work and wait for it to finish”h]”hŒ/cancel a kthread work and wait for it to finish”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MøhjÁh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjRÀh²hh³jjÀh´Møubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj4ÁjHj4ÁjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX‹**Parameters** ``struct kthread_work *work`` the kthread work to cancel **Description** Cancel **work** and wait for its execution to finish. This function can be used even if the work re-queues itself. On return from this function, **work** is guaranteed to be not pending or executing on any CPU. kthread_cancel_work_sync(:c:type:`delayed_work->work `) must not be used for delayed_work's. Use kthread_cancel_delayed_work_sync() instead. The caller must ensure that the worker on which **work** was last queued can't be destroyed before this function returns. **Return** ``true`` if **work** was pending, ``false`` otherwise.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mühj8Áubj¤)�”}”(hhh]”j©)�”}”(hŒ9``struct kthread_work *work`` the kthread work to cancel ”h]”(j¯)�”}”(hŒ``struct kthread_work *work``”h]”jS)�”}”(hj]Áh]”hŒstruct kthread_work *work”…”�”}”(hj_Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj[Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MùhjWÁubjÉ)�”}”(hhh]”jM)�”}”(hŒthe kthread work to cancel”h]”hŒthe kthread work to cancel”…”�”}”(hjvÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jrÁh´MùhjsÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjWÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jrÁh´MùhjTÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj8ÁubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mûhj8ÁubjM)�”}”(hŒÓCancel **work** and wait for its execution to finish. This function can be used even if the work re-queues itself. On return from this function, **work** is guaranteed to be not pending or executing on any CPU.”h]”(hŒCancel ”…”�”}”(hj®Áh²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hj¶Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®ÁubhŒƒ and wait for its execution to finish. This function can be used even if the work re-queues itself. On return from this function, ”…”�”}”(hj®Áh²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hjÈÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®ÁubhŒ9 is guaranteed to be not pending or executing on any CPU.”…”�”}”(hj®Áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Múhj8ÁubjM)�”}”(hŒškthread_cancel_work_sync(:c:type:`delayed_work->work `) must not be used for delayed_work's. Use kthread_cancel_delayed_work_sync() instead.”h]”(hŒkthread_cancel_work_sync(”…”�”}”(hjáÁh²hh³Nh´Nubh)�”}”(hŒ+:c:type:`delayed_work->work `”h]”jS)�”}”(hjëÁh]”hŒdelayed_work->work”…”�”}”(hjíÁh²hh³Nh´Nubah}”(h]”h ]”(j-€jAŒc-type”eh"]”h$]”h&]”uh1jRhjéÁubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j9€Œ refdomain”jAŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jwj?€jB€Œ delayed_work”uh1hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MþhjáÁubhŒX) must not be used for delayed_work’s. Use kthread_cancel_delayed_work_sync() instead.”…”�”}”(hjáÁh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÂh´Mþhj8ÁubjM)�”}”(hŒyThe caller must ensure that the worker on which **work** was last queued can't be destroyed before this function returns.”h]”(hŒ0The caller must ensure that the worker on which ”…”�”}”(hjÂh²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂubhŒC was last queued can’t be destroyed before this function returns.”…”�”}”(hjÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj8ÁubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj6Âh]”hŒReturn”…”�”}”(hj8Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj8ÁubjM)�”}”(hŒ6``true`` if **work** was pending, ``false`` otherwise.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjPÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjLÂubhŒ if ”…”�”}”(hjLÂh²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hjbÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLÂubhŒ was pending, ”…”�”}”(hjLÂh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjtÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjLÂubhŒ otherwise.”…”�”}”(hjLÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj8Áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-kthread_cancel_delayed_work_sync (C function)”Œ"c.kthread_cancel_delayed_work_sync”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒJbool kthread_cancel_delayed_work_sync (struct kthread_delayed_work *dwork)”h]”hù)�”}”(hŒIbool kthread_cancel_delayed_work_sync(struct kthread_delayed_work *dwork)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj­Âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj©Âh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Âh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj©Âh²hh³jºÂh´Mubhÿ)�”}”(hŒ kthread_cancel_delayed_work_sync”h]”j)�”}”(hŒ kthread_cancel_delayed_work_sync”h]”hŒ kthread_cancel_delayed_work_sync”…”�”}”(hjÍÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉÂubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj©Âh²hh³jºÂh´Mubj4)�”}”(hŒ$(struct kthread_delayed_work *dwork)”h]”j:)�”}”(hŒ"struct kthread_delayed_work *dwork”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjéÂh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjåÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöÂh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjåÂubh)�”}”(hhh]”j)�”}”(hŒkthread_delayed_work”h]”hŒkthread_delayed_work”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j ÃŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÏÂsbŒ"c.kthread_cancel_delayed_work_sync”†”asbuh1hhjåÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjåÂubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj5Ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjåÂubj)�”}”(hŒdwork”h]”hŒdwork”…”�”}”(hjBÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjáÂubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj©Âh²hh³jºÂh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¥Âh²hh³jºÂh´Mubah}”(h]”j Âah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jºÂh´Mhj¢Âh²hubj4)�”}”(hhh]”jM)�”}”(hŒ8cancel a kthread delayed work and wait for it to finish.”h]”hŒ8cancel a kthread delayed work and wait for it to finish.”…”�”}”(hjlÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjiÃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¢Âh²hh³jºÂh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj„ÃjHj„ÃjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒè**Parameters** ``struct kthread_delayed_work *dwork`` the kthread delayed work to cancel **Description** This is kthread_cancel_work_sync() for delayed works. **Return** ``true`` if **dwork** was pending, ``false`` otherwise.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjˆÃubj¤)�”}”(hhh]”j©)�”}”(hŒJ``struct kthread_delayed_work *dwork`` the kthread delayed work to cancel ”h]”(j¯)�”}”(hŒ&``struct kthread_delayed_work *dwork``”h]”jS)�”}”(hj­Ãh]”hŒ"struct kthread_delayed_work *dwork”…”�”}”(hj¯Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj«Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj§ÃubjÉ)�”}”(hhh]”jM)�”}”(hŒ"the kthread delayed work to cancel”h]”hŒ"the kthread delayed work to cancel”…”�”}”(hjÆÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÂÃh´MhjÃÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj§Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÂÃh´Mhj¤Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjˆÃubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjˆÃubjM)�”}”(hŒ5This is kthread_cancel_work_sync() for delayed works.”h]”hŒ5This is kthread_cancel_work_sync() for delayed works.”…”�”}”(hjþÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjˆÃubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÄh]”hŒReturn”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjˆÃubjM)�”}”(hŒ7``true`` if **dwork** was pending, ``false`` otherwise.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj)Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj%ÄubhŒ if ”…”�”}”(hj%Äh²hh³Nh´NubjŽ)�”}”(hŒ **dwork**”h]”hŒdwork”…”�”}”(hj;Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ÄubhŒ was pending, ”…”�”}”(hj%Äh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjMÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj%ÄubhŒ otherwise.”…”�”}”(hj%Äh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjˆÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!kthread_flush_worker (C function)”Œc.kthread_flush_worker”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9void kthread_flush_worker (struct kthread_worker *worker)”h]”hù)�”}”(hŒ8void kthread_flush_worker(struct kthread_worker *worker)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj†Äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‚Äh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Äh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚Äh²hh³j”Äh´Mubhÿ)�”}”(hŒkthread_flush_worker”h]”j)�”}”(hŒkthread_flush_worker”h]”hŒkthread_flush_worker”…”�”}”(hj§Äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£Äubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‚Äh²hh³j”Äh´Mubj4)�”}”(hŒ(struct kthread_worker *worker)”h]”j:)�”}”(hŒstruct kthread_worker *worker”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÃÄh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¿ÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿Äubh)�”}”(hhh]”j)�”}”(hŒkthread_worker”h]”hŒkthread_worker”…”�”}”(hjáÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jãÄŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj©ÄsbŒc.kthread_flush_worker”†”asbuh1hhj¿ÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿Äubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¿Äubj)�”}”(hŒworker”h]”hŒworker”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj»Äubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‚Äh²hh³j”Äh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj~Äh²hh³j”Äh´Mubah}”(h]”jyÄah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j”Äh´Mhj{Äh²hubj4)�”}”(hhh]”jM)�”}”(hŒ+flush all current works on a kthread_worker”h]”hŒ+flush all current works on a kthread_worker”…”�”}”(hjFÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjCÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj{Äh²hh³j”Äh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj^ÅjHj^ÅjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒ¥**Parameters** ``struct kthread_worker *worker`` worker to flush **Description** Wait until all currently executing or pending works on **worker** are finished.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjhÅh]”hŒ Parameters”…”�”}”(hjjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M!hjbÅubj¤)�”}”(hhh]”j©)�”}”(hŒ2``struct kthread_worker *worker`` worker to flush ”h]”(j¯)�”}”(hŒ!``struct kthread_worker *worker``”h]”jS)�”}”(hj‡Åh]”hŒstruct kthread_worker *worker”…”�”}”(hj‰Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj…Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhj�ÅubjÉ)�”}”(hhh]”jM)�”}”(hŒworker to flush”h]”hŒworker to flush”…”�”}”(hj Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jœÅh´Mhj�Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jœÅh´Mhj~Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjbÅubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M hjbÅubjM)�”}”(hŒOWait until all currently executing or pending works on **worker** are finished.”h]”(hŒ7Wait until all currently executing or pending works on ”…”�”}”(hjØÅh²hh³Nh´NubjŽ)�”}”(hŒ **worker**”h]”hŒworker”…”�”}”(hjàÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØÅubhŒ are finished.”…”�”}”(hjØÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjbÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#kthread_destroy_worker (C function)”Œc.kthread_destroy_worker”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;void kthread_destroy_worker (struct kthread_worker *worker)”h]”hù)�”}”(hŒ:void kthread_destroy_worker(struct kthread_worker *worker)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÆh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆh²hh³j'Æh´M0ubhÿ)�”}”(hŒkthread_destroy_worker”h]”j)�”}”(hŒkthread_destroy_worker”h]”hŒkthread_destroy_worker”…”�”}”(hj:Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6Æubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÆh²hh³j'Æh´M0ubj4)�”}”(hŒ(struct kthread_worker *worker)”h]”j:)�”}”(hŒstruct kthread_worker *worker”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjVÆh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjRÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRÆubh)�”}”(hhh]”j)�”}”(hŒkthread_worker”h]”hŒkthread_worker”…”�”}”(hjtÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jvÆŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj<ÆsbŒc.kthread_destroy_worker”†”asbuh1hhjRÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRÆubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¢Æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRÆubj)�”}”(hŒworker”h]”hŒworker”…”�”}”(hj¯Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjNÆubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÆh²hh³j'Æh´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÆh²hh³j'Æh´M0ubah}”(h]”j Æah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j'Æh´M0hjÆh²hubj4)�”}”(hhh]”jM)�”}”(hŒdestroy a kthread worker”h]”hŒdestroy a kthread worker”…”�”}”(hjÙÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M0hjÖÆh²hubah}”(h]”h ]”h"]”h$]”h&•5]”uh1j3hjÆh²hh³j'Æh´M0ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjñÆjHjñÆjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX¼**Parameters** ``struct kthread_worker *worker`` worker to be destroyed **Description** Flush and destroy **worker**. The simple flush is enough because the kthread worker API is used only in trivial scenarios. There are no multi-step state machines needed. Note that this function is not responsible for handling delayed work, so caller should be responsible for queuing or canceling all delayed work items before invoke this function.”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M4hjõÆubj¤)�”}”(hhh]”j©)�”}”(hŒ9``struct kthread_worker *worker`` worker to be destroyed ”h]”(j¯)�”}”(hŒ!``struct kthread_worker *worker``”h]”jS)�”}”(hjÇh]”hŒstruct kthread_worker *worker”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M1hjÇubjÉ)�”}”(hhh]”jM)�”}”(hŒworker to be destroyed”h]”hŒworker to be destroyed”…”�”}”(hj3Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j/Çh´M1hj0Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j/Çh´M1hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjõÆubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjUÇh]”hŒ Description”…”�”}”(hjWÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M3hjõÆubjM)�”}”(hŒ«Flush and destroy **worker**. The simple flush is enough because the kthread worker API is used only in trivial scenarios. There are no multi-step state machines needed.”h]”(hŒFlush and destroy ”…”�”}”(hjkÇh²hh³Nh´NubjŽ)�”}”(hŒ **worker**”h]”hŒworker”…”�”}”(hjsÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkÇubhŒ�. The simple flush is enough because the kthread worker API is used only in trivial scenarios. There are no multi-step state machines needed.”…”�”}”(hjkÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M2hjõÆubjM)�”}”(hŒ²Note that this function is not responsible for handling delayed work, so caller should be responsible for queuing or canceling all delayed work items before invoke this function.”h]”hŒ²Note that this function is not responsible for handling delayed work, so caller should be responsible for queuing or canceling all delayed work items before invoke this function.”…”�”}”(hjŒÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M6hjõÆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_use_mm (C function)”Œc.kthread_use_mm”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*void kthread_use_mm (struct mm_struct *mm)”h]”hù)�”}”(hŒ)void kthread_use_mm(struct mm_struct *mm)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj»Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj·Çh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MLubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·Çh²hh³jÉÇh´MLubhÿ)�”}”(hŒkthread_use_mm”h]”j)�”}”(hŒkthread_use_mm”h]”hŒkthread_use_mm”…”�”}”(hjÜÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØÇubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj·Çh²hh³jÉÇh´MLubj4)�”}”(hŒ(struct mm_struct *mm)”h]”j:)�”}”(hŒstruct mm_struct *mm”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjøÇh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjôÇubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôÇubh)�”}”(hhh]”j)�”}”(hŒ mm_struct”h]”hŒ mm_struct”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÈŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÞÇsbŒc.kthread_use_mm”†”asbuh1hhjôÇubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Èh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôÇubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjDÈh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjôÇubj)�”}”(hŒmm”h]”hŒmm”…”�”}”(hjQÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjðÇubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj·Çh²hh³jÉÇh´MLubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj³Çh²hh³jÉÇh´MLubah}”(h]”j®Çah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÉÇh´MLhj°Çh²hubj4)�”}”(hhh]”jM)�”}”(hŒ4make the calling kthread operate on an address space”h]”hŒ4make the calling kthread operate on an address space”…”�”}”(hj{Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MLhjxÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj°Çh²hh³jÉÇh´MLubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj“ÈjHj“ÈjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒF**Parameters** ``struct mm_struct *mm`` address space to operate on”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MPhj—Èubj¤)�”}”(hhh]”j©)�”}”(hŒ4``struct mm_struct *mm`` address space to operate on”h]”(j¯)�”}”(hŒ``struct mm_struct *mm``”h]”jS)�”}”(hj¼Èh]”hŒstruct mm_struct *mm”…”�”}”(hj¾Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjºÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MRhj¶ÈubjÉ)�”}”(hhh]”jM)�”}”(hŒaddress space to operate on”h]”hŒaddress space to operate on”…”�”}”(hjÕÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MMhjÒÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¶Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÑÈh´MRhj³Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj—Èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkthread_unuse_mm (C function)”Œc.kthread_unuse_mm”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,void kthread_unuse_mm (struct mm_struct *mm)”h]”hù)�”}”(hŒ+void kthread_unuse_mm(struct mm_struct *mm)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÉh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MzubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Éh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉh²hh³j$Éh´Mzubhÿ)�”}”(hŒkthread_unuse_mm”h]”j)�”}”(hŒkthread_unuse_mm”h]”hŒkthread_unuse_mm”…”�”}”(hj7Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3Éubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÉh²hh³j$Éh´Mzubj4)�”}”(hŒ(struct mm_struct *mm)”h]”j:)�”}”(hŒstruct mm_struct *mm”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjSÉh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjOÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Éh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjOÉubh)�”}”(hhh]”j)�”}”(hŒ mm_struct”h]”hŒ mm_struct”…”�”}”(hjqÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jsÉŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj9ÉsbŒc.kthread_unuse_mm”†”asbuh1hhjOÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Éh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjOÉubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŸÉh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjOÉubj)�”}”(hŒmm”h]”hŒmm”…”�”}”(hj¬Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjKÉubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÉh²hh³j$Éh´Mzubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÉh²hh³j$Éh´Mzubah}”(h]”j Éah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j$Éh´Mzhj Éh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&reverse the effect of kthread_use_mm()”h]”hŒ&reverse the effect of kthread_use_mm()”…”�”}”(hjÖÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MzhjÓÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj Éh²hh³j$Éh´Mzubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjîÉjHjîÉjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hŒF**Parameters** ``struct mm_struct *mm`` address space to operate on”h]”(jM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M~hjòÉubj¤)�”}”(hhh]”j©)�”}”(hŒ4``struct mm_struct *mm`` address space to operate on”h]”(j¯)�”}”(hŒ``struct mm_struct *mm``”h]”jS)�”}”(hjÊh]”hŒstruct mm_struct *mm”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M€hjÊubjÉ)�”}”(hhh]”jM)�”}”(hŒaddress space to operate on”h]”hŒaddress space to operate on”…”�”}”(hj0Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”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£hjòÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$kthread_associate_blkcg (C function)”Œc.kthread_associate_blkcg”hNt”auh1hÜhj}Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>void kthread_associate_blkcg (struct cgroup_subsys_state *css)”h]”hù)�”}”(hŒ=void kthread_associate_blkcg(struct cgroup_subsys_state *css)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjqÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjmÊh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MœubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Êh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmÊh²hh³jÊh´Mœubhÿ)�”}”(hŒkthread_associate_blkcg”h]”j)�”}”(hŒkthread_associate_blkcg”h]”hŒkthread_associate_blkcg”…”�”}”(hj’Êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽÊubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjmÊh²hh³jÊh´Mœubj4)�”}”(hŒ!(struct cgroup_subsys_state *css)”h]”j:)�”}”(hŒstruct cgroup_subsys_state *css”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj®Êh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjªÊubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Êh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjªÊubh)�”}”(hhh]”j)�”}”(hŒcgroup_subsys_state”h]”hŒcgroup_subsys_state”…”�”}”(hjÌÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÎÊŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj”ÊsbŒc.kthread_associate_blkcg”†”asbuh1hhjªÊubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìÊh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjªÊubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjúÊh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjªÊubj)�”}”(hŒcss”h]”hŒcss”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjªÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¦Êubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjmÊh²hh³jÊh´Mœubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjiÊh²hh³jÊh´Mœubah}”(h]”jdÊah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÊh´MœhjfÊh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"associate blkcg to current kthread”h]”hŒ"associate blkcg to current kthread”…”�”}”(hj1Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mœhj.Ëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjfÊh²hh³jÊh´Mœubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjIËjHjIËjI‰jJ‰jK‰uh1híh²hhj}Dh³Nh´Nubj„)�”}”(hX**Parameters** ``struct cgroup_subsys_state *css`` the cgroup info **Description** Current thread must be a kthread. The thread is running jobs on behalf of other threads. In some cases, we expect the jobs attach cgroup info of original threads instead of that of current thread. This function stores original thread's cgroup info in current kthread context for later retrieval.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjSËh]”hŒ Parameters”…”�”}”(hjUËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQËubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M hjMËubj¤)�”}”(hhh]”j©)�”}”(hŒ4``struct cgroup_subsys_state *css`` the cgroup info ”h]”(j¯)�”}”(hŒ#``struct cgroup_subsys_state *css``”h]”jS)�”}”(hjrËh]”hŒstruct cgroup_subsys_state *css”…”�”}”(hjtËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjpËubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M�hjlËubjÉ)�”}”(hhh]”jM)�”}”(hŒthe cgroup info”h]”hŒthe cgroup info”…”�”}”(hj‹Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‡Ëh´M�hjˆËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjlËubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‡Ëh´M�hjiËubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjMËubjM)�”}”(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&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MŸhjMËubjM)�”}”(hX'Current thread must be a kthread. The thread is running jobs on behalf of other threads. In some cases, we expect the jobs attach cgroup info of original threads instead of that of current thread. This function stores original thread's cgroup info in current kthread context for later retrieval.”h]”hX)Current thread must be a kthread. The thread is running jobs on behalf of other threads. In some cases, we expect the jobs attach cgroup info of original threads instead of that of current thread. This function stores original thread’s cgroup info in current kthread context for later retrieval.”…”�”}”(hjÃËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MžhjMËubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}Dh²hh³Nh´Nubeh}”(h]”Œinternal-functions”ah ]”h"]”Œinternal functions”ah$]”h&]”uh1hµhh·h²hh³hÊh´KFubh¶)�”}”(hhh]”(h»)�”}”(hŒReference counting”h]”hŒReference counting”…”�”}”(hjäËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjáËh²hh³hÊh´KUubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒrefcount_set (C function)”Œc.refcount_set”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void refcount_set (refcount_t *r, int n)”h]”hù)�”}”(hŒ'void refcount_set(refcount_t *r, int n)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÌh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K€ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÌh²hh³jÌh´K€ubhÿ)�”}”(hŒ refcount_set”h]”j)�”}”(hŒ refcount_set”h]”hŒ refcount_set”…”�”}”(hj,Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(Ìubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÌh²hh³jÌh´K€ubj4)�”}”(hŒ(refcount_t *r, int n)”h]”(j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hjKÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jMÌŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj.ÌsbŒc.refcount_set”†”asbuh1hhjDÌubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkÌh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjDÌubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjyÌh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjDÌubj)�”}”(hŒr”h]”hŒr”…”�”}”(hj†Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj@Ìubj:)�”}”(hŒint n”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj›ÌubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›Ìubj)�”}”(hjh]”hŒn”…”�”}”(hj»Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj@Ìubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÌh²hh³jÌh´K€ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÌh²hh³jÌh´K€ubah}”(h]”jþËah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÌh´K€hjÌh²hubj4)�”}”(hhh]”jM)�”}”(hŒset a refcount's value”h]”hŒset a refcount’s value”…”�”}”(hjäÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K€hjáÌh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÌh²hh³jÌh´K€ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjüÌjHjüÌjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hŒe**Parameters** ``refcount_t *r`` the refcount ``int n`` value to which the refcount will be set”h]”(jM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K„hjÍubj¤)�”}”(hhh]”(j©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hj%Íh]”hŒ refcount_t *r”…”�”}”(hj'Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj#Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K�hjÍubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hj>Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ1``int n`` value to which the refcount will be set”h]”(j¯)�”}”(hŒ ``int n``”h]”jS)�”}”(hj^Íh]”hŒint n”…”�”}”(hj`Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj\Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KƒhjXÍubjÉ)�”}”(hhh]”jM)�”}”(hŒ'value to which the refcount will be set”h]”hŒ'value to which the refcount will be set”…”�”}”(hjwÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K‚hjtÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjXÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jsÍh´KƒhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÍubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!refcount_set_release (C function)”Œc.refcount_set_release”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0void refcount_set_release (refcount_t *r, int n)”h]”hù)�”}”(hŒ/void refcount_set_release(refcount_t *r, int n)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¸Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj´Íh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KŠubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇÍh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´Íh²hh³jÆÍh´KŠubhÿ)�”}”(hŒrefcount_set_release”h]”j)�”}”(hŒrefcount_set_release”h]”hŒrefcount_set_release”…”�”}”(hjÙÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕÍubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj´Íh²hh³jÆÍh´KŠubj4)�”}”(hŒ(refcount_t *r, int n)”h]”(j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hjøÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”júÍŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÛÍsbŒc.refcount_set_release”†”asbuh1hhjñÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjñÍubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj&Îh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjñÍubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hj3Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjíÍubj:)�”}”(hŒint n”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjKÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjGÎubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÎh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGÎubj)�”}”(hjh]”hŒn”…”�”}”(hjgÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjíÍubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj´Íh²hh³jÆÍh´KŠubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj°Íh²hh³jÆÍh´KŠubah}”(h]”j«Íah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÆÍh´KŠhj­Íh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,set a refcount's value with release ordering”h]”hŒ.set a refcount’s value with release ordering”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KŠhj�Îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj­Íh²hh³jÆÍh´KŠubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¨ÎjHj¨ÎjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX¼**Parameters** ``refcount_t *r`` the refcount ``int n`` value to which the refcount will be set **Description** This function should be used when memory occupied by the object might be reused to store another object -- consider SLAB_TYPESAFE_BY_RCU. Provides release memory ordering which will order previous memory operations against this store. This ensures all updates to this object are visible once the refcount is set and stale values from the object previously occupying this memory are overwritten with new ones. This function should be called only after new object is fully initialized. After this call the object should be considered visible to other tasks even if it was not yet added into an object collection normally used to discover it. This is because other tasks might have discovered the object previously occupying the same memory and after memory reuse they can succeed in taking refcount to the new object and start using it.”h]”(jM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KŽhj¬Îubj¤)�”}”(hhh]”(j©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hjÑÎh]”hŒ refcount_t *r”…”�”}”(hjÓÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÏÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K‹hjËÎubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjêÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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``int n`` value to which the refcount will be set ”h]”(j¯)�”}”(hŒ ``int n``”h]”jS)�”}”(hj Ïh]”hŒint n”…”�”}”(hj Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KŒhjÏubjÉ)�”}”(hhh]”jM)�”}”(hŒ'value to which the refcount will be set”h]”hŒ'value to which the refcount will be set”…”�”}”(hj#Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¬ÎubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjEÏh]”hŒ Description”…”�”}”(hjGÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KŽhj¬ÎubjM)�”}”(hŒ‰This function should be used when memory occupied by the object might be reused to store another object -- consider SLAB_TYPESAFE_BY_RCU.”h]”hŒ‰This function should be used when memory occupied by the object might be reused to store another object -- consider SLAB_TYPESAFE_BY_RCU.”…”�”}”(hj[Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K�hj¬ÎubjM)�”}”(hXProvides release memory ordering which will order previous memory operations against this store. This ensures all updates to this object are visible once the refcount is set and stale values from the object previously occupying this memory are overwritten with new ones.”h]”hXProvides release memory ordering which will order previous memory operations against this store. This ensures all updates to this object are visible once the refcount is set and stale values from the object previously occupying this memory are overwritten with new ones.”…”�”}”(hjjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K�hj¬ÎubjM)�”}”(hX©This function should be called only after new object is fully initialized. After this call the object should be considered visible to other tasks even if it was not yet added into an object collection normally used to discover it. This is because other tasks might have discovered the object previously occupying the same memory and after memory reuse they can succeed in taking refcount to the new object and start using it.”h]”hX©This function should be called only after new object is fully initialized. After this call the object should be considered visible to other tasks even if it was not yet added into an object collection normally used to discover it. This is because other tasks might have discovered the object previously occupying the same memory and after memory reuse they can succeed in taking refcount to the new object and start using it.”…”�”}”(hjyÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K•hj¬Îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒrefcount_read (C function)”Œc.refcount_read”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0unsigned int refcount_read (const refcount_t *r)”h]”hù)�”}”(hŒ/unsigned int refcount_read(const refcount_t *r)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¨Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¤Ïh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Ïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤Ïh²hh³j¶Ïh´K£ubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¤Ïh²hh³j¶Ïh´K£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓÏh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤Ïh²hh³j¶Ïh´K£ubhÿ)�”}”(hŒ refcount_read”h]”j)�”}”(hŒ refcount_read”h]”hŒ refcount_read”…”�”}”(hjåÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáÏubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¤Ïh²hh³j¶Ïh´K£ubj4)�”}”(hŒ(const refcount_t *r)”h]”j:)�”}”(hŒconst refcount_t *r”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjýÏubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjýÏubh)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j!ÐŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjçÏsbŒc.refcount_read”†”asbuh1hhjýÏubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?Ðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjýÏubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjMÐh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjýÏubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hjZÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjùÏubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¤Ïh²hh³j¶Ïh´K£ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj Ïh²hh³j¶Ïh´K£ubah}”(h]”j›Ïah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¶Ïh´K£hj�Ïh²hubj4)�”}”(hhh]”jM)�”}”(hŒget a refcount's value”h]”hŒget a refcount’s value”…”�”}”(hjƒÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K£hj€Ðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�Ïh²hh³j¶Ïh´K£ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj›ÐjHj›ÐjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hŒX**Parameters** ``const refcount_t *r`` the refcount **Return** the refcount's value”h]”(jM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K§hjŸÐubj¤)�”}”(hhh]”j©)�”}”(hŒ%``const refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``const refcount_t *r``”h]”jS)�”}”(hjÄÐh]”hŒconst refcount_t *r”…”�”}”(hjÆÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÂÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K¤hj¾ÐubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjÝÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŸÐubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÿÐh]”hŒReturn”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjýÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K¦hjŸÐubjM)�”}”(hŒthe refcount's value”h]”hŒthe refcount’s value”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K¦hjŸÐubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"refcount_add_not_zero (C function)”Œc.refcount_add_not_zero”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool refcount_add_not_zero (int i, refcount_t *r)”h]”hù)�”}”(hŒ0bool refcount_add_not_zero(int i, refcount_t *r)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjDÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj@Ñh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRÑh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj@Ñh²hh³jQÑh´KÁubhÿ)�”}”(hŒrefcount_add_not_zero”h]”j)�”}”(hŒrefcount_add_not_zero”h]”hŒrefcount_add_not_zero”…”�”}”(hjdÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`Ñubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj@Ñh²hh³jQÑh´KÁubj4)�”}”(hŒ(int i, refcount_t *r)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj€Ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj|ÑubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÑh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|Ñubj)�”}”(hŒi”h]”hŒi”…”�”}”(hjœÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|Ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjxÑubj:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hj¸Ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jºÑŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjfÑsbŒc.refcount_add_not_zero”†”asbuh1hhj±ÑubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØÑh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±Ñubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjæÑh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj±Ñubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hjóÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±Ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjxÑubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj@Ñh²hh³jQÑh´KÁubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj<Ñh²hh³jQÑh´KÁubah}”(h]”j7Ñah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jQÑh´KÁhj9Ñh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(add a value to a refcount unless it is 0”h]”hŒ(add a value to a refcount unless it is 0”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÁhjÒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj9Ñh²hh³jQÑh´KÁubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj4ÒjHj4ÒjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX¬**Parameters** ``int i`` the value to add to the refcount ``refcount_t *r`` the refcount **Description** Will saturate at REFCOUNT_SATURATED and WARN. Provides no memory ordering, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top. Use of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_inc(), or one of its variants, should instead be used to increment a reference count. **Return** false if the passed refcount is 0, true otherwise”h]”(jM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÅhj8Òubj¤)�”}”(hhh]”(j©)�”}”(hŒ+``int i`` the value to add to the refcount ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj]Òh]”hŒint i”…”�”}”(hj_Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj[Òubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÂhjWÒubjÉ)�”}”(hhh]”jM)�”}”(hŒ the value to add to the refcount”h]”hŒ the value to add to the refcount”…”�”}”(hjvÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jrÒh´KÂhjsÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjWÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jrÒh´KÂhjTÒubj©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hj–Òh]”hŒ refcount_t *r”…”�”}”(hj˜Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj”Òubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÃhj�ÒubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hj¯Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j«Òh´KÃhj¬Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j«Òh´KÃhjTÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj8ÒubjM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÅhj8ÒubjM)�”}”(hŒ-Will saturate at REFCOUNT_SATURATED and WARN.”h]”hŒ-Will saturate at REFCOUNT_SATURATED and WARN.”…”�”}”(hjçÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÄhj8ÒubjM)�”}”(hŒÏProvides no memory ordering, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top.”h]”hŒÏProvides no memory ordering, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top.”…”�”}”(hjöÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÆhj8ÒubjM)�”}”(hŒüUse of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_inc(), or one of its variants, should instead be used to increment a reference count.”h]”hŒüUse of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_inc(), or one of its variants, should instead be used to increment a reference count.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÊhj8ÒubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÓh]”hŒReturn”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÏhj8ÒubjM)�”}”(hŒ1false if the passed refcount is 0, true otherwise”h]”hŒ1false if the passed refcount is 0, true otherwise”…”�”}”(hj,Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÐhj8Òubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*refcount_add_not_zero_acquire (C function)”Œc.refcount_add_not_zero_acquire”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9bool refcount_add_not_zero_acquire (int i, refcount_t *r)”h]”hù)�”}”(hŒ8bool refcount_add_not_zero_acquire(int i, refcount_t *r)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj[Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjWÓh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KþubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjWÓh²hh³jhÓh´Kþubhÿ)�”}”(hŒrefcount_add_not_zero_acquire”h]”j)�”}”(hŒrefcount_add_not_zero_acquire”h]”hŒrefcount_add_not_zero_acquire”…”�”}”(hj{Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwÓubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjWÓh²hh³jhÓh´Kþubj4)�”}”(hŒ(int i, refcount_t *r)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj—Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj“ÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Óh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“Óubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj³Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“Óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Óubj:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hjÎÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjËÓubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÐÓŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj}ÓsbŒc.refcount_add_not_zero_acquire”†”asbuh1hhjÇÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇÓubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjüÓh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÇÓubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Óubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjWÓh²hh³jhÓh´Kþubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjSÓh²hh³jhÓh´Kþubah}”(h]”jNÓah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jhÓh´KþhjPÓh²hubj4)�”}”(hhh]”jM)�”}”(hŒ>add a value to a refcount with acquire ordering unless it is 0”h]”hŒ>add a value to a refcount with acquire ordering unless it is 0”…”�”}”(hj2Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´Kþhj/Ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjPÓh²hh³jhÓh´Kþubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjJÔjHjJÔjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX?**Parameters** ``int i`` the value to add to the refcount ``refcount_t *r`` the refcount **Description** Will saturate at REFCOUNT_SATURATED and WARN. This function should be used when memory occupied by the object might be reused to store another object -- consider SLAB_TYPESAFE_BY_RCU. Provides acquire memory ordering on success, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top. Use of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_inc_not_zero_acquire() should instead be used to increment a reference count. **Return** false if the passed refcount is 0, true otherwise”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjTÔh]”hŒ Parameters”…”�”}”(hjVÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MhjNÔubj¤)�”}”(hhh]”(j©)�”}”(hŒ+``int i`` the value to add to the refcount ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjsÔh]”hŒint i”…”�”}”(hjuÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjqÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MhjmÔubjÉ)�”}”(hhh]”jM)�”}”(hŒ the value to add to the refcount”h]”hŒ the value to add to the refcount”…”�”}”(hjŒÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jˆÔh´Mhj‰Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjmÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆÔh´MhjjÔubj©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hj¬Ôh]”hŒ refcount_t *r”…”�”}”(hj®Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjªÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´Mhj¦ÔubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjÅÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÁÔh´MhjÂÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¦Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÁÔh´MhjjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjNÔubjM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MhjNÔubjM)�”}”(hŒ-Will saturate at REFCOUNT_SATURATED and WARN.”h]”hŒ-Will saturate at REFCOUNT_SATURATED and WARN.”…”�”}”(hjýÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MhjNÔubjM)�”}”(hŒ‰This function should be used when memory occupied by the object might be reused to store another object -- consider SLAB_TYPESAFE_BY_RCU.”h]”hŒ‰This function should be used when memory occupied by the object might be reused to store another object -- consider SLAB_TYPESAFE_BY_RCU.”…”�”}”(hj Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MhjNÔubjM)�”}”(hŒßProvides acquire memory ordering on success, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top.”h]”hŒßProvides acquire memory ordering on success, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top.”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MhjNÔubjM)�”}”(hŒôUse of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_inc_not_zero_acquire() should instead be used to increment a reference count.”h]”hŒôUse of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_inc_not_zero_acquire() should instead be used to increment a reference count.”…”�”}”(hj*Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M hjNÔubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj;Õh]”hŒReturn”…”�”}”(hj=Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MhjNÔubjM)�”}”(hŒ1false if the passed refcount is 0, true otherwise”h]”hŒ1false if the passed refcount is 0, true otherwise”…”�”}”(hjQÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MhjNÔubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒrefcount_add (C function)”Œc.refcount_add”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void refcount_add (int i, refcount_t *r)”h]”hù)�”}”(hŒ'void refcount_add(int i, refcount_t *r)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj€Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj|Õh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M'ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|Õh²hh³jŽÕh´M'ubhÿ)�”}”(hŒ refcount_add”h]”j)�”}”(hŒ refcount_add”h]”hŒ refcount_add”…”�”}”(hj¡Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Õubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj|Õh²hh³jŽÕh´M'ubj4)�”}”(hŒ(int i, refcount_t *r)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj½Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¹ÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËÕh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹Õubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÙÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjµÕubj:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hjôÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jöÕŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj£ÕsbŒc.refcount_add”†”asbuh1hhjíÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjíÕubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj"Öh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjíÕubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hj/Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjµÕubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj|Õh²hh³jŽÕh´M'ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjxÕh²hh³jŽÕh´M'ubah}”(h]”jsÕah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŽÕh´M'hjuÕh²hubj4)�”}”(hhh]”jM)�”}”(hŒadd a value to a refcount”h]”hŒadd a value to a refcount”…”�”}”(hjXÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M'hjUÖh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjuÕh²hh³jŽÕh´M'ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjpÖjHjpÖjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXŠ**Parameters** ``int i`` the value to add to the refcount ``refcount_t *r`` the refcount **Description** Similar to atomic_add(), but will saturate at REFCOUNT_SATURATED and WARN. Provides no memory ordering, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top. Use of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_inc(), or one of its variants, should instead be used to increment a reference count.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjzÖh]”hŒ Parameters”…”�”}”(hj|Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M+hjtÖubj¤)�”}”(hhh]”(j©)�”}”(hŒ+``int i`` the value to add to the refcount ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj™Öh]”hŒint i”…”�”}”(hj›Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj—Öubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M(hj“ÖubjÉ)�”}”(hhh]”jM)�”}”(hŒ the value to add to the refcount”h]”hŒ the value to add to the refcount”…”�”}”(hj²Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hjÒÖh]”hŒ refcount_t *r”…”�”}”(hjÔÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÐÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M)hjÌÖubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjëÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjtÖubjM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M+hjtÖubjM)�”}”(hŒJSimilar to atomic_add(), but will saturate at REFCOUNT_SATURATED and WARN.”h]”hŒJSimilar to atomic_add(), but will saturate at REFCOUNT_SATURATED and WARN.”…”�”}”(hj#×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M*hjtÖubjM)�”}”(hŒÏProvides no memory ordering, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top.”h]”hŒÏProvides no memory ordering, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top.”…”�”}”(hj2×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M,hjtÖubjM)�”}”(hŒüUse of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_inc(), or one of its variants, should instead be used to increment a reference count.”h]”hŒüUse of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_inc(), or one of its variants, should instead be used to increment a reference count.”…”�”}”(hjA×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M0hjtÖubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"refcount_inc_not_zero (C function)”Œc.refcount_inc_not_zero”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*bool refcount_inc_not_zero (refcount_t *r)”h]”hù)�”}”(hŒ)bool refcount_inc_not_zero(refcount_t *r)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjp×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjl×h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~×h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjl×h²hh³j}×h´MAubhÿ)�”}”(hŒrefcount_inc_not_zero”h]”j)�”}”(hŒrefcount_inc_not_zero”h]”hŒrefcount_inc_not_zero”…”�”}”(hj�×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒ×ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjl×h²hh³j}×h´MAubj4)�”}”(hŒ(refcount_t *r)”h]”j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hj¯×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j±×Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj’×sbŒc.refcount_inc_not_zero”†”asbuh1hhj¨×ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ×h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¨×ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÝ×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¨×ubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hjê×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¤×ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjl×h²hh³j}×h´MAubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh×h²hh³j}×h´MAubah}”(h]”jc×ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j}×h´MAhje×h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#increment a refcount unless it is 0”h]”hŒ#increment a refcount unless it is 0”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MAhjØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hje×h²hh³j}×h´MAubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj+ØjHj+ØjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX·**Parameters** ``refcount_t *r`` the refcount to increment **Description** Similar to atomic_inc_not_zero(), but will saturate at REFCOUNT_SATURATED and WARN. Provides no memory ordering, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top. **Return** true if the increment was successful, false otherwise”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj5Øh]”hŒ Parameters”…”�”}”(hj7Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MEhj/Øubj¤)�”}”(hhh]”j©)�”}”(hŒ,``refcount_t *r`` the refcount to increment ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hjTØh]”hŒ refcount_t *r”…”�”}”(hjVØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjRØubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MBhjNØubjÉ)�”}”(hhh]”jM)�”}”(hŒthe refcount to increment”h]”hŒthe refcount to increment”…”�”}”(hjmØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jiØh´MBhjjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjNØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jiØh´MBhjKØubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj/ØubjM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MDhj/ØubjM)�”}”(hŒSSimilar to atomic_inc_not_zero(), but will saturate at REFCOUNT_SATURATED and WARN.”h]”hŒSSimilar to atomic_inc_not_zero(), but will saturate at REFCOUNT_SATURATED and WARN.”…”�”}”(hj¥Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MChj/ØubjM)�”}”(hŒÏProvides no memory ordering, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top.”h]”hŒÏProvides no memory ordering, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top.”…”�”}”(hj´Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MFhj/ØubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÅØh]”hŒReturn”…”�”}”(hjÇØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÃØubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MJhj/ØubjM)�”}”(hŒ5true if the increment was successful, false otherwise”h]”hŒ5true if the increment was successful, false otherwise”…”�”}”(hjÛØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MKhj/Øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*refcount_inc_not_zero_acquire (C function)”Œc.refcount_inc_not_zero_acquire”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2bool refcount_inc_not_zero_acquire (refcount_t *r)”h]”hù)�”}”(hŒ1bool refcount_inc_not_zero_acquire(refcount_t *r)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj Ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÙh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MXubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÙh²hh³jÙh´MXubhÿ)�”}”(hŒrefcount_inc_not_zero_acquire”h]”j)�”}”(hŒrefcount_inc_not_zero_acquire”h]”hŒrefcount_inc_not_zero_acquire”…”�”}”(hj*Ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&Ùubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÙh²hh³jÙh´MXubj4)�”}”(hŒ(refcount_t *r)”h]”j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hjIÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jKÙŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj,ÙsbŒc.refcount_inc_not_zero_acquire”†”asbuh1hhjBÙubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÙh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjBÙubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjwÙh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjBÙubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hj„Ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>Ùubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÙh²hh³jÙh´MXubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÙh²hh³jÙh´MXubah}”(h]”jýØah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÙh´MXhjÿØh²hubj4)�”}”(hhh]”jM)�”}”(hŒ9increment a refcount with acquire ordering unless it is 0”h]”hŒ9increment a refcount with acquire ordering unless it is 0”…”�”}”(hj­Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MXhjªÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÿØh²hh³jÙh´MXubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÅÙjHjÅÙjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXS**Parameters** ``refcount_t *r`` the refcount to increment **Description** Similar to refcount_inc_not_zero(), but provides acquire memory ordering on success. This function should be used when memory occupied by the object might be reused to store another object -- consider SLAB_TYPESAFE_BY_RCU. Provides acquire memory ordering on success, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top. **Return** true if the increment was successful, false otherwise”h]”(jM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M\hjÉÙubj¤)�”}”(hhh]”j©)�”}”(hŒ,``refcount_t *r`` the refcount to increment ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hjîÙh]”hŒ refcount_t *r”…”�”}”(hjðÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjìÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MYhjèÙubjÉ)�”}”(hhh]”jM)�”}”(hŒthe refcount to increment”h]”hŒthe refcount to increment”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÚh´MYhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjèÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÚh´MYhjåÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÉÙubjM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”•h´M[hjÉÙubjM)�”}”(hŒTSimilar to refcount_inc_not_zero(), but provides acquire memory ordering on success.”h]”hŒTSimilar to refcount_inc_not_zero(), but provides acquire memory ordering on success.”…”�”}”(hj?Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MZhjÉÙubjM)�”}”(hŒ‰This function should be used when memory occupied by the object might be reused to store another object -- consider SLAB_TYPESAFE_BY_RCU.”h]”hŒ‰This function should be used when memory occupied by the object might be reused to store another object -- consider SLAB_TYPESAFE_BY_RCU.”…”�”}”(hjNÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M]hjÉÙubjM)�”}”(hŒßProvides acquire memory ordering on success, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top.”h]”hŒßProvides acquire memory ordering on success, it is assumed the caller has guaranteed the object memory to be stable (RCU, etc.). It does provide a control dependency and thereby orders future stores. See the comment on top.”…”�”}”(hj]Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M`hjÉÙubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjnÚh]”hŒReturn”…”�”}”(hjpÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MdhjÉÙubjM)�”}”(hŒ5true if the increment was successful, false otherwise”h]”hŒ5true if the increment was successful, false otherwise”…”�”}”(hj„Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MehjÉÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒrefcount_inc (C function)”Œc.refcount_inc”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ!void refcount_inc (refcount_t *r)”h]”hù)�”}”(hŒ void refcount_inc(refcount_t *r)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³Úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¯Úh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂÚh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯Úh²hh³jÁÚh´Mrubhÿ)�”}”(hŒ refcount_inc”h]”j)�”}”(hŒ refcount_inc”h]”hŒ refcount_inc”…”�”}”(hjÔÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐÚubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¯Úh²hh³jÁÚh´Mrubj4)�”}”(hŒ(refcount_t *r)”h]”j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hjóÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jõÚŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÖÚsbŒc.refcount_inc”†”asbuh1hhjìÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjìÚubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj!Ûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjìÚubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hj.Ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjèÚubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¯Úh²hh³jÁÚh´Mrubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj«Úh²hh³jÁÚh´Mrubah}”(h]”j¦Úah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÁÚh´Mrhj¨Úh²hubj4)�”}”(hhh]”jM)�”}”(hŒincrement a refcount”h]”hŒincrement a refcount”…”�”}”(hjWÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MrhjTÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨Úh²hh³jÁÚh´Mrubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjoÛjHjoÛjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXQ**Parameters** ``refcount_t *r`` the refcount to increment **Description** Similar to atomic_inc(), but will saturate at REFCOUNT_SATURATED and WARN. Provides no memory ordering, it is assumed the caller already has a reference on the object. Will WARN if the refcount is 0, as this represents a possible use-after-free condition.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjyÛh]”hŒ Parameters”…”�”}”(hj{Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MvhjsÛubj¤)�”}”(hhh]”j©)�”}”(hŒ,``refcount_t *r`` the refcount to increment ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hj˜Ûh]”hŒ refcount_t *r”…”�”}”(hjšÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj–Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´Mshj’ÛubjÉ)�”}”(hhh]”jM)�”}”(hŒthe refcount to increment”h]”hŒthe refcount to increment”…”�”}”(hj±Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j­Ûh´Mshj®Û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£hjsÛubjM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MuhjsÛubjM)�”}”(hŒJSimilar to atomic_inc(), but will saturate at REFCOUNT_SATURATED and WARN.”h]”hŒJSimilar to atomic_inc(), but will saturate at REFCOUNT_SATURATED and WARN.”…”�”}”(hjéÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MthjsÛubjM)�”}”(hŒ\Provides no memory ordering, it is assumed the caller already has a reference on the object.”h]”hŒ\Provides no memory ordering, it is assumed the caller already has a reference on the object.”…”�”}”(hjøÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MvhjsÛubjM)�”}”(hŒWWill WARN if the refcount is 0, as this represents a possible use-after-free condition.”h]”hŒWWill WARN if the refcount is 0, as this represents a possible use-after-free condition.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MyhjsÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"refcount_sub_and_test (C function)”Œc.refcount_sub_and_test”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool refcount_sub_and_test (int i, refcount_t *r)”h]”hù)�”}”(hŒ0bool refcount_sub_and_test(int i, refcount_t *r)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj6Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj2Üh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDÜh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj2Üh²hh³jCÜh´M–ubhÿ)�”}”(hŒrefcount_sub_and_test”h]”j)�”}”(hŒrefcount_sub_and_test”h]”hŒrefcount_sub_and_test”…”�”}”(hjVÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRÜubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj2Üh²hh³jCÜh´M–ubj4)�”}”(hŒ(int i, refcount_t *r)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjrÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjnÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Üh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjnÜubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjŽÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjjÜubj:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hj©Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦Üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j«ÜŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjXÜsbŒc.refcount_sub_and_test”†”asbuh1hhj¢ÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉÜh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¢Üubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj×Üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¢Üubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hjäÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjjÜubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj2Üh²hh³jCÜh´M–ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj.Üh²hh³jCÜh´M–ubah}”(h]”j)Üah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jCÜh´M–hj+Üh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,subtract from a refcount and test if it is 0”h]”hŒ,subtract from a refcount and test if it is 0”…”�”}”(hj Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M–hj Ýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj+Üh²hh³jCÜh´M–ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj%ÝjHj%ÝjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXú**Parameters** ``int i`` amount to subtract from the refcount ``refcount_t *r`` the refcount **Description** Similar to atomic_dec_and_test(), but it will WARN, return false and ultimately leak on underflow and will fail to decrement when saturated at REFCOUNT_SATURATED. Provides release memory ordering, such that prior loads and stores are done before, and provides an acquire ordering on success such that free() must come after. Use of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_dec(), or one of its variants, should instead be used to decrement a reference count. **Return** true if the resulting refcount is 0, false otherwise”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj/Ýh]”hŒ Parameters”…”�”}”(hj1Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´Mšhj)Ýubj¤)�”}”(hhh]”(j©)�”}”(hŒ/``int i`` amount to subtract from the refcount ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjNÝh]”hŒint i”…”�”}”(hjPÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjLÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M—hjHÝubjÉ)�”}”(hhh]”jM)�”}”(hŒ$amount to subtract from the refcount”h]”hŒ$amount to subtract from the refcount”…”�”}”(hjgÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jcÝh´M—hjdÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjHÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jcÝh´M—hjEÝubj©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hj‡Ýh]”hŒ refcount_t *r”…”�”}”(hj‰Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj…Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M˜hj�ÝubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hj Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jœÝh´M˜hj�Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jœÝh´M˜hjEÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj)ÝubjM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´Mšhj)ÝubjM)�”}”(hŒ¢Similar to atomic_dec_and_test(), but it will WARN, return false and ultimately leak on underflow and will fail to decrement when saturated at REFCOUNT_SATURATED.”h]”hŒ¢Similar to atomic_dec_and_test(), but it will WARN, return false and ultimately leak on underflow and will fail to decrement when saturated at REFCOUNT_SATURATED.”…”�”}”(hjØÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M™hj)ÝubjM)�”}”(hŒ¡Provides release memory ordering, such that prior loads and stores are done before, and provides an acquire ordering on success such that free() must come after.”h]”hŒ¡Provides release memory ordering, such that prior loads and stores are done before, and provides an acquire ordering on success such that free() must come after.”…”�”}”(hjçÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M�hj)ÝubjM)�”}”(hŒüUse of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_dec(), or one of its variants, should instead be used to decrement a reference count.”h]”hŒüUse of this function is not recommended for the normal reference counting use case in which references are taken and released one at a time. In these cases, refcount_dec(), or one of its variants, should instead be used to decrement a reference count.”…”�”}”(hjöÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M¡hj)ÝubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÞh]”hŒReturn”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M¦hj)ÝubjM)�”}”(hŒ4true if the resulting refcount is 0, false otherwise”h]”hŒ4true if the resulting refcount is 0, false otherwise”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M§hj)Ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"refcount_dec_and_test (C function)”Œc.refcount_dec_and_test”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*bool refcount_dec_and_test (refcount_t *r)”h]”hù)�”}”(hŒ)bool refcount_dec_and_test(refcount_t *r)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjLÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjHÞh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjHÞh²hh³jYÞh´M´ubhÿ)�”}”(hŒrefcount_dec_and_test”h]”j)�”}”(hŒrefcount_dec_and_test”h]”hŒrefcount_dec_and_test”…”�”}”(hjlÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhÞubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjHÞh²hh³jYÞh´M´ubj4)�”}”(hŒ(refcount_t *r)”h]”j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hj‹Þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�ÞŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjnÞsbŒc.refcount_dec_and_test”†”asbuh1hhj„ÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Þh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„Þubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¹Þh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj„Þubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hjÆÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj€Þubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjHÞh²hh³jYÞh´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjDÞh²hh³jYÞh´M´ubah}”(h]”j?Þah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jYÞh´M´hjAÞh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(decrement a refcount and test if it is 0”h]”hŒ(decrement a refcount and test if it is 0”…”�”}”(hjïÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M´hjìÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjAÞh²hh³jYÞh´M´ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjßjHjßjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXŸ**Parameters** ``refcount_t *r`` the refcount **Description** Similar to atomic_dec_and_test(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED. Provides release memory ordering, such that prior loads and stores are done before, and provides an acquire ordering on success such that free() must come after. **Return** true if the resulting refcount is 0, false otherwise”h]”(jM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M¸hj ßubj¤)�”}”(hhh]”j©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hj0ßh]”hŒ refcount_t *r”…”�”}”(hj2ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj.ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´Mµhj*ßubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjIßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jEßh´MµhjFßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jEßh´Mµhj'ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ßubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjkßh]”hŒ Description”…”�”}”(hjmßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjißubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M·hj ßubjM)�”}”(hŒwSimilar to atomic_dec_and_test(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED.”h]”hŒwSimilar to atomic_dec_and_test(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED.”…”�”}”(hj�ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M¶hj ßubjM)�”}”(hŒ¡Provides release memory ordering, such that prior loads and stores are done before, and provides an acquire ordering on success such that free() must come after.”h]”hŒ¡Provides release memory ordering, such that prior loads and stores are done before, and provides an acquire ordering on success such that free() must come after.”…”�”}”(hj�ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M¹hj ßubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¡ßh]”hŒReturn”…”�”}”(hj£ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŸßubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M½hj ßubjM)�”}”(hŒ4true if the resulting refcount is 0, false otherwise”h]”hŒ4true if the resulting refcount is 0, false otherwise”…”�”}”(hj·ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M¾hj ßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒrefcount_dec (C function)”Œc.refcount_dec”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ!void refcount_dec (refcount_t *r)”h]”hù)�”}”(hŒ void refcount_dec(refcount_t *r)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjæßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjâßh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MÑubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõßh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâßh²hh³jôßh´MÑubhÿ)�”}”(hŒ refcount_dec”h]”j)�”}”(hŒ refcount_dec”h]”hŒ refcount_dec”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjâßh²hh³jôßh´MÑubj4)�”}”(hŒ(refcount_t *r)”h]”j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hj&àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j(àŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj àsbŒc.refcount_dec”†”asbuh1hhjàubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFàh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjTàh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjàubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hjaàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjàubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjâßh²hh³jôßh´MÑubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÞßh²hh³jôßh´MÑubah}”(h]”jÙßah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jôßh´MÑhjÛßh²hubj4)�”}”(hhh]”jM)�”}”(hŒdecrement a refcount”h]”hŒdecrement a refcount”…”�”}”(hjŠàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MÑhj‡àh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÛßh²hh³jôßh´MÑubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¢àjHj¢àjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX**Parameters** ``refcount_t *r`` the refcount **Description** Similar to atomic_dec(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED. Provides release memory ordering, such that prior loads and stores are done before.”h]”(jM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MÕhj¦àubj¤)�”}”(hhh]”j©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hjËàh]”hŒ refcount_t *r”…”�”}”(hjÍàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÉàubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MÒhjÅàubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjäàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¦àubjM)�”}”(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&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MÔhj¦àubjM)�”}”(hŒnSimilar to atomic_dec(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED.”h]”hŒnSimilar to atomic_dec(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED.”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MÓhj¦àubjM)�”}”(hŒSProvides release memory ordering, such that prior loads and stores are done before.”h]”hŒSProvides release memory ordering, such that prior loads and stores are done before.”…”�”}”(hj+áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MÖhj¦àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ refcount_dec_if_one (C function)”Œc.refcount_dec_if_one”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(bool refcount_dec_if_one (refcount_t *r)”h]”hù)�”}”(hŒ'bool refcount_dec_if_one(refcount_t *r)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjZáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjVáh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjháh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjVáh²hh³jgáh´K1ubhÿ)�”}”(hŒrefcount_dec_if_one”h]”j)�”}”(hŒrefcount_dec_if_one”h]”hŒrefcount_dec_if_one”…”�”}”(hjzáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjváubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjVáh²hh³jgáh´K1ubj4)�”}”(hŒ(refcount_t *r)”h]”j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hj™áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j›áŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj|ásbŒc.refcount_dec_if_one”†”asbuh1hhj’áubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj’áubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÇáh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj’áubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hjÔáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽáubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjVáh²hh³jgáh´K1ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjRáh²hh³jgáh´K1ubah}”(h]”jMáah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jgáh´K1hjOáh²hubj4)�”}”(hhh]”jM)�”}”(hŒdecrement a refcount if it is 1”h]”hŒdecrement a refcount if it is 1”…”�”}”(hjýáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K1hjúáh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjOáh²hh³jgáh´K1ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjâjHjâjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXâ**Parameters** ``refcount_t *r`` the refcount **Description** No atomic_t counterpart, it attempts a 1 -> 0 transition and returns the success thereof. Like all decrement operations, it provides release memory order and provides a control dependency. It can be used like a try-delete operator; this explicit case is provided and not cmpxchg in generic, because that would allow implementing unsafe operations. **Return** true if the resulting refcount is 0, false otherwise”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K5hjâubj¤)�”}”(hhh]”j©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hj>âh]”hŒ refcount_t *r”…”�”}”(hj@âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj<âubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K2hj8âubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjWâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jSâh´K2hjTâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj8âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jSâh´K2hj5âubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjâubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjyâh]”hŒ Description”…”�”}”(hj{âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwâubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K4hjâubjM)�”}”(hŒYNo atomic_t counterpart, it attempts a 1 -> 0 transition and returns the success thereof.”h]”hŒYNo atomic_t counterpart, it attempts a 1 -> 0 transition and returns the success thereof.”…”�”}”(hj�âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K3hjâubjM)�”}”(hŒbLike all decrement operations, it provides release memory order and provides a control dependency.”h]”hŒbLike all decrement operations, it provides release memory order and provides a control dependency.”…”�”}”(hjžâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K6hjâubjM)�”}”(hŒžIt can be used like a try-delete operator; this explicit case is provided and not cmpxchg in generic, because that would allow implementing unsafe operations.”h]”hŒžIt can be used like a try-delete operator; this explicit case is provided and not cmpxchg in generic, because that would allow implementing unsafe operations.”…”�”}”(hj­âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K9hjâubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¾âh]”hŒReturn”…”�”}”(hjÀâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼âubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K=hjâubjM)�”}”(hŒ4true if the resulting refcount is 0, false otherwise”h]”hŒ4true if the resulting refcount is 0, false otherwise”…”�”}”(hjÔâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K>hjâubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!refcount_dec_not_one (C function)”Œc.refcount_dec_not_one”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ)bool refcount_dec_not_one (refcount_t *r)”h]”hù)�”}”(hŒ(bool refcount_dec_not_one(refcount_t *r)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÿâh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KIubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿâh²hh³jãh´KIubhÿ)�”}”(hŒrefcount_dec_not_one”h]”j)�”}”(hŒrefcount_dec_not_one”h]”hŒrefcount_dec_not_one”…”�”}”(hj#ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjãubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÿâh²hh³jãh´KIubj4)�”}”(hŒ(refcount_t *r)”h]”j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hjBãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jDãŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj%ãsbŒc.refcount_dec_not_one”†”asbuh1hhj;ãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;ãubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjpãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj;ãubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hj}ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj7ãubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÿâh²hh³jãh´KIubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjûâh²hh³jãh´KIubah}”(h]”jöâah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jãh´KIhjøâh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#decrement a refcount if it is not 1”h]”hŒ#decrement a refcount if it is not 1”…”�”}”(hj¦ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KIhj£ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjøâh²hh³jãh´KIubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¾ãjHj¾ãjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX/**Parameters** ``refcount_t *r`` the refcount **Description** No atomic_t counterpart, it decrements unless the value is 1, in which case it will return false. Was often done like: atomic_add_unless(:c:type:`var`, -1, 1) **Return** true if the decrement operation was successful, false otherwise”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KMhjÂãubj¤)�”}”(hhh]”j©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hjçãh]”hŒ refcount_t *r”…”�”}”(hjéãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjåãubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KJhjáãubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jüãh´KJhjýãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjáãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jüãh´KJhjÞãubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÂãubjM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KLhjÂãubjM)�”}”(hŒaNo atomic_t counterpart, it decrements unless the value is 1, in which case it will return false.”h]”hŒaNo atomic_t counterpart, it decrements unless the value is 1, in which case it will return false.”…”�”}”(hj8äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KKhjÂãubjM)�”}”(hŒhjNåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_åh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjNåubh)�”}”(hhh]”j)�”}”(hŒmutex”h]”hŒmutex”…”�”}”(hjpåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jråŒmodname”NŒ classname”Njwjz)�”}”j}]”jåŒc.refcount_dec_and_mutex_lock”†”asbuh1hhjNåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽåh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjNåubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjœåh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjNåubj)�”}”(hŒlock”h]”hŒlock”…”�”}”(hj©åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjôäubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¼äh²hh³jÍäh´Kkubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¸äh²hh³jÍäh´Kkubah}”(h]”j³äah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÍäh´Kkhjµäh²hubj4)�”}”(hhh]”jM)�”}”(hŒ7return holding mutex if able to decrement refcount to 0”h]”hŒ7return holding mutex if able to decrement refcount to 0”…”�”}”(hjÓåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KkhjÐåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjµäh²hh³jÍäh´Kkubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjëåjHjëåjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX÷**Parameters** ``refcount_t *r`` the refcount ``struct mutex *lock`` the mutex to be locked **Description** Similar to atomic_dec_and_mutex_lock(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED. Provides release memory ordering, such that prior loads and stores are done before, and provides a control dependency such that free() must come after. See the comment on top. **Return** true and hold mutex if able to decrement refcount to 0, false otherwise”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´Kohjïåubj¤)�”}”(hhh]”(j©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hjæh]”hŒ refcount_t *r”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KmhjæubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hj-æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j)æh´Kmhj*æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j)æh´Kmhj æubj©)�”}”(hŒ.``struct mutex *lock`` the mutex to be locked ”h]”(j¯)�”}”(hŒ``struct mutex *lock``”h]”jS)�”}”(hjMæh]”hŒstruct mutex *lock”…”�”}”(hjOæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKæubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KnhjGæubjÉ)�”}”(hhh]”jM)�”}”(hŒthe mutex to be locked”h]”hŒthe mutex to be locked”…”�”}”(hjfæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jbæh´Knhjcæubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbæh´Knhj æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjïåubjM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KphjïåubjM)�”}”(hŒ}Similar to atomic_dec_and_mutex_lock(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED.”h]”hŒ}Similar to atomic_dec_and_mutex_lock(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED.”…”�”}”(hjžæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KohjïåubjM)�”}”(hŒ¯Provides release memory ordering, such that prior loads and stores are done before, and provides a control dependency such that free() must come after. See the comment on top.”h]”hŒ¯Provides release memory ordering, such that prior loads and stores are done before, and provides a control dependency such that free() must come after. See the comment on top.”…”�”}”(hj­æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KrhjïåubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¾æh]”hŒReturn”…”�”}”(hjÀæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼æubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KvhjïåubjM)�”}”(hŒGtrue and hold mutex if able to decrement refcount to 0, false otherwise”h]”hŒGtrue and hold mutex if able to decrement refcount to 0, false otherwise”…”�”}”(hjÔæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´Kwhjïåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"refcount_dec_and_lock (C function)”Œc.refcount_dec_and_lock”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:èubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KŒhj6èubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjUèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQèh´KŒhjRèubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQèh´KŒhj3èubj©)�”}”(hŒ/``spinlock_t *lock`` the spinlock to be locked ”h]”(j¯)�”}”(hŒ``spinlock_t *lock``”h]”jS)�”}”(hjuèh]”hŒspinlock_t *lock”…”�”}”(hjwèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjsèubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K�hjoèubjÉ)�”}”(hhh]”jM)�”}”(hŒthe spinlock to be locked”h]”hŒthe spinlock to be locked”…”�”}”(hjŽèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠèh´K�hj‹èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjoèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠèh´K�hj3èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjèubjM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K�hjèubjM)�”}”(hŒwSimilar to atomic_dec_and_lock(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED.”h]”hŒwSimilar to atomic_dec_and_lock(), it will WARN on underflow and fail to decrement when saturated at REFCOUNT_SATURATED.”…”�”}”(hjÆèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KŽhjèubjM)�”}”(hŒ¯Provides release memory ordering, such that prior loads and stores are done before, and provides a control dependency such that free() must come after. See the comment on top.”h]”hŒ¯Provides release memory ordering, such that prior loads and stores are done before, and provides a control dependency such that free() must come after. See the comment on top.”…”�”}”(hjÕèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K‘hjèubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjæèh]”hŒReturn”…”�”}”(hjèèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjäèubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K•hjèubjM)�”}”(hŒJtrue and hold spinlock if able to decrement refcount to 0, false otherwise”h]”hŒJtrue and hold spinlock if able to decrement refcount to 0, false otherwise”…”�”}”(hjüèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K–hjèubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*refcount_dec_and_lock_irqsave (C function)”Œc.refcount_dec_and_lock_irqsave”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒZbool refcount_dec_and_lock_irqsave (refcount_t *r, spinlock_t *lock, unsigned long *flags)”h]”hù)�”}”(hŒYbool refcount_dec_and_lock_irqsave(refcount_t *r, spinlock_t *lock, unsigned long *flags)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj+éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj'éh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9éh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'éh²hh³j8éh´K©ubhÿ)�”}”(hŒrefcount_dec_and_lock_irqsave”h]”j)�”}”(hŒrefcount_dec_and_lock_irqsave”h]”hŒrefcount_dec_and_lock_irqsave”…”�”}”(hjKéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGéubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj'éh²hh³j8éh´K©ubj4)�”}”(hŒ7(refcount_t *r, spinlock_t *lock, unsigned long *flags)”h]”(j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_t”…”�”}”(hjjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jléŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjMésbŒc.refcount_dec_and_lock_irqsave”†”asbuh1hhjcéubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠéh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcéubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj˜éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjcéubj)�”}”(hjˆÌh]”hŒr”…”�”}”(hj¥éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjcéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj_éubj:)�”}”(hŒspinlock_t *lock”h]”(h)�”}”(hhh]”j)�”}”(hŒ spinlock_t”h]”hŒ spinlock_t”…”�”}”(hjÀéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÂéŒmodname”NŒ classname”Njwjz)�”}”j}]”j†éŒc.refcount_dec_and_lock_irqsave”†”asbuh1hhj¹éubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞéh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹éubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjìéh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¹éubj)�”}”(hŒlock”h]”hŒlock”…”�”}”(hjùéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj_éubj:)�”}”(hŒunsigned long *flags”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjêubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj êh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjêubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj.êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjêubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<êh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjêubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjJêh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjêubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjWêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj_éubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj'éh²hh³j8éh´K©ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj#éh²hh³j8éh´K©ubah}”(h]”jéah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j8éh´K©hj éh²hubj4)�”}”(hhh]”jM)�”}”(hŒSreturn holding spinlock with disabled interrupts if able to decrement refcount to 0”h]”hŒSreturn holding spinlock with disabled interrupts if able to decrement refcount to 0”…”�”}”(hj�êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K©hj~êh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj éh²hh³j8éh´K©ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj™êjHj™êjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXp**Parameters** ``refcount_t *r`` the refcount ``spinlock_t *lock`` the spinlock to be locked ``unsigned long *flags`` saved IRQ-flags if the is acquired **Description** Same as refcount_dec_and_lock() above except that the spinlock is acquired with disabled interrupts. **Return** true and hold spinlock if able to decrement refcount to 0, false otherwise”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K­hj�êubj¤)�”}”(hhh]”(j©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hjÂêh]”hŒ refcount_t *r”…”�”}”(hjÄêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÀêubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K«hj¼êubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjÛêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ/``spinlock_t *lock`` the spinlock to be locked ”h]”(j¯)�”}”(hŒ``spinlock_t *lock``”h]”jS)�”}”(hjûêh]”hŒspinlock_t *lock”…”�”}”(hjýêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjùêubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K¬hjõêubjÉ)�”}”(hhh]”jM)�”}”(hŒthe spinlock to be locked”h]”hŒthe spinlock to be locked”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ<``unsigned long *flags`` saved IRQ-flags if the is acquired ”h]”(j¯)�”}”(hŒ``unsigned long *flags``”h]”jS)�”}”(hj4ëh]”hŒunsigned long *flags”…”�”}”(hj6ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj2ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K­hj.ëubjÉ)�”}”(hhh]”jM)�”}”(hŒ"saved IRQ-flags if the is acquired”h]”hŒ"saved IRQ-flags if the is acquired”…”�”}”(hjMëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jIëh´K­hjJëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj.ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jIëh´K­hj¹êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�êubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjoëh]”hŒ Description”…”�”}”(hjqëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmëubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K¯hj�êubjM)�”}”(hŒdSame as refcount_dec_and_lock() above except that the spinlock is acquired with disabled interrupts.”h]”hŒdSame as refcount_dec_and_lock() above except that the spinlock is acquired with disabled interrupts.”…”�”}”(hj…ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K®hj�êubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj–ëh]”hŒReturn”…”�”}”(hj˜ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K±hj�êubjM)�”}”(hŒJtrue and hold spinlock if able to decrement refcount to 0, false otherwise”h]”hŒJtrue and hold spinlock if able to decrement refcount to 0, false otherwise”…”�”}”(hj¬ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K²hj�êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpercpu_ref_kill (C function)”Œc.percpu_ref_kill”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-void percpu_ref_kill (struct percpu_ref *ref)”h]”hù)�”}”(hŒ,void percpu_ref_kill(struct percpu_ref *ref)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj×ëh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KˆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj×ëh²hh³jéëh´Kˆubhÿ)�”}”(hŒpercpu_ref_kill”h]”j)�”}”(hŒpercpu_ref_kill”h]”hŒpercpu_ref_kill”…”�”}”(hjüëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøëubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj×ëh²hh³jéëh´Kˆubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjìubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hj6ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3ìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j8ìŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjþësbŒc.percpu_ref_kill”†”asbuh1hhjìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjìubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjdìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjìubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjqìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjìubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj×ëh²hh³jéëh´Kˆubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÓëh²hh³jéëh´Kˆubah}”(h]”jÎëah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jéëh´KˆhjÐëh²hubj4)�”}”(hhh]”jM)�”}”(hŒdrop the initial ref”h]”hŒdrop the initial ref”…”�”}”(hj›ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Kˆhj˜ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÐëh²hh³jéëh´Kˆubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj³ìjHj³ìjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXf**Parameters** ``struct percpu_ref *ref`` percpu_ref to kill **Description** Must be used to drop the initial ref on a percpu refcount; must be called precisely once before shutdown. Switches **ref** into atomic mode before gathering up the percpu counters and dropping the initial ref. There are no implied RCU grace periods between kill and release.”h]”(jM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KŒhj·ìubj¤)�”}”(hhh]”j©)�”}”(hŒ.``struct percpu_ref *ref`` percpu_ref to kill ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjÜìh]”hŒstruct percpu_ref *ref”…”�”}”(hjÞìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÚìubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´K‰hjÖìubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to kill”h]”hŒpercpu_ref to kill”…”�”}”(hjõìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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·ìubjM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´K‹hj·ìubjM)�”}”(hŒiMust be used to drop the initial ref on a percpu refcount; must be called precisely once before shutdown.”h]”hŒiMust be used to drop the initial ref on a percpu refcount; must be called precisely once before shutdown.”…”�”}”(hj-íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KŠhj·ìubjM)�”}”(hŒgSwitches **ref** into atomic mode before gathering up the percpu counters and dropping the initial ref.”h]”(hŒ Switches ”…”�”}”(hj<íh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjDíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<íubhŒW into atomic mode before gathering up the percpu counters and dropping the initial ref.”…”�”}”(hj<íh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´K�hj·ìubjM)�”}”(hŒ@There are no implied RCU grace periods between kill and release.”h]”hŒ@There are no implied RCU grace periods between kill and release.”…”�”}”(hj]íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´K�hj·ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ percpu_ref_get_many (C function)”Œc.percpu_ref_get_many”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒCvoid percpu_ref_get_many (struct percpu_ref *ref, unsigned long nr)”h]”hù)�”}”(hŒBvoid percpu_ref_get_many(struct percpu_ref *ref, unsigned long nr)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŒíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjˆíh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´K¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›íh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjˆíh²hh³jšíh´K¾ubhÿ)�”}”(hŒpercpu_ref_get_many”h]”j)�”}”(hŒpercpu_ref_get_many”h]”hŒpercpu_ref_get_many”…”�”}”(hj­íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©íubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjˆíh²hh³jšíh´K¾ubj4)�”}”(hŒ*(struct percpu_ref *ref, unsigned long nr)”h]”(j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÉíh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÅíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖíh²hh³Nh´Nubah}”(h]”h ]”j]ah"•]”h$]”h&]”uh1jPhjÅíubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjçíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jéíŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¯ísbŒc.percpu_ref_get_many”†”asbuh1hhjÅíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅíubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÅíubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj"îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁíubj:)�”}”(hŒunsigned long nr”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj;îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj7îubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7îubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjWîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj7îubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7îubj)�”}”(hŒnr”h]”hŒnr”…”�”}”(hjsîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁíubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjˆíh²hh³jšíh´K¾ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj„íh²hh³jšíh´K¾ubah}”(h]”jíah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jšíh´K¾hj�íh²hubj4)�”}”(hhh]”jM)�”}”(hŒincrement a percpu refcount”h]”hŒincrement a percpu refcount”…”�”}”(hj�îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´K¾hjšîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�íh²hh³jšíh´K¾ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjµîjHjµîjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hŒð**Parameters** ``struct percpu_ref *ref`` percpu_ref to get ``unsigned long nr`` number of references to get **Description** Analogous to atomic_long_add(). This function is safe to call as long as **ref** is between init and exit.”h]”(jM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KÂhj¹îubj¤)�”}”(hhh]”(j©)�”}”(hŒ-``struct percpu_ref *ref`` percpu_ref to get ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjÞîh]”hŒstruct percpu_ref *ref”…”�”}”(hjàîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÜîubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´K¿hjØîubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to get”h]”hŒpercpu_ref to get”…”�”}”(hj÷îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ1``unsigned long nr`` number of references to get ”h]”(j¯)�”}”(hŒ``unsigned long nr``”h]”jS)�”}”(hjïh]”hŒunsigned long nr”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KÀhjïubjÉ)�”}”(hhh]”jM)�”}”(hŒnumber of references to get”h]”hŒnumber of references to get”…”�”}”(hj0ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¹îubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjRïh]”hŒ Description”…”�”}”(hjTïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPïubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KÂhj¹îubjM)�”}”(hŒAnalogous to atomic_long_add().”h]”hŒAnalogous to atomic_long_add().”…”�”}”(hjhïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KÁhj¹îubjM)�”}”(hŒJThis function is safe to call as long as **ref** is between init and exit.”h]”(hŒ)This function is safe to call as long as ”…”�”}”(hjwïh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwïubhŒ is between init and exit.”…”�”}”(hjwïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KÃhj¹îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpercpu_ref_get (C function)”Œc.percpu_ref_get”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,void percpu_ref_get (struct percpu_ref *ref)”h]”hù)�”}”(hŒ+void percpu_ref_get(struct percpu_ref *ref)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¸ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj´ïh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´ïh²hh³jÆïh´KÕubhÿ)�”}”(hŒpercpu_ref_get”h]”j)�”}”(hŒpercpu_ref_get”h]”hŒpercpu_ref_get”…”�”}”(hjÙïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕïubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj´ïh²hh³jÆïh´KÕubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjõïh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjñïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjñïubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jðŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÛïsbŒc.percpu_ref_get”†”asbuh1hhjñïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3ðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjñïubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjAðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjñïubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjNðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjíïubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj´ïh²hh³jÆïh´KÕubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj°ïh²hh³jÆïh´KÕubah}”(h]”j«ïah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÆïh´KÕhj­ïh²hubj4)�”}”(hhh]”jM)�”}”(hŒincrement a percpu refcount”h]”hŒincrement a percpu refcount”…”�”}”(hjxðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KÕhjuðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj­ïh²hh³jÆïh´KÕubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�ðjHj�ðjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hŒ¼**Parameters** ``struct percpu_ref *ref`` percpu_ref to get **Description** Analogous to atomic_long_inc(). This function is safe to call as long as **ref** is between init and exit.”h]”(jM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KÙhj”ðubj¤)�”}”(hhh]”j©)�”}”(hŒ-``struct percpu_ref *ref`` percpu_ref to get ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hj¹ðh]”hŒstruct percpu_ref *ref”…”�”}”(hj»ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj·ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KÖhj³ðubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to get”h]”hŒpercpu_ref to get”…”�”}”(hjÒðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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”ðubjM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KØhj”ðubjM)�”}”(hŒAnalogous to atomic_long_inc().”h]”hŒAnalogous to atomic_long_inc().”…”�”}”(hj ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´K×hj”ðubjM)�”}”(hŒJThis function is safe to call as long as **ref** is between init and exit.”h]”(hŒ)This function is safe to call as long as ”…”�”}”(hjñh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj!ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñubhŒ is between init and exit.”…”�”}”(hjñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KÙhj”ðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#percpu_ref_tryget_many (C function)”Œc.percpu_ref_tryget_many”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒFbool percpu_ref_tryget_many (struct percpu_ref *ref, unsigned long nr)”h]”hù)�”}”(hŒEbool percpu_ref_tryget_many(struct percpu_ref *ref, unsigned long nr)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjZñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjVñh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjVñh²hh³jgñh´Kâubhÿ)�”}”(hŒpercpu_ref_tryget_many”h]”j)�”}”(hŒpercpu_ref_tryget_many”h]”hŒpercpu_ref_tryget_many”…”�”}”(hjzñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvñubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjVñh²hh³jgñh´Kâubj4)�”}”(hŒ*(struct percpu_ref *ref, unsigned long nr)”h]”(j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj–ñh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj’ñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£ñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj’ñubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hj´ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¶ñŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj|ñsbŒc.percpu_ref_tryget_many”†”asbuh1hhj’ñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj’ñubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjâñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj’ñubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjïñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽñubj:)�”}”(hŒunsigned long nr”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjòubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj$òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjòubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2òh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòubj)�”}”(hŒnr”h]”hŒnr”…”�”}”(hj@òh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽñubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjVñh²hh³jgñh´Kâubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjRñh²hh³jgñh´Kâubah}”(h]”jMñah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jgñh´KâhjOñh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"try to increment a percpu refcount”h]”hŒ"try to increment a percpu refcount”…”�”}”(hjjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Kâhjgòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjOñh²hh³jgñh´Kâubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‚òjHj‚òjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXU**Parameters** ``struct percpu_ref *ref`` percpu_ref to try-get ``unsigned long nr`` number of references to get **Description** Increment a percpu refcount by **nr** unless its count already reached zero. Returns ``true`` on success; ``false`` on failure. This function is safe to call as long as **ref** is between init and exit.”h]”(jM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Kæhj†òubj¤)�”}”(hhh]”(j©)�”}”(hŒ1``struct percpu_ref *ref`` percpu_ref to try-get ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hj«òh]”hŒstruct percpu_ref *ref”…”�”}”(hj­òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj©òubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Kãhj¥òubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to try-get”h]”hŒpercpu_ref to try-get”…”�”}”(hjÄòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ1``unsigned long nr`` number of references to get ”h]”(j¯)�”}”(hŒ``unsigned long nr``”h]”jS)�”}”(hjäòh]”hŒunsigned long nr”…”�”}”(hjæòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjâòubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KähjÞòubjÉ)�”}”(hhh]”jM)�”}”(hŒnumber of references to get”h]”hŒnumber of references to get”…”�”}”(hjýòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj†òubjM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Kæhj†òubjM)�”}”(hŒ€Increment a percpu refcount by **nr** unless its count already reached zero. Returns ``true`` on success; ``false`` on failure.”h]”(hŒ Increment a percpu refcount by ”…”�”}”(hj5óh²hh³Nh´NubjŽ)�”}”(hŒ**nr**”h]”hŒnr”…”�”}”(hj=óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5óubhŒ0 unless its count already reached zero. Returns ”…”�”}”(hj5óh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjOóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5óubhŒ on success; ”…”�”}”(hj5óh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjaóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5óubhŒ on failure.”…”�”}”(hj5óh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Kåhj†òubjM)�”}”(hŒJThis function is safe to call as long as **ref** is between init and exit.”h]”(hŒ)This function is safe to call as long as ”…”�”}”(hjzóh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj‚óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzóubhŒ is between init and exit.”…”�”}”(hjzóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Kèhj†òubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpercpu_ref_tryget (C function)”Œc.percpu_ref_tryget”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/bool percpu_ref_tryget (struct percpu_ref *ref)”h]”hù)�”}”(hŒ.bool percpu_ref_tryget(struct percpu_ref *ref)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj»óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj·óh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉóh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·óh²hh³jÈóh´Mubhÿ)�”}”(hŒpercpu_ref_tryget”h]”j)�”}”(hŒpercpu_ref_tryget”h]”hŒpercpu_ref_tryget”…”�”}”(hjÛóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×óubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj·óh²hh³jÈóh´Mubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj÷óh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjóóubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjóóubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jôŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÝósbŒc.percpu_ref_tryget”†”asbuh1hhjóóubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5ôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjóóubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjCôh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjóóubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjPôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjóóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjïóubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj·óh²hh³jÈóh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj³óh²hh³jÈóh´Mubah}”(h]”j®óah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÈóh´Mhj°óh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"try to increment a percpu refcount”h]”hŒ"try to increment a percpu refcount”…”�”}”(hjzôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhjwôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj°óh²hh³jÈóh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj’ôjHj’ôjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX**Parameters** ``struct percpu_ref *ref`` percpu_ref to try-get **Description** Increment a percpu refcount unless its count already reached zero. Returns ``true`` on success; ``false`` on failure. This function is safe to call as long as **ref** is between init and exit.”h]”(jM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhj–ôubj¤)�”}”(hhh]”j©)�”}”(hŒ1``struct percpu_ref *ref`` percpu_ref to try-get ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hj»ôh]”hŒstruct percpu_ref *ref”…”�”}”(hj½ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¹ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MhjµôubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to try-get”h]”hŒpercpu_ref to try-get”…”�”}”(hjÔôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÐôh´MhjÑôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjµôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÐôh´Mhj²ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj–ôubjM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhj–ôubjM)�”}”(hŒuIncrement a percpu refcount unless its count already reached zero. Returns ``true`` on success; ``false`` on failure.”h]”(hŒKIncrement a percpu refcount unless its count already reached zero. Returns ”…”�”}”(hj õh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj õubhŒ on success; ”…”�”}”(hj õh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj&õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj õubhŒ on failure.”…”�”}”(hj õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhj–ôubjM)�”}”(hŒJThis function is safe to call as long as **ref** is between init and exit.”h]”(hŒ)This function is safe to call as long as ”…”�”}”(hj?õh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjGõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?õubhŒ is between init and exit.”…”�”}”(hj?õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhj–ôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'percpu_ref_tryget_live_rcu (C function)”Œc.percpu_ref_tryget_live_rcu”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8bool percpu_ref_tryget_live_rcu (struct percpu_ref *ref)”h]”hù)�”}”(hŒ7bool percpu_ref_tryget_live_rcu(struct percpu_ref *ref)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj€õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj|õh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽõh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|õh²hh³j�õh´Mubhÿ)�”}”(hŒpercpu_ref_tryget_live_rcu”h]”j)�”}”(hŒpercpu_ref_tryget_live_rcu”h]”hŒpercpu_ref_tryget_live_rcu”…”�”}”(hj õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœõubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj|õh²hh³j�õh´Mubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¼õh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¸õubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉõh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸õubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjÚõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÜõŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¢õsbŒc.percpu_ref_tryget_live_rcu”†”asbuh1hhj¸õubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúõh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸õubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¸õubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj´õubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj|õh²hh³j�õh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjxõh²hh³j�õh´Mubah}”(h]”jsõah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�õh´Mhjuõh²hubj4)�”}”(hhh]”jM)�”}”(hŒNsame as percpu_ref_tryget_live() but the caller is responsible for taking RCU.”h]”hŒNsame as percpu_ref_tryget_live() but the caller is responsible for taking RCU.”…”�”}”(hj?öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhj<öh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjuõh²hh³j�õh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjWöjHjWöjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hŒŸ**Parameters** ``struct percpu_ref *ref`` percpu_ref to try-get **Description** This function is safe to call as long as **ref** is between init and exit.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjaöh]”hŒ Parameters”…”�”}”(hjcöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_öubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhj[öubj¤)�”}”(hhh]”j©)�”}”(hŒ1``struct percpu_ref *ref`` percpu_ref to try-get ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hj€öh]”hŒstruct percpu_ref *ref”…”�”}”(hj‚öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj~öubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MhjzöubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to try-get”h]”hŒpercpu_ref to try-get”…”�”}”(hj™öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j•öh´Mhj–öubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjzöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j•öh´Mhjwöubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj[öubjM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhj[öubjM)�”}”(hŒJThis function is safe to call as long as **ref** is between init and exit.”h]”(hŒ)This function is safe to call as long as ”…”�”}”(hjÑöh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjÙöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑöubhŒ is between init and exit.”…”�”}”(hjÑöh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhj[öubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#percpu_ref_tryget_live (C function)”Œc.percpu_ref_tryget_live”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4bool percpu_ref_tryget_live (struct percpu_ref *ref)”h]”hù)�”}”(hŒ3bool percpu_ref_tryget_live(struct percpu_ref *ref)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj÷h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M%ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷h²hh³j÷h´M%ubhÿ)�”}”(hŒpercpu_ref_tryget_live”h]”j)�”}”(hŒpercpu_ref_tryget_live”h]”hŒpercpu_ref_tryget_live”…”�”}”(hj2÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.÷ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj÷h²hh³j÷h´M%ubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjN÷h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjJ÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJ÷ubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjl÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhji÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jn÷Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj4÷sbŒc.percpu_ref_tryget_live”†”asbuh1hhjJ÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJ÷ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjš÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjJ÷ubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj§÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjF÷ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj÷h²hh³j÷h´M%ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj ÷h²hh³j÷h´M%ubah}”(h]”j÷ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j÷h´M%hj÷h²hubj4)�”}”(hhh]”jM)�”}”(hŒ'try to increment a live percpu refcount”h]”hŒ'try to increment a live percpu refcount”…”�”}”(hjÑ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M%hjÎ÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj÷h²hh³j÷h´M%ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjé÷jHjé÷jI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX3**Parameters** ``struct percpu_ref *ref`` percpu_ref to try-get **Description** Increment a percpu refcount unless it has already been killed. Returns ``true`` on success; ``false`` on failure. Completion of percpu_ref_kill() in itself doesn't guarantee that this function will fail. For such guarantee, percpu_ref_kill_and_confirm() should be used. After the confirm_kill callback is invoked, it's guaranteed that no new reference will be given out by percpu_ref_tryget_live(). This function is safe to call as long as **ref** is between init and exit.”h]”(jM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M)hjí÷ubj¤)�”}”(hhh]”j©)�”}”(hŒ1``struct percpu_ref *ref`` percpu_ref to try-get ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjøh]”hŒstruct percpu_ref *ref”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M&hj øubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to try-get”h]”hŒpercpu_ref to try-get”…”�”}”(hj+øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjí÷ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjMøh]”hŒ Description”…”�”}”(hjOøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKøubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M(hjí÷ubjM)�”}”(hŒrIncrement a percpu refcount unless it has already been killed. Returns ``true`` on success; ``false`` on failure.”h]”(hŒHIncrement a percpu refcount unless it has already been killed. Returns ”…”�”}”(hjcøh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjkøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjcøubhŒ on success; ”…”�”}”(hjcøh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj}øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjcøubhŒ on failure.”…”�”}”(hjcøh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M'hjí÷ubjM)�”}”(hXCompletion of percpu_ref_kill() in itself doesn't guarantee that this function will fail. For such guarantee, percpu_ref_kill_and_confirm() should be used. After the confirm_kill callback is invoked, it's guaranteed that no new reference will be given out by percpu_ref_tryget_live().”h]”hX"Completion of percpu_ref_kill() in itself doesn’t guarantee that this function will fail. For such guarantee, percpu_ref_kill_and_confirm() should be used. After the confirm_kill callback is invoked, it’s guaranteed that no new reference will be given out by percpu_ref_tryget_live().”…”�”}”(hj–øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M*hjí÷ubjM)�”}”(hŒJThis function is safe to call as long as **ref** is between init and exit.”h]”(hŒ)This function is safe to call as long as ”…”�”}”(hj¥øh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj­øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥øubhŒ is between init and exit.”…”�”}”(hj¥øh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M0hjí÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ percpu_ref_put_many (C function)”Œc.percpu_ref_put_many”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒCvoid percpu_ref_put_many (struct percpu_ref *ref, unsigned long nr)”h]”hù)�”}”(hŒBvoid percpu_ref_put_many(struct percpu_ref *ref, unsigned long nr)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjæøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjâøh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M>ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõøh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâøh²hh³jôøh´M>ubhÿ)�”}”(hŒpercpu_ref_put_many”h]”j)�”}”(hŒpercpu_ref_put_many”h]”hŒpercpu_ref_put_many”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjâøh²hh³jôøh´M>ubj4)�”}”(hŒ*(struct percpu_ref *ref, unsigned long nr)”h]”(j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj#ùh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0ùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjAùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCùŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj ùsbŒc.percpu_ref_put_many”†”asbuh1hhjùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjoùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjùubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj|ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjùubj:)�”}”(hŒunsigned long nr”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj•ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‘ùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£ùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‘ùubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj±ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‘ùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿ùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‘ùubj)�”}”(hŒnr”h]”hŒnr”…”�”}”(hjÍùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjùubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjâøh²hh³jôøh´M>ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÞøh²hh³jôøh´M>ubah}”(h]”jÙøah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jôøh´M>hjÛøh²hubj4)�”}”(hhh]”jM)�”}”(hŒdecrement a percpu refcount”h]”hŒdecrement a percpu refcount”…”�”}”(hj÷ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M>hjôùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÛøh²hh³jôøh´M>ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjújHjújI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX4**Parameters** ``struct percpu_ref *ref`` percpu_ref to put ``unsigned long nr`` number of references to put **Description** Decrement the refcount, and if 0, call the release function (which was passed to percpu_ref_init()) This function is safe to call as long as **ref** is between init and exit.”h]”(jM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MBhjúubj¤)�”}”(hhh]”(j©)�”}”(hŒ-``struct percpu_ref *ref`` percpu_ref to put ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hj8úh]”hŒstruct percpu_ref *ref”…”�”}”(hj:úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj6úubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M?hj2úubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to put”h]”hŒpercpu_ref to put”…”�”}”(hjQúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jMúh´M?hjNúubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj2úubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jMúh´M?hj/úubj©)�”}”(hŒ1``unsigned long nr`` number of references to put ”h]”(j¯)�”}”(hŒ``unsigned long nr``”h]”jS)�”}”(hjqúh]”hŒunsigned long nr”…”�”}”(hjsúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoúubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M@hjkúubjÉ)�”}”(hhh]”jM)�”}”(hŒnumber of references to put”h]”hŒnumber of references to put”…”�”}”(hjŠúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j†úh´M@hj‡úubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjkúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j†úh´M@hj/úubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjúubjM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MBhjúubjM)�”}”(hŒcDecrement the refcount, and if 0, call the release function (which was passed to percpu_ref_init())”h]”hŒcDecrement the refcount, and if 0, call the release function (which was passed to percpu_ref_init())”…”�”}”(hjÂúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MAhjúubjM)�”}”(hŒJThis function is safe to call as long as **ref** is between init and exit.”h]”(hŒ)This function is safe to call as long as ”…”�”}”(hjÑúh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjÙúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑúubhŒ is between init and exit.”…”�”}”(hjÑúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MDhjúubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpercpu_ref_put (C function)”Œc.percpu_ref_put”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,void percpu_ref_put (struct percpu_ref *ref)”h]”hù)�”}”(hŒ+void percpu_ref_put(struct percpu_ref *ref)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjûh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MVubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!ûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûh²hh³j ûh´MVubhÿ)�”}”(hŒpercpu_ref_put”h]”j)�”}”(hŒpercpu_ref_put”h]”hŒpercpu_ref_put”…”�”}”(hj3ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ûubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjûh²hh³j ûh´MVubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjOûh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjKûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjKûubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjmûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjjûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”joûŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj5ûsbŒc.percpu_ref_put”†”asbuh1hhjKûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjKûubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj›ûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjKûubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj¨ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjGûubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjûh²hh³j ûh´MVubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj ûh²hh³j ûh´MVubah}”(h]”jûah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j ûh´MVhjûh²hubj4)�”}”(hhh]”jM)�”}”(hŒdecrement a percpu refcount”h]”hŒdecrement a percpu refcount”…”�”}”(hjÒûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MVhjÏûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjûh²hh³j ûh´MVubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjêûjHjêûjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX**Parameters** ``struct percpu_ref *ref`` percpu_ref to put **Description** Decrement the refcount, and if 0, call the release function (which was passed to percpu_ref_init()) This function is safe to call as long as **ref** is between init and exit.”h]”(jM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MZhjîûubj¤)�”}”(hhh]”j©)�”}”(hŒ-``struct percpu_ref *ref`` percpu_ref to put ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjüh]”hŒstruct percpu_ref *ref”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MWhj üubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to put”h]”hŒpercpu_ref to put”…”�”}”(hj,üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j(üh´MWhj)üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj üubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j(üh´MWhj üubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjîûubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjNüh]”hŒ Description”…”�”}”(hjPüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLüubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MYhjîûubjM)�”}”(hŒcDecrement the refcount, and if 0, call the release function (which was passed to percpu_ref_init())”h]”hŒcDecrement the refcount, and if 0, call the release function (which was passed to percpu_ref_init())”…”�”}”(hjdüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MXhjîûubjM)�”}”(hŒJThis function is safe to call as long as **ref** is between init and exit.”h]”(hŒ)This function is safe to call as long as ”…”�”}”(hjsüh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj{üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsüubhŒ is between init and exit.”…”�”}”(hjsüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´M[hjîûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ percpu_ref_is_dying (C function)”Œc.percpu_ref_is_dying”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool percpu_ref_is_dying (struct percpu_ref *ref)”h]”hù)�”}”(hŒ0bool percpu_ref_is_dying(struct percpu_ref *ref)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj´üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj°üh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´MdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°üh²hh³jÁüh´Mdubhÿ)�”}”(hŒpercpu_ref_is_dying”h]”j)�”}”(hŒpercpu_ref_is_dying”h]”hŒpercpu_ref_is_dying”…”�”}”(hjÔüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐüubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj°üh²hh³jÁüh´Mdubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjðüh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjìüubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjìüubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jýŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÖüsbŒc.percpu_ref_is_dying”†”asbuh1hhjìüubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.ýh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjìüubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj<ýh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjìüubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjIýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjèüubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj°üh²hh³jÁüh´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¬üh²hh³jÁüh´Mdubah}”(h]”j§üah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÁüh´Mdhj©üh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/test whether a percpu refcount is dying or dead”h]”hŒ/test whether a percpu refcount is dying or dead”…”�”}”(hjsýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mdhjpýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj©üh²hh³jÁüh´Mdubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‹ýjHj‹ýjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX**Parameters** ``struct percpu_ref *ref`` percpu_ref to test **Description** Returns ``true`` if **ref** is dying or dead. This function is safe to call as long as **ref** is between init and exit and the caller is responsible for synchronizing against state changes.”h]”(jM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhhj�ýubj¤)�”}”(hhh]”j©)�”}”(hŒ.``struct percpu_ref *ref`` percpu_ref to test ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hj´ýh]”hŒstruct percpu_ref *ref”…”�”}”(hj¶ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mehj®ýubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to test”h]”hŒpercpu_ref to test”…”�”}”(hjÍýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÉýh´MehjÊýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj®ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÉýh´Mehj«ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�ýubjM)�”}”(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&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mghj�ýubjM)�”}”(hŒ-Returns ``true`` if **ref** is dying or dead.”h]”(hŒReturns ”…”�”}”(hjþh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjþubhŒ if ”…”�”}”(hjþh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþubhŒ is dying or dead.”…”�”}”(hjþh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mfhj�ýubjM)�”}”(hŒ�This function is safe to call as long as **ref** is between init and exit and the caller is responsible for synchronizing against state changes.”h]”(hŒ)This function is safe to call as long as ”…”�”}”(hj8þh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj@þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8þubhŒ` is between init and exit and the caller is responsible for synchronizing against state changes.”…”�”}”(hj8þh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhhj�ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpercpu_ref_init (C function)”Œc.percpu_ref_init”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒgint percpu_ref_init (struct percpu_ref *ref, percpu_ref_func_t *release, unsigned int flags, gfp_t gfp)”h]”hù)�”}”(hŒfint percpu_ref_init(struct percpu_ref *ref, percpu_ref_func_t *release, unsigned int flags, gfp_t gfp)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjyþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjuþh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjuþh²hh³j‡þh´K1ubhÿ)�”}”(hŒpercpu_ref_init”h]”j)�”}”(hŒpercpu_ref_init”h]”hŒpercpu_ref_init”…”�”}”(hjšþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–þubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjuþh²hh³j‡þh´K1ubj4)�”}”(hŒS(struct percpu_ref *ref, percpu_ref_func_t *release, unsigned int flags, gfp_t gfp)”h]”(j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¶þh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj²þubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²þubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjÔþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÖþŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjœþsbŒc.percpu_ref_init”†”asbuh1hhj²þubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²þubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj²þubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®þubj:)�”}”(hŒpercpu_ref_func_t *release”h]”(h)�”}”(hhh]”j)�”}”(hŒpercpu_ref_func_t”h]”hŒpercpu_ref_func_t”…”�”}”(hj+ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j-ÿŒmodname”NŒ classname”Njwjz)�”}”j}]”jðþŒc.percpu_ref_init”†”asbuh1hhj$ÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$ÿubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjWÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj$ÿubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hjdÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®þubj:)�”}”(hŒunsigned int flags”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj}ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjyÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyÿubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hj™ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjyÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyÿubj)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjµÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®þubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjÑÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÓÿŒmodname”NŒ classname”Njwjz)�”}”j}]”jðþŒc.percpu_ref_init”†”asbuh1hhjÊÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÊÿubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjýÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®þubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjuþh²hh³j‡þh´K1ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjqþh²hh³j‡þh´K1ubah}”(h]”jlþah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‡þh´K1hjnþh²hubj4)�”}”(hhh]”jM)�”}”(hŒinitialize a percpu refcount”h]”hŒinitialize a percpu refcount”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K1hj$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjnþh²hh³j‡þh´K1ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj?jHj?jI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX·**Parameters** ``struct percpu_ref *ref`` percpu_ref to initialize ``percpu_ref_func_t *release`` function which will be called when refcount hits 0 ``unsigned int flags`` PERCPU_REF_INIT_* flags ``gfp_t gfp`` allocation mask to use **Description** Initializes **ref**. **ref** starts out in percpu mode with a refcount of 1 unless **flags** contains PERCPU_REF_INIT_ATOMIC or PERCPU_REF_INIT_DEAD. These flags change the start state to atomic with the latter setting the initial refcount to 0. See the definitions of PERCPU_REF_INIT_* flags for flag behaviors. Note that **release** must not sleep - it may potentially be called from RCU callback context by percpu_ref_kill().”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjIh]”hŒ Parameters”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K5hjCubj¤)�”}”(hhh]”(j©)�”}”(hŒ4``struct percpu_ref *ref`` percpu_ref to initialize ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjhh]”hŒstruct percpu_ref *ref”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K2hjbubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to initialize”h]”hŒpercpu_ref to initialize”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j}h´K2hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j}h´K2hj_ubj©)�”}”(hŒR``percpu_ref_func_t *release`` function which will be called when refcount hits 0 ”h]”(j¯)�”}”(hŒ``percpu_ref_func_t *release``”h]”jS)�”}”(hj¡h]”hŒpercpu_ref_func_t *release”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K3hj›ubjÉ)�”}”(hhh]”jM)�”}”(hŒ2function which will be called when refcount hits 0”h]”hŒ2function which will be called when refcount hits 0”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¶h´K3hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¶h´K3hj_ubj©)�”}”(hŒ/``unsigned int flags`` PERCPU_REF_INIT_* flags ”h]”(j¯)�”}”(hŒ``unsigned int flags``”h]”jS)�”}”(hjÚh]”hŒunsigned int flags”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K4hjÔubjÉ)�”}”(hhh]”jM)�”}”(hŒPERCPU_REF_INIT_* flags”h]”hŒPERCPU_REF_INIT_* flags”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jïh´K4hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jïh´K4hj_ubj©)�”}”(hŒ%``gfp_t gfp`` allocation mask to use ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjh]”hŒ gfp_t gfp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K5hj ubjÉ)�”}”(hhh]”jM)�”}”(hŒallocation mask to use”h]”hŒallocation mask to use”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j(h´K5hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j(h´K5hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjCubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjNh]”hŒ Description”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K7hjCubjM)�”}”(hX;Initializes **ref**. **ref** starts out in percpu mode with a refcount of 1 unless **flags** contains PERCPU_REF_INIT_ATOMIC or PERCPU_REF_INIT_DEAD. These flags change the start state to atomic with the latter setting the initial refcount to 0. See the definitions of PERCPU_REF_INIT_* flags for flag behaviors.”h]”(hŒ Initializes ”…”�”}”(hjdh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdubhŒ. ”…”�”}”(hjdh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdubhŒ7 starts out in percpu mode with a refcount of 1 unless ”…”�”}”(hjdh²hh³Nh´NubjŽ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdubhŒÞ contains PERCPU_REF_INIT_ATOMIC or PERCPU_REF_INIT_DEAD. These flags change the start state to atomic with the latter setting the initial refcount to 0. See the definitions of PERCPU_REF_INIT_* flags for flag behaviors.”…”�”}”(hjdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K6hjCubjM)�”}”(hŒsNote that **release** must not sleep - it may potentially be called from RCU callback context by percpu_ref_kill().”h]”(hŒ Note that ”…”�”}”(hj©h²hh³Nh´NubjŽ)�”}”(hŒ **release**”h]”hŒrelease”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj©ubhŒ^ must not sleep - it may potentially be called from RCU callback context by percpu_ref_kill().”…”�”}”(hj©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K;hjCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpercpu_ref_exit (C function)”Œc.percpu_ref_exit”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-void percpu_ref_exit (struct percpu_ref *ref)”h]”hù)�”}”(hŒ,void percpu_ref_exit(struct percpu_ref *ref)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjæh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´KyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjæh²hh³jøh´Kyubhÿ)�”}”(hŒpercpu_ref_exit”h]”j)�”}”(hŒpercpu_ref_exit”h]”hŒpercpu_ref_exit”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjæh²hh³jøh´Kyubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#ubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jGŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj sbŒc.percpu_ref_exit”†”asbuh1hhj#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj#ubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjæh²hh³jøh´Kyubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjâh²hh³jøh´Kyubah}”(h]”jÝah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jøh´Kyhjßh²hubj4)�”}”(hhh]”jM)�”}”(hŒundo percpu_ref_init()”h]”hŒundo percpu_ref_init()”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´Kyhj§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjßh²hh³jøh´Kyubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÂjHjÂjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX”**Parameters** ``struct percpu_ref *ref`` percpu_ref to exit **Description** This function exits **ref**. The caller is responsible for ensuring that **ref** is no longer in active use. The usual places to invoke this function from are the **ref->release\(\)** callback or in init failure path where percpu_ref_init() succeeded but other parts of the initialization of the embedding object failed.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K}hjÆubj¤)�”}”(hhh]”j©)�”}”(hŒ.``struct percpu_ref *ref`` percpu_ref to exit ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjëh]”hŒstruct percpu_ref *ref”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´KzhjåubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to exit”h]”hŒpercpu_ref to exit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´Kzhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´Kzhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÆubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K|hjÆubjM)�”}”(hXBThis function exits **ref**. The caller is responsible for ensuring that **ref** is no longer in active use. The usual places to invoke this function from are the **ref->release\(\)** callback or in init failure path where percpu_ref_init() succeeded but other parts of the initialization of the embedding object failed.”h]”(hŒThis function exits ”…”�”}”(hj<h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjDh²hh³Nh´Nubah}”(h•]”h ]”h"]”h$]”h&]”uh1j�hj<ubhŒ/. The caller is responsible for ensuring that ”…”�”}”(hj<h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<ubhŒT is no longer in active use. The usual places to invoke this function from are the ”…”�”}”(hj<h²hh³Nh´NubjŽ)�”}”(hŒ**ref->release\(\)**”h]”hŒref->release()”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<ubhŒ‰ callback or in init failure path where percpu_ref_init() succeeded but other parts of the initialization of the embedding object failed.”…”�”}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K{hjÆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(percpu_ref_switch_to_atomic (C function)”Œc.percpu_ref_switch_to_atomic”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ\void percpu_ref_switch_to_atomic (struct percpu_ref *ref, percpu_ref_func_t *confirm_switch)”h]”hù)�”}”(hŒ[void percpu_ref_switch_to_atomic(struct percpu_ref *ref, percpu_ref_func_t *confirm_switch)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�h²hh³j¯h´Mubhÿ)�”}”(hŒpercpu_ref_switch_to_atomic”h]”j)�”}”(hŒpercpu_ref_switch_to_atomic”h]”hŒpercpu_ref_switch_to_atomic”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�h²hh³j¯h´Mubj4)�”}”(hŒ;(struct percpu_ref *ref, percpu_ref_func_t *confirm_switch)”h]”(j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jþŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÄsbŒc.percpu_ref_switch_to_atomic”†”asbuh1hhjÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÚubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÖubj:)�”}”(hŒ!percpu_ref_func_t *confirm_switch”h]”(h)�”}”(hhh]”j)�”}”(hŒpercpu_ref_func_t”h]”hŒpercpu_ref_func_t”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jUŒmodname”NŒ classname”Njwjz)�”}”j}]”jŒc.percpu_ref_switch_to_atomic”†”asbuh1hhjLubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjLubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjLubj)�”}”(hŒconfirm_switch”h]”hŒconfirm_switch”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÖubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�h²hh³j¯h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj™h²hh³j¯h´Mubah}”(h]”j”ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¯h´Mhj–h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"switch a percpu_ref to atomic mode”h]”hŒ"switch a percpu_ref to atomic mode”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´Mhj³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–h²hh³j¯h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÎjHjÎjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXç**Parameters** ``struct percpu_ref *ref`` percpu_ref to switch to atomic mode ``percpu_ref_func_t *confirm_switch`` optional confirmation callback **Description** There's no reason to use this function for the usual reference counting. Use percpu_ref_kill() or percpu_ref_kill_and_confirm(). Schedule switching of **ref** to atomic mode. All its percpu counts will be collected to the main atomic counter. On completion, when all CPUs are guaraneed to be in atomic mode, **confirm_switch**, which may not block, is invoked. This function may be invoked concurrently with all the get/put operations and can safely be mixed with kill and reinit operations. Note that **ref** will stay in atomic mode across kill/reinit cycles until percpu_ref_switch_to_percpu() is called. This function may block if **ref** is in the process of switching to atomic mode. If the caller ensures that **ref** is not in the process of switching to atomic mode, this function can be called from any context.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M#hjÒubj¤)�”}”(hhh]”(j©)�”}”(hŒ?``struct percpu_ref *ref`` percpu_ref to switch to atomic mode ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hj÷h]”hŒstruct percpu_ref *ref”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M hjñubjÉ)�”}”(hhh]”jM)�”}”(hŒ#percpu_ref to switch to atomic mode”h]”hŒ#percpu_ref to switch to atomic mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒE``percpu_ref_func_t *confirm_switch`` optional confirmation callback ”h]”(j¯)�”}”(hŒ%``percpu_ref_func_t *confirm_switch``”h]”jS)�”}”(hj0h]”hŒ!percpu_ref_func_t *confirm_switch”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M!hj*ubjÉ)�”}”(hhh]”jM)�”}”(hŒoptional confirmation callback”h]”hŒoptional confirmation callback”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jEh´M!hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jEh´M!hjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÒubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjkh]”hŒ Description”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M#hjÒubjM)�”}”(hŒ€There's no reason to use this function for the usual reference counting. Use percpu_ref_kill() or percpu_ref_kill_and_confirm().”h]”hŒ‚There’s no reason to use this function for the usual reference counting. Use percpu_ref_kill() or percpu_ref_kill_and_confirm().”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M"hjÒubjM)�”}”(hXâSchedule switching of **ref** to atomic mode. All its percpu counts will be collected to the main atomic counter. On completion, when all CPUs are guaraneed to be in atomic mode, **confirm_switch**, which may not block, is invoked. This function may be invoked concurrently with all the get/put operations and can safely be mixed with kill and reinit operations. Note that **ref** will stay in atomic mode across kill/reinit cycles until percpu_ref_switch_to_percpu() is called.”h]”(hŒSchedule switching of ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ˜ to atomic mode. All its percpu counts will be collected to the main atomic counter. On completion, when all CPUs are guaraneed to be in atomic mode, ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**confirm_switch**”h]”hŒconfirm_switch”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ², which may not block, is invoked. This function may be invoked concurrently with all the get/put operations and can safely be mixed with kill and reinit operations. Note that ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒb will stay in atomic mode across kill/reinit cycles until percpu_ref_switch_to_percpu() is called.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M%hjÒubjM)�”}”(hŒÖThis function may block if **ref** is in the process of switching to atomic mode. If the caller ensures that **ref** is not in the process of switching to atomic mode, this function can be called from any context.”h]”(hŒThis function may block if ”…”�”}”(hjÕh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÕubhŒL is in the process of switching to atomic mode. If the caller ensures that ”…”�”}”(hjÕh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÕubhŒa is not in the process of switching to atomic mode, this function can be called from any context.”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M-hjÒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-percpu_ref_switch_to_atomic_sync (C function)”Œ"c.percpu_ref_switch_to_atomic_sync”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>void percpu_ref_switch_to_atomic_sync (struct percpu_ref *ref)”h]”hù)�”}”(hŒ=void percpu_ref_switch_to_atomic_sync(struct percpu_ref *ref)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$h²hh³j6h´MAubhÿ)�”}”(hŒ percpu_ref_switch_to_atomic_sync”h]”j)�”}”(hŒ percpu_ref_switch_to_atomic_sync”h]”hŒ percpu_ref_switch_to_atomic_sync”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj$h²hh³j6h´MAubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjaubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j…Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjKsbŒ"c.percpu_ref_switch_to_atomic_sync”†”asbuh1hhjaubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjaubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj$h²hh³j6h´MAubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj h²hh³j6h´MAubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j6h´MAhjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"switch a percpu_ref to atomic mode”h]”hŒ"switch a percpu_ref to atomic mode”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MAhjåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j6h´MAubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hŒü**Parameters** ``struct percpu_ref *ref`` percpu_ref to switch to atomic mode **Description** Schedule switching the ref to atomic mode, and wait for the switch to complete. Caller must ensure that no other thread will switch back to percpu mode.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MEhjubj¤)�”}”(hhh]”j©)�”}”(hŒ?``struct percpu_ref *ref`` percpu_ref to switch to atomic mode ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hj)h]”hŒstruct percpu_ref *ref”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MBhj#ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#percpu_ref to switch to atomic mode”h]”hŒ#percpu_ref to switch to atomic mode”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j>h´MBhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j>h´MBhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjdh]”hŒ Description”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MDhjubjM)�”}”(hŒ™Schedule switching the ref to atomic mode, and wait for the switch to complete. Caller must ensure that no other thread will switch back to percpu mode.”h]”hŒ™Schedule switching the ref to atomic mode, and wait for the switch to complete. Caller must ensure that no other thread will switch back to percpu mode.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MChjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(percpu_ref_switch_to_percpu (C function)”Œc.percpu_ref_switch_to_percpu”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9void percpu_ref_switch_to_percpu (struct percpu_ref *ref)”h]”hù)�”}”(hŒ8void percpu_ref_switch_to_percpu(struct percpu_ref *ref)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¥h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MPubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¥h²hh³j·h´MPubhÿ)�”}”(hŒpercpu_ref_switch_to_percpu”h]”j)�”}”(hŒpercpu_ref_switch_to_percpu”h]”hŒpercpu_ref_switch_to_percpu”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¥h²hh³j·h´MPubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÌsbŒc.percpu_ref_switch_to_percpu”†”asbuh1hhjâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjâubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÞubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¥h²hh³j·h´MPubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¡h²hh³j·h´MPubah}”(h]”jœah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j·h´MPhjžh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"switch a percpu_ref to percpu mode”h]”hŒ"switch a percpu_ref to percpu mode”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MPhjfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjžh²hh³j·h´MPubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�jHj�jI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX/**Parameters** ``struct percpu_ref *ref`` percpu_ref to switch to percpu mode **Description** There's no reason to use this function for the usual reference counting. To re-use an expired ref, use percpu_ref_reinit(). Switch **ref** to percpu mode. This function may be invoked concurrently with all the get/put operations and can safely be mixed with kill and reinit operations. This function reverses the sticky atomic state set by PERCPU_REF_INIT_ATOMIC or percpu_ref_switch_to_atomic(). If **ref** is dying or dead, the actual switching takes place on the following percpu_ref_reinit(). This function may block if **ref** is in the process of switching to atomic mode. If the caller ensures that **ref** is not in the process of switching to atomic mode, this function can be called from any context.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MThj…ubj¤)�”}”(hhh]”j©)�”}”(hŒ?``struct percpu_ref *ref`` percpu_ref to switch to percpu mode ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjªh]”hŒstruct percpu_ref *ref”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MQhj¤ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#percpu_ref to switch to percpu mode”h]”hŒ#percpu_ref to switch to percpu mode”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¿h´MQhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¿h´MQhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj…ubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MShj…ubjM)�”}”(hŒ{There's no reason to use this function for the usual reference counting. To re-use an expired ref, use percpu_ref_reinit().”h]”hŒ}There’s no reason to use this function for the usual reference counting. To re-use an expired ref, use percpu_ref_reinit().”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MRhj…ubjM)�”}”(hXwSwitch **ref** to percpu mode. This function may be invoked concurrently with all the get/put operations and can safely be mixed with kill and reinit operations. This function reverses the sticky atomic state set by PERCPU_REF_INIT_ATOMIC or percpu_ref_switch_to_atomic(). If **ref** is dying or dead, the actual switching takes place on the following percpu_ref_reinit().”h]”(hŒSwitch ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhX  to percpu mode. This function may be invoked concurrently with all the get/put operations and can safely be mixed with kill and reinit operations. This function reverses the sticky atomic state set by PERCPU_REF_INIT_ATOMIC or percpu_ref_switch_to_atomic(). If ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒY is dying or dead, the actual switching takes place on the following percpu_ref_reinit().”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MUhj…ubjM)�”}”(hŒÖThis function may block if **ref** is in the process of switching to atomic mode. If the caller ensures that **ref** is not in the process of switching to atomic mode, this function can be called from any context.”h]”(hŒThis function may block if ”…”�”}”(hj= h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj= ubhŒL is in the process of switching to atomic mode. If the caller ensures that ”…”�”}”(hj= h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj= ubhŒa is not in the process of switching to atomic mode, this function can be called from any context.”…”�”}”(hj= h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M\hj…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(percpu_ref_kill_and_confirm (C function)”Œc.percpu_ref_kill_and_confirm”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒZvoid percpu_ref_kill_and_confirm (struct percpu_ref *ref, percpu_ref_func_t *confirm_kill)”h]”hù)�”}”(hŒYvoid percpu_ref_kill_and_confirm(struct percpu_ref *ref, percpu_ref_func_t *confirm_kill)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŒ h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MoubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŒ h²hh³jž h´Moubhÿ)�”}”(hŒpercpu_ref_kill_and_confirm”h]”j)�”}”(hŒpercpu_ref_kill_and_confirm”h]”hŒpercpu_ref_kill_and_confirm”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­ ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŒ h²hh³jž h´Moubj4)�”}”(hŒ9(struct percpu_ref *ref, percpu_ref_func_t *confirm_kill)”h]”(j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÉ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉ ubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jí Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj³ sbŒc.percpu_ref_kill_and_confirm”†”asbuh1hhjÉ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉ ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÉ ubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÅ ubj:)�”}”(hŒpercpu_ref_func_t *confirm_kill”h]”(h)�”}”(hhh]”j)�”}”(hŒpercpu_ref_func_t”h]”hŒpercpu_ref_func_t”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj? ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jD Œmodname”NŒ classname”Njwjz)�”}”j}]”j Œc.percpu_ref_kill_and_confirm”†”asbuh1hhj; ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj; ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj; ubj)�”}”(hŒ confirm_kill”h]”hŒ confirm_kill”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj; ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÅ ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŒ h²hh³jž h´Moubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjˆ h²hh³jž h´Moubah}”(h]”jƒ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jž h´Mohj… h²hubj4)�”}”(hhh]”jM)�”}”(hŒ.drop the initial ref and schedule confirmation”h]”hŒ.drop the initial ref and schedule confirmation”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´Mohj¢ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj… h²hh³jž h´Moubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj½ jHj½ jI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXò**Parameters** ``struct percpu_ref *ref`` percpu_ref to kill ``percpu_ref_func_t *confirm_kill`` optional confirmation callback **Description** Equivalent to percpu_ref_kill() but also schedules kill confirmation if **confirm_kill** is not NULL. **confirm_kill**, which may not block, will be called after **ref** is seen as dead from all CPUs at which point all further invocations of percpu_ref_tryget_live() will fail. See percpu_ref_tryget_live() for details. This function normally doesn't block and can be called from any context but it may block if **confirm_kill** is specified and **ref** is in the process of switching to atomic mode by percpu_ref_switch_to_atomic(). There are no implied RCU grace periods between kill and release.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MshjÁ ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``struct percpu_ref *ref`` percpu_ref to kill ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjæ h]”hŒstruct percpu_ref *ref”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjä ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´Mphjà ubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to kill”h]”hŒpercpu_ref to kill”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jû h´Mphjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjà ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jû h´MphjÝ ubj©)�”}”(hŒC``percpu_ref_func_t *confirm_kill`` optional confirmation callback ”h]”(j¯)�”}”(hŒ#``percpu_ref_func_t *confirm_kill``”h]”jS)�”}”(hj h]”hŒpercpu_ref_func_t *confirm_kill”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´Mqhj ubjÉ)�”}”(hhh]”jM)�”}”(hŒoptional confirmation callback”h]”hŒoptional confirmation callback”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4 h´Mqhj5 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4 h´MqhjÝ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÁ ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjZ h]”hŒ Description”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjX ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MshjÁ ubjM)�”}”(hXAEquivalent to percpu_ref_kill() but also schedules kill confirmation if **confirm_kill** is not NULL. **confirm_kill**, which may not block, will be called after **ref** is seen as dead from all CPUs at which point all further invocations of percpu_ref_tryget_live() will fail. See percpu_ref_tryget_live() for details.”h]”(hŒHEquivalent to percpu_ref_kill() but also schedules kill confirmation if ”…”�”}”(hjp h²hh³Nh´NubjŽ)�”}”(hŒ**confirm_kill**”h]”hŒ confirm_kill”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjp ubhŒ is not NULL. ”…”�”}”(hjp h²hh³Nh´NubjŽ)�”}”(hŒ**confirm_kill**”h]”hŒ confirm_kill”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjp ubhŒ,, which may not block, will be called after ”…”�”}”(hjp h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjp ubhŒ— is seen as dead from all CPUs at which point all further invocations of percpu_ref_tryget_live() will fail. See percpu_ref_tryget_live() for details.”…”�”}”(hjp h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MrhjÁ ubjM)�”}”(hŒÕThis function normally doesn't block and can be called from any context but it may block if **confirm_kill** is specified and **ref** is in the process of switching to atomic mode by percpu_ref_switch_to_atomic().”h]”(hŒ^This function normally doesn’t block and can be called from any context but it may block if ”…”�”}”(hjµ h²hh³Nh´NubjŽ)�”}”(hŒ**confirm_kill**”h]”hŒ confirm_kill”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµ ubhŒ is specified and ”…”�”}”(hjµ h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµ ubhŒP is in the process of switching to atomic mode by percpu_ref_switch_to_atomic().”…”�”}”(hjµ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MxhjÁ ubjM)�”}”(hŒ@There are no implied RCU grace periods between kill and release.”h]”hŒ@There are no implied RCU grace periods between kill and release.”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M|hjÁ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpercpu_ref_is_zero (C function)”Œc.percpu_ref_is_zero”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0bool percpu_ref_is_zero (struct percpu_ref *ref)”h]”hù)�”}”(hŒ/bool percpu_ref_is_zero(struct percpu_ref *ref)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M“ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj h²hh³j$ h´M“ubhÿ)�”}”(hŒpercpu_ref_is_zero”h]”j)�”}”(hŒpercpu_ref_is_zero”h]”hŒpercpu_ref_is_zero”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3 ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj h²hh³j$ h´M“ubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjO ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjO ubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”js Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj9 sbŒc.percpu_ref_is_zero”†”asbuh1hhjO ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjO ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjO ubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjK ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj h²hh³j$ h´M“ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj h²hh³j$ h´M“ubah}”(h]”j ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j$ h´M“hj h²hubj4)�”}”(hhh]”jM)�”}”(hŒ+test whether a percpu refcount reached zero”h]”hŒ+test whether a percpu refcount reached zero”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M“hjÓ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj h²hh³j$ h´M“ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjî jHjî jI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hŒÇ**Parameters** ``struct percpu_ref *ref`` percpu_ref to test **Description** Returns ``true`` if **ref** reached zero. This function is safe to call as long as **ref** is between init and exit.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M—hjò ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``struct percpu_ref *ref`` percpu_ref to test ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hj h]”hŒstruct percpu_ref *ref”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M”hj ubjÉ)�”}”(hhh]”jM)�”}”(hŒpercpu_ref to test”h]”hŒpercpu_ref to test”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjò ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjR h]”hŒ Description”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M–hjò ubjM)�”}”(hŒ)Returns ``true`` if **ref** reached zero.”h]”(hŒReturns ”…”�”}”(hjh h²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjh ubhŒ if ”…”�”}”(hjh h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh ubhŒ reached zero.”…”�”}”(hjh h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M•hjò ubjM)�”}”(hŒJThis function is safe to call as long as **ref** is between init and exit.”h]”(hŒ)This function is safe to call as long as ”…”�”}”(hj› h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj› ubhŒ is between init and exit.”…”�”}”(hj› h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M—hjò ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjáËh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒpercpu_ref_reinit (C function)”Œc.percpu_ref_reinit”hNt”auh1hÜhjáËh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void percpu_ref_reinit (struct percpu_ref *ref)”h]”hù)�”}”(hŒ.void percpu_ref_reinit(struct percpu_ref *ref)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjØ h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M¯ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjØ h²hh³jê h´M¯ubhÿ)�”}”(hŒpercpu_ref_reinit”h]”j)�”}”(hŒpercpu_ref_reinit”h]”hŒpercpu_ref_reinit”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjù ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjØ h²hh³jê h´M¯ubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j9Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÿ sbŒc.percpu_ref_reinit”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjØ h²hh³jê h´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÔ h²hh³jê h´M¯ubah}”(h]”jÏ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jê h´M¯hjÑ h²hubj4)�”}”(hhh]”jM)�”}”(hŒre-initialize a percpu refcount”h]”hŒre-initialize a percpu refcount”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M¯hj™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÑ h²hh³jê h´M¯ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj´jHj´jI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hX�**Parameters** ``struct percpu_ref *ref`` perpcu_ref to re-initialize **Description** Re-initialize **ref** so that it's in the same state as when it finished percpu_ref_init() ignoring ``PERCPU_REF_INIT_DEAD``. **ref** must have been initialized successfully and reached 0 but not exited. Note that percpu_ref_tryget[_live]() are safe to perform on **ref** while this function is in progress.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M³hj¸ubj¤)�”}”(hhh]”j©)�”}”(hŒ7``struct percpu_ref *ref`` perpcu_ref to re-initialize ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjÝh]”hŒstruct percpu_ref *ref”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M°hj×ubjÉ)�”}”(hhh]”jM)�”}”(hŒperpcu_ref to re-initialize”h]”hŒperpcu_ref to re-initialize”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¸ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M²hj¸ubjM)�”}”(hŒÌRe-initialize **ref** so that it's in the same state as when it finished percpu_ref_init() ignoring ``PERCPU_REF_INIT_DEAD``. **ref** must have been initialized successfully and reached 0 but not exited.”h]”(hŒRe-initialize ”…”�”}”(hj.h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ubhŒQ so that it’s in the same state as when it finished percpu_ref_init() ignoring ”…”�”}”(hj.h²hh³Nh´NubjS)�”}”(hŒ``PERCPU_REF_INIT_DEAD``”h]”hŒPERCPU_REF_INIT_DEAD”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj.ubhŒ. ”…”�”}”(hj.h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ubhŒF must have been initialized successfully and reached 0 but not exited.”…”�”}”(hj.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´M±hj¸ubjM)�”}”(hŒgNote that percpu_ref_tryget[_live]() are safe to perform on **ref** while this function is in progress.”h]”(hŒhjíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjíubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj×sbŒc.percpu_ref_resurrect”†”asbuh1hhjíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjíubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjíubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjéubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj°h²hh³jÂh´MÂubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¬h²hh³jÂh´MÂubah}”(h]”j§ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÂh´MÂhj©h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*modify a percpu refcount from dead to live”h]”hŒ*modify a percpu refcount from dead to live”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MÂhjqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj©h²hh³jÂh´MÂubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŒjHjŒjI‰jJ‰jK‰uh1híh²hhjáËh³Nh´Nubj„)�”}”(hXñ**Parameters** ``struct percpu_ref *ref`` perpcu_ref to resurrect **Description** Modify **ref** so that it's in the same state as before percpu_ref_kill() was called. **ref** must be dead but must not yet have exited. If **ref->release\(\)** frees **ref** then the caller is responsible for guaranteeing that **ref->release\(\)** does not get called while this function is in progress. Note that percpu_ref_tryget[_live]() are safe to perform on **ref** while this function is in progress.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MÆhj�ubj¤)�”}”(hhh]”j©)�”}”(hŒ3``struct percpu_ref *ref`` perpcu_ref to resurrect ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjµh]”hŒstruct percpu_ref *ref”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MÃhj¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒperpcu_ref to resurrect”h]”hŒperpcu_ref to resurrect”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj�ubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MÅhj�ubjM)�”}”(hŒˆModify **ref** so that it's in the same state as before percpu_ref_kill() was called. **ref** must be dead but must not yet have exited.”h]”(hŒModify ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒJ so that it’s in the same state as before percpu_ref_kill() was called. ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ+ must be dead but must not yet have exited.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MÄhj�ubjM)�”}”(hŒ§If **ref->release\(\)** frees **ref** then the caller is responsible for guaranteeing that **ref->release\(\)** does not get called while this function is in progress.”h]”(hŒIf ”…”�”}”(hj9h²hh³Nh´NubjŽ)�”}”(hŒ**ref->release\(\)**”h]”hŒref->release()”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ubhŒ frees ”…”�”}”(hj9h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ubhŒ6 then the caller is responsible for guaranteeing that ”…”�”}”(hj9h²hh³Nh´NubjŽ)�”}”(hŒ**ref->release\(\)**”h]”hŒref->release()”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ubhŒ8 does not get called while this function is in progress.”…”�”}”(hj9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MÇhj�ubjM)�”}”(hŒgNote that percpu_ref_tryget[_live]() are safe to perform on **ref** while this function is in progress.”h]”(hŒhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubh)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j5Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjûsbŒ c.atomic_read”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hŒv”h]”hŒv”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÔh²hh³jæh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÐh²hh³jæh´Kubah}”(h]”jËah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jæh´KhjÍh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with relaxed ordering”h]”hŒ!atomic load with relaxed ordering”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Khj•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÍh²hh³jæh´Kubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj°jHj°jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒï**Parameters** ``const atomic_t *v`` pointer to atomic_t **Description** Atomically loads the value of **v** with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_read() there. **Return** The value loaded from **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Khj´ubj¤)�”}”(hhh]”j©)�”}”(hŒ*``const atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``const atomic_t *v``”h]”jS)�”}”(hjÙh]”hŒconst atomic_t *v”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KhjÓubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jîh´Khjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jîh´KhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj´ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Khj´ubjM)�”}”(hŒ:Atomically loads the value of **v** with relaxed ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hj*h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*ubhŒ with relaxed ordering.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Khj´ubjM)�”}”(hŒ;Unsafe to use in noinstr code; use raw_atomic_read() there.”h]”hŒ;Unsafe to use in noinstr code; use raw_atomic_read() there.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Khj´ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj\h]”hŒReturn”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Khj´ubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hjrh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrubhŒ.”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Khj´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_read_acquire (C function)”Œc.atomic_read_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int atomic_read_acquire (const atomic_t *v)”h]”hù)�”}”(hŒ*int atomic_read_acquire(const atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¯h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K%ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯h²hh³jÁh´K%ubhÿ)�”}”(hŒatomic_read_acquire”h]”j)�”}”(hŒatomic_read_acquire”h]”hŒatomic_read_acquire”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¯h²hh³jÁh´K%ubj4)�”}”(hŒ(const atomic_t *v)”h]”j:)�”}”(hŒconst atomic_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjìubh)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÖsbŒc.atomic_read_acquire”†”asbuh1hhjìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjìubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjìubj)�”}”(hjph]”hŒv”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjèubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¯h²hh³jÁh´K%ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj«h²hh³jÁh´K%ubah}”(h]”j¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÁh´K%hj¨h²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with acquire ordering”h]”hŒ!atomic load with acquire ordering”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K%hjoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨h²hh³jÁh´K%ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŠjHjŠjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒ÷**Parameters** ``const atomic_t *v`` pointer to atomic_t **Description** Atomically loads the value of **v** with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_read_acquire() there. **Return** The value loaded from **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K)hjŽubj¤)�”}”(hhh]”j©)�”}”(hŒ*``const atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``const atomic_t *v``”h]”jS)�”}”(hj³h]”hŒconst atomic_t *v”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K&hj­ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŽubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K(hjŽubjM)�”}”(hŒ:Atomically loads the value of **v** with acquire ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ with acquire ordering.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K'hjŽubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_read_acquire() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_read_acquire() there.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K)hjŽubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj6h]”hŒReturn”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K+hjŽubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hjLh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLubhŒ.”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K,hjŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_set (C function)”Œ c.atomic_set”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ$void atomic_set (atomic_t *v, int i)”h]”hù)�”}”(hŒ#void atomic_set(atomic_t *v, int i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‰h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰h²hh³j›h´K6ubhÿ)�”}”(hŒ atomic_set”h]”j)�”}”(hŒ atomic_set”h]”hŒ atomic_set”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjªubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‰h²hh³j›h´K6ubj4)�”}”(hŒ(atomic_t *v, int i)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÏŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj°sbŒ c.atomic_set”†”asbuh1hhjÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÆubj)�”}”(hjph]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÂubj:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÂubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‰h²hh³j›h´K6ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj…h²hh³j›h´K6ubah}”(h]”j€ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j›h´K6hj‚h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with relaxed ordering”h]”hŒ atomic set with relaxed ordering”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K6hjbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‚h²hh³j›h´K6ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj}jHj}jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒð**Parameters** ``atomic_t *v`` pointer to atomic_t ``int i`` int value to assign **Description** Atomically sets **v** to **i** with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_set() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K:hj�ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj¦h]”hŒ atomic_t *v”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K7hj ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j»h´K7hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j»h´K7hj�ubj©)�”}”(hŒ``int i`` int value to assign ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjßh]”hŒint i”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K8hjÙubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jôh´K8hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jôh´K8hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K:hj�ubjM)�”}”(hŒ5Atomically sets **v** to **i** with relaxed ordering.”h]”(hŒAtomically sets ”…”�”}”(hj0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ubhŒ to ”…”�”}”(hj0h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h •]”h"]”h$]”h&]”uh1j�hj0ubhŒ with relaxed ordering.”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K9hj�ubjM)�”}”(hŒ:Unsafe to use in noinstr code; use raw_atomic_set() there.”h]”hŒ:Unsafe to use in noinstr code; use raw_atomic_set() there.”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K;hj�ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjth]”hŒReturn”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K=hj�ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K>hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_set_release (C function)”Œc.atomic_set_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,void atomic_set_release (atomic_t *v, int i)”h]”hù)�”}”(hŒ+void atomic_set_release(atomic_t *v, int i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµh²hh³jÇh´KHubhÿ)�”}”(hŒatomic_set_release”h]”j)�”}”(hŒatomic_set_release”h]”hŒatomic_set_release”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjµh²hh³jÇh´KHubj4)�”}”(hŒ(atomic_t *v, int i)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jûŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÜsbŒc.atomic_set_release”†”asbuh1hhjòubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjòubj)�”}”(hjph]”hŒv”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîubj:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjHubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjµh²hh³jÇh´KHubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj±h²hh³jÇh´KHubah}”(h]”j¬ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÇh´KHhj®h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with release ordering”h]”hŒ atomic set with release ordering”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KHhjŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj®h²hh³jÇh´KHubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj©jHj©jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒø**Parameters** ``atomic_t *v`` pointer to atomic_t ``int i`` int value to assign **Description** Atomically sets **v** to **i** with release ordering. Unsafe to use in noinstr code; use raw_atomic_set_release() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KLhj­ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÒh]”hŒ atomic_t *v”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KIhjÌubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jçh´KIhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jçh´KIhjÉubj©)�”}”(hŒ``int i`` int value to assign ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj h]”hŒint i”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KJhjubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j h´KJhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j h´KJhjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj­ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjFh]”hŒ Description”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KLhj­ubjM)�”}”(hŒ5Atomically sets **v** to **i** with release ordering.”h]”(hŒAtomically sets ”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ to ”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ with release ordering.”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KKhj­ubjM)�”}”(hŒBUnsafe to use in noinstr code; use raw_atomic_set_release() there.”h]”hŒBUnsafe to use in noinstr code; use raw_atomic_set_release() there.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KMhj­ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj h]”hŒReturn”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KOhj­ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KPhj­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_add (C function)”Œ c.atomic_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ$void atomic_add (int i, atomic_t *v)”h]”hù)�”}”(hŒ#void atomic_add(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjáh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K[ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjáh²hh³jóh´K[ubhÿ)�”}”(hŒ atomic_add”h]”j)�”}”(hŒ atomic_add”h]”hŒ atomic_add”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjáh²hh³jóh´K[ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j[Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjsbŒ c.atomic_add”†”asbuh1hhjRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRubj)�”}”(hjph]”hŒv”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjáh²hh³jóh´K[ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÝh²hh³jóh´K[ubah}”(h]”jØah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jóh´K[hjÚh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K[hjºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÚh²hh³jóh´K[ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÕjHjÕjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_add() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K_hjÙubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjþh]”hŒint i”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K\hjøubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´K\hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´K\hjõubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj7h]”hŒ atomic_t *v”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K]hj1ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jLh´K]hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jLh´K]hjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÙubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjrh]”hŒ Description”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K_hjÙubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆubhŒ to (”…”�”}”(hjˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆubhŒ + ”…”�”}”(hjˆh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆubhŒ) with relaxed ordering.”…”�”}”(hjˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K^hjÙubjM)�”}”(hŒ:Unsafe to use in noinstr code; use raw_atomic_add() there.”h]”hŒ:Unsafe to use in noinstr code; use raw_atomic_add() there.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K`hjÙubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÞh]”hŒReturn”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KbhjÙubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KchjÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_add_return (C function)”Œc.atomic_add_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int atomic_add_return (int i, atomic_t *v)”h]”hù)�”}”(hŒ)int atomic_add_return(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j1h´Kmubhÿ)�”}”(hŒatomic_add_return”h]”j)�”}”(hŒatomic_add_return”h]”hŒatomic_add_return”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j1h´Kmubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj\ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjXubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j™Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjFsbŒc.atomic_add_return”†”asbuh1hhj�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�ubj)�”}”(hjph]”hŒv”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjXubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³j1h´Kmubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j1h´Kmubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j1h´Kmhjh²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kmhjøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j1h´Kmubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_add_return() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kqhjubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj<h]”hŒint i”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Knhj6ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQh´KnhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQh´Knhj3ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjuh]”hŒ atomic_t *v”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KohjoubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠh´Kohj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠh´Kohj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KqhjubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ to (”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ + ”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ) with full ordering.”…”�”}”(hjÆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KphjubjM)�”}”(hŒAUnsafe to use in noinstr code; use raw_atomic_add_return() there.”h]”hŒAUnsafe to use in noinstr code; use raw_atomic_add_return() there.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KrhjubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KthjubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj2h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ubhŒ.”…”�”}”(hj2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kuhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_add_return_acquire (C function)”Œc.atomic_add_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2int atomic_add_return_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ1int atomic_add_return_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjoh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K€ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjoh²hh³j�h´K€ubhÿ)�”}”(hŒatomic_add_return_acquire”h]”j)�”}”(hŒatomic_add_return_acquire”h]”hŒatomic_add_return_acquire”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjoh²hh³j�h´K€ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¬ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¨ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jéŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj–sbŒc.atomic_add_return_acquire”†”asbuh1hhjàubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjàubj)�”}”(hjph]”hŒv”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjoh²hh³j�h´K€ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjkh²hh³j�h´K€ubah}”(h]”jfah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�h´K€hjhh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K€hjHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjhh²hh³j�h´K€ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjcjHjcjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_add_return_acquire() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjmh]”hŒ Parameters”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K„hjgubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjŒh]”hŒint i”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K�hj†ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÅh]”hŒ atomic_t *v”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K‚hj¿ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjgubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K„hjgubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ to (”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ + ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ) with acquire ordering.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KƒhjgubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_add_return_acquire() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_add_return_acquire() there.”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K…hjgubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjl h]”hŒReturn”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K‡hjgubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj‚ h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚ ubhŒ.”…”�”}”(hj‚ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kˆhjgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_add_return_release (C function)”Œc.atomic_add_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2int atomic_add_return_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ1int atomic_add_return_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¿ h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿ h²hh³jÑ h´K’ubhÿ)�”}”(hŒatomic_add_return_release”h]”j)�”}”(hŒatomic_add_return_release”h]”hŒatomic_add_return_release”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjà ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¿ h²hh³jÑ h´K’ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjü ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjü ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjø ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj7!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j9!Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjæ sbŒc.atomic_add_return_release”†”asbuh1hhj0!ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0!ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hje!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj0!ubj)�”}”(hjph]”hŒv”…”�”}”(hjr!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjø ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¿ h²hh³jÑ h´K’ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj» h²hh³jÑ h´K’ubah}”(h]”j¶ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÑ h´K’hj¸ h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hj›!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K’hj˜!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¸ h²hh³jÑ h´K’ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj³!jHj³!jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_add_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K–hj·!ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjÜ!h]”hŒint i”…”�”}”(hjÞ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÚ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K“hjÖ!ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjõ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj"h]”hŒ atomic_t *v”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K”hj"ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj."h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj·!ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjP"h]”hŒ Description”…”�”}”(hjR"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K–hj·!ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjf"h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjn"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjf"ubhŒ to (”…”�”}”(hjf"h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjf"ubhŒ + ”…”�”}”(hjf"h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj’"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjf"ubhŒ) with release ordering.”…”�”}”(hjf"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K•hj·!ubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_add_return_release() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_add_return_release() there.”…”�”}”(hj«"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K—hj·!ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¼"h]”hŒReturn”…”�”}”(hj¾"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjº"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K™hj·!ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÒ"h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÚ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒ"ubhŒ.”…”�”}”(hjÒ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kšhj·!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_add_return_relaxed (C function)”Œc.atomic_add_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2int atomic_add_return_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ1int atomic_add_return_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj#h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¥ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#h²hh³j!#h´K¥ubhÿ)�”}”(hŒatomic_add_return_relaxed”h]”j)�”}”(hŒatomic_add_return_relaxed”h]”hŒatomic_add_return_relaxed”…”�”}”(hj4#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0#ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj#h²hh³j!#h´K¥ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjP#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjL#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjL#ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjl#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjL#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjH#ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj‡#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‰#Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj6#sbŒc.atomic_add_return_relaxed”†”asbuh1hhj€#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€#ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjµ#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€#ubj)�”}”(hjph]”hŒv”…”�”}”(hjÂ#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjH#ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj#h²hh³j!#h´K¥ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj #h²hh³j!#h´K¥ubah}”(h]”j#ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j!#h´K¥hj#h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hjë#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¥hjè#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj#h²hh³j!#h´K¥ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj$jHj$jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_add_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K©hj$ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj,$h]”hŒint i”…”�”}”(hj.$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj*$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¦hj&$ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjE$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jA$h´K¦hjB$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj&$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jA$h´K¦hj#$ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hje$h]”hŒ atomic_t *v”…”�”}”(hjg$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjc$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K§hj_$ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj~$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jz$h´K§hj{$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj_$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jz$h´K§hj#$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj$ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K©hj$ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¶$h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¾$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶$ubhŒ to (”…”�”}”(hj¶$h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÐ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶$ubhŒ + ”…”�”}”(hj¶$h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjâ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶$ubhŒ) with relaxed ordering.”…”�”}”(hj¶$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¨hj$ubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_add_return_relaxed() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_add_return_relaxed() there.”…”�”}”(hjû$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kªhj$ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj %h]”hŒReturn”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj %ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¬hj$ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj"%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj*%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"%ubhŒ.”…”�”}”(hj"%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K­hj$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_fetch_add (C function)”Œc.atomic_fetch_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ)int atomic_fetch_add (int i, atomic_t *v)”h]”hù)�”}”(hŒ(int atomic_fetch_add(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjc%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj_%h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K·ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr%h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj_%h²hh³jq%h´K·ubhÿ)�”}”(hŒatomic_fetch_add”h]”j)�”}”(hŒatomic_fetch_add”h]”hŒatomic_fetch_add”…”�”}”(hj„%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€%ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj_%h²hh³jq%h´K·ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjœ%ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®%h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœ%ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¼%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj˜%ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj×%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔ%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÙ%Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj†%sbŒc.atomic_fetch_add”†”asbuh1hhjÐ%ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷%h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÐ%ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÐ%ubj)�”}”(hjph]”hŒv”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐ%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj˜%ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj_%h²hh³jq%h´K·ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj[%h²hh³jq%h´K·ubah}”(h]”jV%ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jq%h´K·hjX%h²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hj;&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K·hj8&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjX%h²hh³jq%h´K·ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjS&jHjS&jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_add() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K»hjW&ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj|&h]”hŒint i”…”�”}”(hj~&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjz&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¸hjv&ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj•&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‘&h´K¸hj’&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjv&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‘&h´K¸hjs&ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjµ&h]”hŒ atomic_t *v”…”�”}”(hj·&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj³&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¹hj¯&ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÎ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÊ&h´K¹hjË&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¯&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÊ&h´K¹hjs&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjW&ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K»hjW&ubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ to (”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ + ”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj2'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ) with full ordering.”…”�”}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KºhjW&ubjM)�”}”(hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_add() there.”h]”hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_add() there.”…”�”}”(hjK'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¼hjW&ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj\'h]”hŒReturn”…”�”}”(hj^'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¾hjW&ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjr'h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjz'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjr'ubhŒ.”…”�”}”(hjr'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¿hjW&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_add_acquire (C function)”Œc.atomic_fetch_add_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_add_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_add_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj³'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¯'h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÊubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯'h²hh³jÁ'h´KÊubhÿ)�”}”(hŒatomic_fetch_add_acquire”h]”j)�”}”(hŒatomic_fetch_add_acquire”h]”hŒatomic_fetch_add_acquire”…”�”}”(hjÔ'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐ'ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¯'h²hh³jÁ'h´KÊubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjð'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjì'ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjì'ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjì'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjè'ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj'(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j)(Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÖ'sbŒc.atomic_fetch_add_acquire”†”asbuh1hhj (ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG(h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj (ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjU(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj (ubj)�”}”(hjph]”hŒv”…”�”}”(hjb(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj (ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjè'ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¯'h²hh³jÁ'h´KÊubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj«'h²hh³jÁ'h´KÊubah}”(h]”j¦'ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÁ'h´KÊhj¨'h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hj‹(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÊhjˆ(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨'h²hh³jÁ'h´KÊubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj£(jHj£(jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_add_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÎhj§(ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjÌ(h]”hŒint i”…”�”}”(hjÎ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÊ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KËhjÆ(ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjå(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj)h]”hŒ atomic_t *v”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÌhjÿ(ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj§(ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj@)h]”hŒ Description”…”�”}”(hjB)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÎhj§(ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjV)h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj^)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV)ubhŒ to (”…”�”}”(hjV)h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjp)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV)ubhŒ + ”…”�”}”(hjV)h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj‚)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV)ubhŒ) with acquire ordering.”…”�”}”(hjV)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÍhj§(ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_add_acquire() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_add_acquire() there.”…”�”}”(hj›)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÏhj§(ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¬)h]”hŒReturn”…”�”}”(hj®)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjª)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÑhj§(ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÂ)h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÊ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂ)ubhŒ.”…”�”}”(hjÂ)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÒhj§(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_add_release (C function)”Œc.atomic_fetch_add_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_add_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_add_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÿ)h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿ)h²hh³j*h´KÜubhÿ)�”}”(hŒatomic_fetch_add_release”h]”j)�”}”(hŒatomic_fetch_add_release”h]”hŒatomic_fetch_add_release”…”�”}”(hj$*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj *ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÿ)h²hh³j*h´KÜubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj@*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj<*ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj<*ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj\*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj8*ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjw*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jy*Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj&*sbŒc.atomic_fetch_add_release”†”asbuh1hhjp*ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjp*ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¥*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjp*ubj)�”}”(hjph]”hŒv”…”�”}”(hj²*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj8*ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÿ)h²hh³j*h´KÜubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjû)h²hh³j*h´KÜubah}”(h]”jö)ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j*h´KÜhjø)h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hjÛ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÜhjØ*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjø)h²hh³j*h´KÜubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjó*jHjó*jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_add_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kàhj÷*ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj+h]”hŒint i”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÝhj+ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj5+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j1+h´KÝhj2+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j1+h´KÝhj+ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjU+h]”hŒ atomic_t *v”…”�”}”(hjW+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjS+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KÞhjO+ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjn+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jj+h´KÞhjk+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjO+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jj+h´KÞhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj÷*ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kàhj÷*ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¦+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj®+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦+ubhŒ to (”…”�”}”(hj¦+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÀ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦+ubhŒ + ”…”�”}”(hj¦+h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÒ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦+ubhŒ) with release ordering.”…”�”}”(hj¦+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kßhj÷*ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_add_release() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_add_release() there.”…”�”}”(hjë+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Káhj÷*ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjü+h]”hŒReturn”…”�”}”(hjþ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjú+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kãhj÷*ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj,h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,ubhŒ.”…”�”}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kähj÷*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_add_relaxed (C function)”Œc.atomic_fetch_add_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_add_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_add_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjS,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjO,h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjO,h²hh³ja,h´Kïubhÿ)�”}”(hŒatomic_fetch_add_relaxed”h]”j)�”}”(hŒatomic_fetch_add_relaxed”h]”hŒatomic_fetch_add_relaxed”…”�”}”(hjt,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp,ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjO,h²hh³ja,h´Kïubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŒ,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŒ,ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¬,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjˆ,ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÇ,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄ,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÉ,Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjv,sbŒc.atomic_fetch_add_relaxed”†”asbuh1hhjÀ,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÀ,ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjõ,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÀ,ubj)�”}”(hjph]”hŒv”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjˆ,ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjO,h²hh³ja,h´Kïubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjK,h²hh³ja,h´Kïubah}”(h]”jF,ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³ja,h´KïhjH,h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj+-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kïhj(-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjH,h²hh³ja,h´Kïubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjC-jHjC-jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_add_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjM-h]”hŒ Parameters”…”�”}”(hjO-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KóhjG-ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjl-h]”hŒint i”…”�”}”(hjn-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kðhjf-ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj…-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�-h´Kðhj‚-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjf-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�-h´Kðhjc-ubj©)�”}”(•hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj¥-h]”hŒ atomic_t *v”…”�”}”(hj§-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KñhjŸ-ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj¾-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jº-h´Kñhj»-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŸ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jº-h´Kñhjc-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjG-ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KóhjG-ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjö-h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjþ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö-ubhŒ to (”…”�”}”(hjö-h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö-ubhŒ + ”…”�”}”(hjö-h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj".h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö-ubhŒ) with relaxed ordering.”…”�”}”(hjö-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KòhjG-ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_add_relaxed() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_add_relaxed() there.”…”�”}”(hj;.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KôhjG-ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjL.h]”hŒReturn”…”�”}”(hjN.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KöhjG-ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjb.h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjb.ubhŒ.”…”�”}”(hjb.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K÷hjG-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_sub (C function)”Œ c.atomic_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ$void atomic_sub (int i, atomic_t *v)”h]”hù)�”}”(hŒ#void atomic_sub(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj£.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŸ.h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj².h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŸ.h²hh³j±.h´Mubhÿ)�”}”(hŒ atomic_sub”h]”j)�”}”(hŒ atomic_sub”h]”hŒ atomic_sub”…”�”}”(hjÄ.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ.ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŸ.h²hh³j±.h´Mubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjà.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÜ.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜ.ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjü.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜ.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjØ.ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j/Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÆ.sbŒ c.atomic_sub”†”asbuh1hhj/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7/h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjE/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj/ubj)�”}”(hjph]”hŒv”…”�”}”(hjR/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjØ.ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŸ.h²hh³j±.h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj›.h²hh³j±.h´Mubah}”(h]”j–.ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j±.h´Mhj˜.h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hj{/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjx/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj˜.h²hh³j±.h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj“/jHj“/jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÿ**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_sub() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj—/ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj¼/h]”hŒint i”…”�”}”(hj¾/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjº/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj¶/ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjÕ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÑ/h´MhjÒ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¶/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÑ/h´Mhj³/ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjõ/h]”hŒ atomic_t *v”…”�”}”(hj÷/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjó/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjï/ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j 0h´Mhj 0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjï/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j 0h´Mhj³/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj—/ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj00h]”hŒ Description”…”�”}”(hj20h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj—/ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjF0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjN0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF0ubhŒ to (”…”�”}”(hjF0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF0ubhŒ - ”…”�”}”(hjF0h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjr0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF0ubhŒ) with relaxed ordering.”…”�”}”(hjF0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj—/ubjM)�”}”(hŒ:Unsafe to use in noinstr code; use raw_atomic_sub() there.”h]”hŒ:Unsafe to use in noinstr code; use raw_atomic_sub() there.”…”�”}”(hj‹0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj—/ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjœ0h]”hŒReturn”…”�”}”(hjž0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjš0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj—/ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj²0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj—/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_sub_return (C function)”Œc.atomic_sub_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int atomic_sub_return (int i, atomic_t *v)”h]”hù)�”}”(hŒ)int atomic_sub_return(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjá0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÝ0h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝ0h²hh³jï0h´Mubhÿ)�”}”(hŒatomic_sub_return”h]”j)�”}”(hŒatomic_sub_return”h]”hŒatomic_sub_return”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ0ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÝ0h²hh³jï0h´Mubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj:1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj1ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjU1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjR1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jW1Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj1sbŒc.atomic_sub_return”†”asbuh1hhjN1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjN1ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjƒ1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjN1ubj)�”}”(hjph]”hŒv”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjN1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj1ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÝ0h²hh³jï0h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÙ0h²hh³jï0h´Mubah}”(h]”jÔ0ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jï0h´MhjÖ0h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(hj¹1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj¶1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÖ0h²hh³jï0h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÑ1jHjÑ1jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_sub_return() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÛ1h]”hŒ Parameters”…”�”}”(hjÝ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÕ1ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjú1h]”hŒint i”…”�”}”(hjü1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjø1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjô1ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j2h´Mhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjô1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j2h´Mhjñ1ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj32h]”hŒ atomic_t *v”…”�”}”(hj52h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj12ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj-2ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjL2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jH2h´MhjI2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj-2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jH2h´Mhjñ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÕ1ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjn2h]”hŒ Description”…”�”}”(hjp2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÕ1ubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj„2h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„2ubhŒ to (”…”�”}”(hj„2h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjž2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„2ubhŒ - ”…”�”}”(hj„2h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj°2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„2ubhŒ) with full ordering.”…”�”}”(hj„2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÕ1ubjM)�”}”(hŒAUnsafe to use in noinstr code; use raw_atomic_sub_return() there.”h]”hŒAUnsafe to use in noinstr code; use raw_atomic_sub_return() there.”…”�”}”(hjÉ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÕ1ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÚ2h]”hŒReturn”…”�”}”(hjÜ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÕ1ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjð2h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjø2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð2ubhŒ.”…”�”}”(hjð2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÕ1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_sub_return_acquire (C function)”Œc.atomic_sub_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2int atomic_sub_return_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ1int atomic_sub_return_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj13h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj-3h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj-3h²hh³j?3h´M&ubhÿ)�”}”(hŒatomic_sub_return_acquire”h]”j)�”}”(hŒatomic_sub_return_acquire”h]”hŒatomic_sub_return_acquire”…”�”}”(hjR3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjN3ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj-3h²hh³j?3h´M&ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjn3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjj3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjj3ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjŠ3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjf3ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj¥3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j§3Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjT3sbŒc.atomic_sub_return_acquire”†”asbuh1hhjž3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjž3ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÓ3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjž3ubj)�”}”(hjph]”hŒv”…”�”}”(hjà3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjž3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjf3ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj-3h²hh³j?3h´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj)3h²hh³j?3h´M&ubah}”(h]”j$3ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j?3h´M&hj&3h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M&hj4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj&3h²hh³j?3h´M&ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj!4jHj!4jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX!**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_sub_return_acquire() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj+4h]”hŒ Parameters”…”�”}”(hj-4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M*hj%4ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjJ4h]”hŒint i”…”�”}”(hjL4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjH4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M'hjD4ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjc4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j_4h´M'hj`4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjD4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j_4h´M'hjA4ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjƒ4h]”hŒ atomic_t *v”…”�”}”(hj…4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M(hj}4ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjœ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j˜4h´M(hj™4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj}4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j˜4h´M(hjA4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj%4ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj¾4h]”hŒ Description”…”�”}”(hjÀ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M*hj%4ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÔ4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÜ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔ4ubhŒ to (”…”�”}”(hjÔ4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjî4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔ4ubhŒ - ”…”�”}”(hjÔ4h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔ4ubhŒ) with acquire ordering.”…”�”}”(hjÔ4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M)hj%4ubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_sub_return_acquire() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_sub_return_acquire() there.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M+hj%4ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj*5h]”hŒReturn”…”�”}”(hj,5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M-hj%4ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj@5h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjH5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@5ubhŒ.”…”�”}”(hj@5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M.hj%4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_sub_return_release (C function)”Œc.atomic_sub_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2int atomic_sub_return_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ1int atomic_sub_return_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj}5h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}5h²hh³j�5h´M8ubhÿ)�”}”(hŒatomic_sub_return_release”h]”j)�”}”(hŒatomic_sub_return_release”h]”hŒatomic_sub_return_release”…”�”}”(hj¢5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjž5ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj}5h²hh³j�5h´M8ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¾5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjº5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjº5ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÚ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjº5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¶5ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjõ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j÷5Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¤5sbŒc.atomic_sub_return_release”†”asbuh1hhjî5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî5ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj#6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjî5ubj)�”}”(hjph]”hŒv”…”�”}”(hj06h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¶5ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj}5h²hh³j�5h´M8ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjy5h²hh³j�5h´M8ubah}”(h]”jt5ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�5h´M8hjv5h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hjY6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M8hjV6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjv5h²hh³j�5h´M8ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjq6jHjq6jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX!**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_sub_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj{6h]”hŒ Parameters”…”�”}”(hj}6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M<hju6ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjš6h]”hŒint i”…”�”}”(hjœ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj˜6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M9hj”6ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hj³6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¯6h´M9hj°6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj”6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¯6h´M9hj‘6ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÓ6h]”hŒ atomic_t *v”…”�”}”(hjÕ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÑ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M:hjÍ6ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjì6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jè6h´M:hjé6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÍ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jè6h´M:hj‘6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hju6ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj7h]”hŒ Description”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj 7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M<hju6ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj$7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj,7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$7ubhŒ to (”…”�”}”(hj$7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj>7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$7ubhŒ - ”…”�”}”(hj$7h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjP7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$7ubhŒ) with release ordering.”…”�”}”(hj$7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M;hju6ubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_sub_return_release() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_sub_return_release() there.”…”�”}”(hji7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M=hju6ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjz7h]”hŒReturn”…”�”}”(hj|7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M?hju6ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj�7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj˜7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�7ubhŒ.”…”�”}”(hj�7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M@hju6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_sub_return_relaxed (C function)”Œc.atomic_sub_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2int atomic_sub_return_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ1int atomic_sub_return_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÑ7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÍ7h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍ7h²hh³jß7h´MKubhÿ)�”}”(hŒatomic_sub_return_relaxed”h]”j)�”}”(hŒatomic_sub_return_relaxed”h]”hŒatomic_sub_return_relaxed”…”�”}”(hjò7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî7ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÍ7h²hh³jß7h´MKubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj 8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj 8ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj*8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj 8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj8ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjE8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jG8Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjô7sbŒc.atomic_sub_return_relaxed”†”asbuh1hhj>8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>8ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjs8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj>8ubj)�”}”(hjph]”hŒv”…”�”}”(hj€8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj8ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÍ7h²hh³jß7h´MKubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÉ7h²hh³jß7h´MKubah}”(h]”jÄ7ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jß7h´MKhjÆ7h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hj©8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKhj¦8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÆ7h²hh³jß7h´MKubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÁ8jHjÁ8jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX!**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_sub_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjË8h]”hŒ Parameters”…”�”}”(hjÍ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MOhjÅ8ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjê8h]”hŒint i”…”�”}”(hjì8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjè8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MLhjä8ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÿ8h´MLhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjä8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÿ8h´MLhjá8ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj#9h]”hŒ atomic_t *v”…”�”}”(hj%9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MMhj9ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj<9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j89h´MMhj99ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j89h´MMhjá8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÅ8ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj^9h]”hŒ Description”…”�”}”(hj`9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MOhjÅ8ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjt9h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt9ubhŒ to (”…”�”}”(hjt9h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŽ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt9ubhŒ - ”…”�”}”(hjt9h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt9ubhŒ) with relaxed ordering.”…”�”}”(hjt9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MNhjÅ8ubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_sub_return_relaxed() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_sub_return_relaxed() there.”…”�”}”(hj¹9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MPhjÅ8ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÊ9h]”hŒReturn”…”�”}”(hjÌ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MRhjÅ8ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjà9h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjè9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjà9ubhŒ.”…”�”}”(hjà9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MShjÅ8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_fetch_sub (C function)”Œc.atomic_fetch_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ)int atomic_fetch_sub (int i, atomic_t *v)”h]”hù)�”}”(hŒ(int atomic_fetch_sub(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj!:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj:h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:h²hh³j/:h´M]ubhÿ)�”}”(hŒatomic_fetch_sub”h]”j)�”}”(hŒatomic_fetch_sub”h]”hŒatomic_fetch_sub”…”�”}”(hjB:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>:ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj:h²hh³j/:h´M]ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj^:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjZ:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZ:ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjz:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjV:ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj•:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j—:Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjD:sbŒc.atomic_fetch_sub”†”asbuh1hhjŽ:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽ:ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÃ:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŽ:ubj)�”}”(hjph]”hŒv”…”�”}”(hjÐ:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjV:ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj:h²hh³j/:h´M]ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj:h²hh³j/:h´M]ubah}”(h]”j:ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j/:h´M]hj:h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(hjù:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M]hjö:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj:h²hh³j/:h´M]ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj;jHj;jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_sub() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mahj;ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj:;h]”hŒint i”…”�”}”(hj<;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M^hj4;ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjS;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jO;h´M^hjP;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj4;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jO;h´M^hj1;ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjs;h]”hŒ atomic_t *v”…”�”}”(hju;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjq;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M_hjm;ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjŒ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jˆ;h´M_hj‰;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjm;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆ;h´M_hj1;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj;ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mahj;ubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÄ;h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÌ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄ;ubhŒ to (”…”�”}”(hjÄ;h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÞ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄ;ubhŒ - ”…”�”}”(hjÄ;h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjð;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄ;ubhŒ) with full ordering.”…”�”}”(hjÄ;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M`hj;ubjM)�”}”(hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_sub() there.”h]”hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_sub() there.”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mbhj;ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj<h]”hŒReturn”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mdhj;ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj0<h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0<ubhŒ.”…”�”}”(hj0<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mehj;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_sub_acquire (C function)”Œc.atomic_fetch_sub_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_sub_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_sub_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjq<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjm<h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MpubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjm<h²hh³j<h´Mpubhÿ)�”}”(hŒatomic_fetch_sub_acquire”h]”j)�”}”(hŒatomic_fetch_sub_acquire”h]”hŒatomic_fetch_sub_acquire”…”�”}”(hj’<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ<ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjm<h²hh³j<h´Mpubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj®<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjª<ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjª<ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÊ<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¦<ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjå<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jç<Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj”<sbŒc.atomic_fetch_sub_acquire”†”asbuh1hhjÞ<ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÞ<ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÞ<ubj)�”}”(hjph]”hŒv”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¦<ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjm<h²hh³j<h´Mpubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hji<h²hh³j<h´Mpubah}”(h]”jd<ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j<h´Mphjf<h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hjI=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MphjF=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjf<h²hh³j<h´Mpubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGja=jHja=jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX!**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_sub_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjk=h]”hŒ Parameters”…”�”}”(hjm=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hji=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mthje=ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjŠ=h]”hŒint i”…”�”}”(hjŒ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjˆ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mqhj„=ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hj£=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŸ=h´Mqhj =ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj„=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŸ=h´Mqhj�=ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÃ=h]”hŒ atomic_t *v”…”�”}”(hjÅ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÁ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mrhj½=ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÜ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jØ=h´MrhjÙ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj½=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jØ=h´Mrhj�=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hje=ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mthje=ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj>h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ubhŒ to (”…”�”}”(hj>h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj.>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ubhŒ - ”…”�”}”(hj>h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj@>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ubhŒ) with acquire ordering.”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mshje=ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_sub_acquire() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_sub_acquire() there.”…”�”}”(hjY>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Muhje=ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjj>h]”hŒReturn”…”�”}”(hjl>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mwhje=ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj€>h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjˆ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€>ubhŒ.”…”�”}”(hj€>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mxhje=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_sub_release (C function)”Œc.atomic_fetch_sub_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_sub_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_sub_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÁ>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj½>h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‚ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ>h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½>h²hh³jÏ>h´M‚ubhÿ)�”}”(hŒatomic_fetch_sub_release”h]”j)�”}”(hŒatomic_fetch_sub_release”h]”hŒatomic_fetch_sub_release”…”�”}”(hjâ>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞ>ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj½>h²hh³jÏ>h´M‚ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjþ>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjú>ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjú>ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjú>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjö>ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj5?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j7?Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjä>sbŒc.atomic_fetch_sub_release”†”asbuh1hhj.?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj.?ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjc?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj.?ubj)�”}”(hjph]”hŒv”…”�”}”(hjp?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjö>ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj½>h²hh³jÏ>h´M‚ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¹>h²hh³jÏ>h´M‚ubah}”(h]”j´>ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÏ>h´M‚hj¶>h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hj™?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‚hj–?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¶>h²hh³jÏ>h´M‚ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj±?jHj±?jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX!**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_sub_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M†hjµ?ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjÚ?h]”hŒint i”…”�”}”(hjÜ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjØ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MƒhjÔ?ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjó?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj@h]”hŒ atomic_t *v”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M„hj @ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj,@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjµ?ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjN@h]”hŒ Description”…”�”}”(hjP@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjL@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M†hjµ?ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjd@h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjl@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjd@ubhŒ to (”…”�”}”(hjd@h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj~@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjd@ubhŒ - ”…”�”}”(hjd@h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjd@ubhŒ) with release ordering.”…”�”}”(hjd@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M…hjµ?ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_sub_release() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_sub_release() there.”…”�”}”(hj©@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‡hjµ?ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjº@h]”hŒReturn”…”�”}”(hj¼@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‰hjµ?ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÐ@h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjØ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐ@ubhŒ.”…”�”}”(hjÐ@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠhjµ?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_sub_relaxed (C function)”Œc.atomic_fetch_sub_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_sub_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_sub_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj Ah²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M•ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Ah²hh³jAh´M•ubhÿ)�”}”(hŒatomic_fetch_sub_relaxed”h]”j)�”}”(hŒatomic_fetch_sub_relaxed”h]”hŒatomic_fetch_sub_relaxed”…”�”}”(hj2Ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.Aubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj Ah²hh³jAh´M•ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjNAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjJAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Ah²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJAubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjjAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjFAubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj…Ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‡AŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj4AsbŒc.atomic_fetch_sub_relaxed”†”asbuh1hhj~AubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Ah²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~Aubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj³Ah²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj~Aubj)�”}”(hjph]”hŒv”…”�”}”(hjÀAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjFAubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj Ah²hh³jAh´M•ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj Ah²hh³jAh´M•ubah}”(h]”jAah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jAh´M•hjAh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hjéAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M•hjæAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjAh²hh³jAh´M•ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjBjHjBjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX!**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_sub_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj Bh]”hŒ Parameters”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M™hjBubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj*Bh]”hŒint i”…”�”}”(hj,Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj(Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M–hj$BubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjCBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j?Bh´M–hj@Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj$Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j?Bh´M–hj!Bubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjcBh]”hŒ atomic_t *v”…”�”}”(hjeBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjaBubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M—hj]BubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj|Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jxBh´M—hjyBubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jxBh´M—hj!Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjBubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjžBh]”hŒ Description”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœBubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M™hjBubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj´Bh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¼Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´BubhŒ to (”…”�”}”(hj´Bh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÎBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´BubhŒ - ”…”�”}”(hj´Bh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjàBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´BubhŒ) with relaxed ordering.”…”�”}”(hj´Bh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M˜hjBubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_sub_relaxed() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_sub_relaxed() there.”…”�”}”(hjùBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MšhjBubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj Ch]”hŒReturn”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MœhjBubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj Ch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj(Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj CubhŒ.”…”�”}”(hj Ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_inc (C function)”Œ c.atomic_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid atomic_inc (atomic_t *v)”h]”hù)�”}”(hŒvoid atomic_inc(atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjaCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj]Ch²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M§ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpCh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj]Ch²hh³joCh´M§ubhÿ)�”}”(hŒ atomic_inc”h]”j)�”}”(hŒ atomic_inc”h]”hŒ atomic_inc”…”�”}”(hj‚Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~Cubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj]Ch²hh³joCh´M§ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj¡Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j£CŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj„CsbŒ c.atomic_inc”†”asbuh1hhjšCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁCh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjšCubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÏCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjšCubj)�”}”(hjph]”hŒv”…”�”}”(hjÜCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9•&hj–Cubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj]Ch²hh³joCh´M§ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjYCh²hh³joCh´M§ubah}”(h]”jTCah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³joCh´M§hjVCh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M§hjDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjVCh²hh³joCh´M§ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjDjHjDjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒØ**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_inc() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj'Dh]”hŒ Parameters”…”�”}”(hj)Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M«hj!Dubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjFDh]”hŒ atomic_t *v”…”�”}”(hjHDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjDDubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¨hj@DubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj_Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j[Dh´M¨hj\Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj@Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j[Dh´M¨hj=Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj!DubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj�Dh]”hŒ Description”…”�”}”(hjƒDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mªhj!DubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj—Dh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŸDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—DubhŒ to (”…”�”}”(hj—Dh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj±Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—DubhŒ + 1) with relaxed ordering.”…”�”}”(hj—Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M©hj!DubjM)�”}”(hŒ:Unsafe to use in noinstr code; use raw_atomic_inc() there.”h]”hŒ:Unsafe to use in noinstr code; use raw_atomic_inc() there.”…”�”}”(hjÊDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M«hj!DubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÛDh]”hŒReturn”…”�”}”(hjÝDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M­hj!DubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjñDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M®hj!Dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_inc_return (C function)”Œc.atomic_inc_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ#int atomic_inc_return (atomic_t *v)”h]”hù)�”}”(hŒ"int atomic_inc_return(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjEh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjEh²hh³j.Eh´M¸ubhÿ)�”}”(hŒatomic_inc_return”h]”j)�”}”(hŒatomic_inc_return”h]”hŒatomic_inc_return”…”�”}”(hjAEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=Eubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjEh²hh³j.Eh´M¸ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj`Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jbEŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjCEsbŒc.atomic_inc_return”†”asbuh1hhjYEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjYEubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŽEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjYEubj)�”}”(hjph]”hŒv”…”�”}”(hj›Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjUEubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjEh²hh³j.Eh´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjEh²hh³j.Eh´M¸ubah}”(h]”jEah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j.Eh´M¸hjEh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hjÄEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸hjÁEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjEh²hh³j.Eh´M¸ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÜEjHjÜEjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒï**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_inc_return() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjæEh]”hŒ Parameters”…”�”}”(hjèEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjäEubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¼hjàEubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjFh]”hŒ atomic_t *v”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¹hjÿEubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jFh´M¹hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÿEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jFh´M¹hjüEubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjàEubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj@Fh]”hŒ Description”…”�”}”(hjBFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M»hjàEubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjVFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj^Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVFubhŒ to (”…”�”}”(hjVFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjpFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVFubhŒ + 1) with full ordering.”…”�”}”(hjVFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MºhjàEubjM)�”}”(hŒAUnsafe to use in noinstr code; use raw_atomic_inc_return() there.”h]”hŒAUnsafe to use in noinstr code; use raw_atomic_inc_return() there.”…”�”}”(hj‰Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¼hjàEubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjšFh]”hŒReturn”…”�”}”(hjœFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˜Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¾hjàEubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj°Fh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¸Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°FubhŒ.”…”�”}”(hj°Fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¿hjàEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_inc_return_acquire (C function)”Œc.atomic_inc_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int atomic_inc_return_acquire (atomic_t *v)”h]”hù)�”}”(hŒ*int atomic_inc_return_acquire(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjñFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjíFh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÊubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjíFh²hh³jÿFh´MÊubhÿ)�”}”(hŒatomic_inc_return_acquire”h]”j)�”}”(hŒatomic_inc_return_acquire”h]”hŒatomic_inc_return_acquire”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjíFh²hh³jÿFh´MÊubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj1Gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j3GŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjGsbŒc.atomic_inc_return_acquire”†”asbuh1hhj*GubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQGh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*Gubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj_Gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj*Gubj)�”}”(hjph]”hŒv”…”�”}”(hjlGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj&Gubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjíFh²hh³jÿFh´MÊubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjéFh²hh³jÿFh´MÊubah}”(h]”jäFah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÿFh´MÊhjæFh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hj•Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÊhj’Gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjæFh²hh³jÿFh´MÊubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj­GjHj­GjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_inc_return_acquire() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj·Gh]”hŒ Parameters”…”�”}”(hj¹Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµGubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÎhj±Gubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÖGh]”hŒ atomic_t *v”…”�”}”(hjØGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔGubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MËhjÐGubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjïGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jëGh´MËhjìGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÐGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jëGh´MËhjÍGubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj±GubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjHh]”hŒ Description”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÍhj±GubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj'Hh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj/Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'HubhŒ to (”…”�”}”(hj'Hh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjAHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'HubhŒ + 1) with acquire ordering.”…”�”}”(hj'Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌhj±GubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_inc_return_acquire() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_inc_return_acquire() there.”…”�”}”(hjZHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÎhj±GubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjkHh]”hŒReturn”…”�”}”(hjmHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjiHubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐhj±GubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj�Hh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‰Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�HubhŒ.”…”�”}”(hj�Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑhj±Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_inc_return_release (C function)”Œc.atomic_inc_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int atomic_inc_return_release (atomic_t *v)”h]”hù)�”}”(hŒ*int atomic_inc_return_release(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÂHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¾Hh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÛubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑHh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¾Hh²hh³jÐHh´MÛubhÿ)�”}”(hŒatomic_inc_return_release”h]”j)�”}”(hŒatomic_inc_return_release”h]”hŒatomic_inc_return_release”…”�”}”(hjãHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjßHubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¾Hh²hh³jÐHh´MÛubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jIŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjåHsbŒc.atomic_inc_return_release”†”asbuh1hhjûHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûHubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj0Ih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjûHubj)�”}”(hjph]”hŒv”…”�”}”(hj=Ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj÷Hubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¾Hh²hh³jÐHh´MÛubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjºHh²hh³jÐHh´MÛubah}”(h]”jµHah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÐHh´MÛhj·Hh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hjfIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÛhjcIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj·Hh²hh³jÐHh´MÛubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj~IjHj~IjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic_inc_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjˆIh]”hŒ Parameters”…”�”}”(hjŠIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mßhj‚Iubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj§Ih]”hŒ atomic_t *v”…”�”}”(hj©Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¥Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÜhj¡IubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÀIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¼Ih´MÜhj½Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¡Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¼Ih´MÜhjžIubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‚IubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjâIh]”hŒ Description”…”�”}”(hjäIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjàIubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞhj‚IubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjøIh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjøIubhŒ to (”…”�”}”(hjøIh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjøIubhŒ + 1) with release ordering.”…”�”}”(hjøIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝhj‚IubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_inc_return_release() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_inc_return_release() there.”…”�”}”(hj+Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mßhj‚IubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Máhj‚IubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjRJh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRJubhŒ.”…”�”}”(hjRJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mâhj‚Iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_inc_return_relaxed (C function)”Œc.atomic_inc_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int atomic_inc_return_relaxed (atomic_t *v)”h]”hù)�”}”(hŒ*int atomic_inc_return_relaxed(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj“Jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�Jh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Jh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Jh²hh³j¡Jh´Míubhÿ)�”}”(hŒatomic_inc_return_relaxed”h]”j)�”}”(hŒatomic_inc_return_relaxed”h]”hŒatomic_inc_return_relaxed”…”�”}”(hj´Jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°Jubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�Jh²hh³j¡Jh´Míubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÓJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÕJŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¶JsbŒc.atomic_inc_return_relaxed”†”asbuh1hhjÌJubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóJh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÌJubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÌJubj)�”}”(hjph]”hŒv”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÈJubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�Jh²hh³j¡Jh´Míubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‹Jh²hh³j¡Jh´Míubah}”(h]”j†Jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¡Jh´MíhjˆJh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hj7Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Míhj4Kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjˆJh²hh³j¡Jh´Míubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjOKjHjOKjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_inc_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjYKh]”hŒ Parameters”…”�”}”(hj[Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWKubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MñhjSKubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjxKh]”hŒ atomic_t *v”…”�”}”(hjzKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjvKubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MîhjrKubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj‘Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�Kh´MîhjŽKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjrKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Kh´MîhjoKubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjSKubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj³Kh]”hŒ Description”…”�”}”(hjµKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj±Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MðhjSKubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÉKh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÑKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉKubhŒ to (”…”�”}”(hjÉKh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjãKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉKubhŒ + 1) with relaxed ordering.”…”�”}”(hjÉKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MïhjSKubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_inc_return_relaxed() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_inc_return_relaxed() there.”…”�”}”(hjüKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MñhjSKubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj Lh]”hŒReturn”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MóhjSKubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj#Lh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj+Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#LubhŒ.”…”�”}”(hj#Lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MôhjSKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_fetch_inc (C function)”Œc.atomic_fetch_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ"int atomic_fetch_inc (atomic_t *v)”h]”hù)�”}”(hŒ!int atomic_fetch_inc(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjdLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj`Lh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MþubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsLh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`Lh²hh³jrLh´Mþubhÿ)�”}”(hŒatomic_fetch_inc”h]”j)�”}”(hŒatomic_fetch_inc”h]”hŒatomic_fetch_inc”…”�”}”(hj…Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Lubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj`Lh²hh³jrLh´Mþubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj¤Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¦LŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‡LsbŒc.atomic_fetch_inc”†”asbuh1hhj�LubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄLh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Lubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÒLh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�Lubj)�”}”(hjph]”hŒv”…”�”}”(hjßLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj™Lubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj`Lh²hh³jrLh´Mþubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj\Lh²hh³jrLh´Mþubah}”(h]”jWLah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jrLh´MþhjYLh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MþhjMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjYLh²hh³jrLh´Mþubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj MjHj MjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒï**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_inc() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj*Mh]”hŒ Parameters”…”�”}”(hj,Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj$Mubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjIMh]”hŒ atomic_t *v”…”�”}”(hjKMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjGMubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÿhjCMubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjbMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j^Mh´Mÿhj_Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjCMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j^Mh´Mÿhj@Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj$MubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj„Mh]”hŒ Description”…”�”}”(hj†Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj$MubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjšMh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¢Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšMubhŒ to (”…”�”}”(hjšMh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj´Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšMubhŒ + 1) with full ordering.”…”�”}”(hjšMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj$MubjM)�”}”(hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_inc() there.”h]”hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_inc() there.”…”�”}”(hjÍMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj$MubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÞMh]”hŒReturn”…”�”}”(hjàMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜMubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj$MubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjôMh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjüMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjôMubhŒ.”…”�”}”(hjôMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj$Mubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_inc_acquire (C function)”Œc.atomic_fetch_inc_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int atomic_fetch_inc_acquire (atomic_t *v)”h]”hù)�”}”(hŒ)int atomic_fetch_inc_acquire(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj5Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj1Nh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1Nh²hh³jCNh´Mubhÿ)�”}”(hŒatomic_fetch_inc_acquire”h]”j)�”}”(hŒatomic_fetch_inc_acquire”h]”hŒatomic_fetch_inc_acquire”…”�”}”(hjVNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRNubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj1Nh²hh³jCNh´Mubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjuNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jwNŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjXNsbŒc.atomic_fetch_inc_acquire”†”asbuh1hhjnNubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Nh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjnNubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj£Nh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjnNubj)�”}”(hjph]”hŒv”…”�”}”(hj°Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjjNubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj1Nh²hh³jCNh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj-Nh²hh³jCNh´Mubah}”(h]”j(Nah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jCNh´Mhj*Nh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hjÙNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÖNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj*Nh²hh³jCNh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjñNjHjñNjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_inc_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjûNh]”hŒ Parameters”…”�”}”(hjýNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùNubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjõNubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjOh]”hŒ atomic_t *v”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjOubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj3Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j/Oh´Mhj0Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j/Oh´MhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjõNubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjUOh]”hŒ Description”…”�”}”(hjWOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSOubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjõNubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjkOh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjsOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkOubhŒ to (”…”�”}”(hjkOh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj…Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkOubhŒ + 1) with acquire ordering.”…”�”}”(hjkOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjõNubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_inc_acquire() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_inc_acquire() there.”…”�”}”(hjžOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjõNubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¯Oh]”hŒReturn”…”�”}”(hj±Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj­Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjõNubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÅOh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÍOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅOubhŒ.”…”�”}”(hjÅOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjõNubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_inc_release (C function)”Œc.atomic_fetch_inc_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int atomic_fetch_inc_release (atomic_t *v)”h]”hù)�”}”(hŒ)int atomic_fetch_inc_release(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjPh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M!ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPh²hh³jPh´M!ubhÿ)�”}”(hŒatomic_fetch_inc_release”h]”j)�”}”(hŒatomic_fetch_inc_release”h]”hŒatomic_fetch_inc_release”…”�”}”(hj'Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#Pubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjPh²hh³jPh´M!ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjFPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jHPŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj)PsbŒc.atomic_fetch_inc_release”†”asbuh1hhj?PubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfPh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?Pubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjtPh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj?Pubj)�”}”(hjph]”hŒv”…”�”}”(hj�Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?Pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj;Pubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjPh²hh³jPh´M!ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjþOh²hh³jPh´M!ubah}”(h]”jùOah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jPh´M!hjûOh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hjªPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M!hj§Ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjûOh²hh³jPh´M!ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÂPjHjÂPjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_inc_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÌPh]”hŒ Parameters”…”�”}”(hjÎPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊPubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M%hjÆPubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjëPh]”hŒ atomic_t *v”…”�”}”(hjíPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjéPubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M"hjåPubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQh´M"hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjåPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQh´M"hjâPubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÆPubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj&Qh]”hŒ Description”…”�”}”(hj(Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M$hjÆPubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjAtomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj Sh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj SubhŒ to (”…”�”}”(hj Sh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj'Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj SubhŒ + 1) with relaxed ordering.”…”�”}”(hj Sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M5hj—RubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_inc_relaxed() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_inc_relaxed() there.”…”�”}”(hj@Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M7hj—RubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjQSh]”hŒReturn”…”�”}”(hjSSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOSubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M9hj—RubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjgSh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjoSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgSubhŒ.”…”�”}”(hjgSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M:hj—Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_dec (C function)”Œ c.atomic_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid atomic_dec (atomic_t *v)”h]”hù)�”}”(hŒvoid atomic_dec(atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¨Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¤Sh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MDubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Sh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤Sh²hh³j¶Sh´MDubhÿ)�”}”(hŒ atomic_dec”h]”j)�”}”(hŒ atomic_dec”h]”hŒ atomic_dec”…”�”}”(hjÉSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅSubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¤Sh²hh³j¶Sh´MDubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjèSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jêSŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjËSsbŒ c.atomic_dec”†”asbuh1hhjáSubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjáSubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjáSubj)�”}”(hjph]”hŒv”…”�”}”(hj#Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÝSubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¤Sh²hh³j¶Sh´MDubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj Sh²hh³j¶Sh´MDubah}”(h]”j›Sah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¶Sh´MDhj�Sh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hjLTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MDhjITh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�Sh²hh³j¶Sh´MDubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjdTjHjdTjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒØ**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_dec() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjnTh]”hŒ Parameters”…”�”}”(hjpTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlTubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MHhjhTubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj�Th]”hŒ atomic_t *v”…”�”}”(hj�Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‹Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MEhj‡TubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj¦Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¢Th´MEhj£Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‡Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¢Th´MEhj„Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjhTubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÈTh]”hŒ Description”…”�”}”(hjÊTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆTubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MGhjhTubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÞTh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjæTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞTubhŒ to (”…”�”}”(hjÞTh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjøTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞTubhŒ - 1) with relaxed ordering.”…”�”}”(hjÞTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MFhjhTubjM)�”}”(hŒ:Unsafe to use in noinstr code; use raw_atomic_dec() there.”h]”hŒ:Unsafe to use in noinstr code; use raw_atomic_dec() there.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MHhjhTubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj"Uh]”hŒReturn”…”�”}”(hj$Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MJhjhTubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj8Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKhjhTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_dec_return (C function)”Œc.atomic_dec_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ#int atomic_dec_return (atomic_t *v)”h]”hù)�”}”(hŒ"int atomic_dec_return(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjgUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjcUh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MUubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvUh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcUh²hh³juUh´MUubhÿ)�”}”(hŒatomic_dec_return”h]”j)�”}”(hŒatomic_dec_return”h]”hŒatomic_dec_return”…”�”}”(hjˆUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„Uubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjcUh²hh³juUh´MUubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj§Uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j©UŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŠUsbŒc.atomic_dec_return”†”asbuh1hhj UubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇUh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Uubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÕUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj Uubj)�”}”(hjph]”hŒv”…”�”}”(hjâUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœUubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjcUh²hh³juUh´MUubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj_Uh²hh³juUh´MUubah}”(h]”jZUah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³juUh´MUhj\Uh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MUhjVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj\Uh²hh³juUh´MUubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj#VjHj#VjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒï**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_dec_return() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj-Vh]”hŒ Parameters”…”�”}”(hj/Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj+Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MYhj'Vubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjLVh]”hŒ atomic_t *v”…”�”}”(hjNVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJVubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MVhjFVubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjeVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jaVh´MVhjbVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jaVh´MVhjCVubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj'VubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj‡Vh]”hŒ Description”…”�”}”(hj‰Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj…Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MXhj'VubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj�Vh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¥Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�VubhŒ to (”…”�”}”(hj�Vh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj·Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�VubhŒ - 1) with full ordering.”…”�”}”(hj�Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MWhj'VubjM)�”}”(hŒAUnsafe to use in noinstr code; use raw_atomic_dec_return() there.”h]”hŒAUnsafe to use in noinstr code; use raw_atomic_dec_return() there.”…”�”}”(hjÐVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MYhj'VubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjáVh]”hŒReturn”…”�”}”(hjãVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjßVubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M[hj'VubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj÷Vh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÿVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj÷VubhŒ.”…”�”}”(hj÷Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M\hj'Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_dec_return_acquire (C function)”Œc.atomic_dec_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int atomic_dec_return_acquire (atomic_t *v)”h]”hù)�”}”(hŒ*int atomic_dec_return_acquire(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj8Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj4Wh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MgubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4Wh²hh³jFWh´Mgubhÿ)�”}”(hŒatomic_dec_return_acquire”h]”j)�”}”(hŒatomic_dec_return_acquire”h]”hŒatomic_dec_return_acquire”…”�”}”(hjYWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUWubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj4Wh²hh³jFWh´Mgubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjxWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jzWŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj[WsbŒc.atomic_dec_return_acquire”†”asbuh1hhjqWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Wh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjqWubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¦Wh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjqWubj)�”}”(hjph]”hŒv”…”�”}”(hj³Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjmWubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj4Wh²hh³jFWh´Mgubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj0Wh²hh³jFWh´Mgubah}”(h]”j+Wah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jFWh´Mghj-Wh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hjÜWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MghjÙWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj-Wh²hh³jFWh´Mgubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjôWjHjôWjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_dec_return_acquire() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjþWh]”hŒ Parameters”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüWubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MkhjøWubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjXh]”hŒ atomic_t *v”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhhjXubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj6Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j2Xh´Mhhj3Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j2Xh´MhhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjøWubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjXXh]”hŒ Description”…”�”}”(hjZXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVXubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MjhjøWubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjnXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjvXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnXubhŒ to (”…”�”}”(hjnXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjˆXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnXubhŒ - 1) with acquire ordering.”…”�”}”(hjnXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MihjøWubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_dec_return_acquire() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_dec_return_acquire() there.”…”�”}”(hj¡Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MkhjøWubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj²Xh]”hŒReturn”…”�”}”(hj´Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MmhjøWubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÈXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÐXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈXubhŒ.”…”�”}”(hjÈXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MnhjøWubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_dec_return_release (C function)”Œc.atomic_dec_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int atomic_dec_return_release (atomic_t *v)”•h]”hù)�”}”(hŒ*int atomic_dec_return_release(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjYh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MxubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjYh²hh³jYh´Mxubhÿ)�”}”(hŒatomic_dec_return_release”h]”j)�”}”(hŒatomic_dec_return_release”h]”hŒatomic_dec_return_release”…”�”}”(hj*Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&Yubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjYh²hh³jYh´Mxubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjIYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jKYŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj,YsbŒc.atomic_dec_return_release”†”asbuh1hhjBYubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiYh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjBYubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjwYh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjBYubj)�”}”(hjph]”hŒv”…”�”}”(hj„Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>Yubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjYh²hh³jYh´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjYh²hh³jYh´Mxubah}”(h]”jüXah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jYh´MxhjþXh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hj­Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MxhjªYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjþXh²hh³jYh´Mxubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÅYjHjÅYjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic_dec_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÏYh]”hŒ Parameters”…”�”}”(hjÑYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍYubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M|hjÉYubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjîYh]”hŒ atomic_t *v”…”�”}”(hjðYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjìYubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MyhjèYubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jZh´MyhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjèYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jZh´MyhjåYubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÉYubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj)Zh]”hŒ Description”…”�”}”(hj+Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M{hjÉYubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj?Zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjGZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ZubhŒ to (”…”�”}”(hj?Zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjYZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ZubhŒ - 1) with release ordering.”…”�”}”(hj?Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MzhjÉYubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_dec_return_release() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_dec_return_release() there.”…”�”}”(hjrZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M|hjÉYubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjƒZh]”hŒReturn”…”�”}”(hj…Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M~hjÉYubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj™Zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¡Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™ZubhŒ.”…”�”}”(hj™Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÉYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic_dec_return_relaxed (C function)”Œc.atomic_dec_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+int atomic_dec_return_relaxed (atomic_t *v)”h]”hù)�”}”(hŒ*int atomic_dec_return_relaxed(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÖZh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖZh²hh³jèZh´MŠubhÿ)�”}”(hŒatomic_dec_return_relaxed”h]”j)�”}”(hŒatomic_dec_return_relaxed”h]”hŒatomic_dec_return_relaxed”…”�”}”(hjûZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷Zubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÖZh²hh³jèZh´MŠubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j[Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjýZsbŒc.atomic_dec_return_relaxed”†”asbuh1hhj[ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:[h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjH[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj[ubj)�”}”(hjph]”hŒv”…”�”}”(hjU[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj[ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÖZh²hh³jèZh´MŠubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÒZh²hh³jèZh´MŠubah}”(h]”jÍZah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jèZh´MŠhjÏZh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj~[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠhj{[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÏZh²hh³jèZh´MŠubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj–[jHj–[jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_dec_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽhjš[ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj¿[h]”hŒ atomic_t *v”…”�”}”(hjÁ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj½[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‹hj¹[ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjØ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjš[ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjš[ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ to (”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj*\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ - 1) with relaxed ordering.”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŒhjš[ubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic_dec_return_relaxed() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic_dec_return_relaxed() there.”…”�”}”(hjC\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽhjš[ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjT\h]”hŒReturn”…”�”}”(hjV\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjš[ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjj\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjr\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj\ubhŒ.”…”�”}”(hjj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‘hjš[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_fetch_dec (C function)”Œc.atomic_fetch_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ"int atomic_fetch_dec (atomic_t *v)”h]”hù)�”}”(hŒ!int atomic_fetch_dec(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj«\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj§\h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº\h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§\h²hh³j¹\h´M›ubhÿ)�”}”(hŒatomic_fetch_dec”h]”j)�”}”(hŒatomic_fetch_dec”h]”hŒatomic_fetch_dec”…”�”}”(hjÌ\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ\ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj§\h²hh³j¹\h´M›ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjë\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jí\Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÎ\sbŒc.atomic_fetch_dec”†”asbuh1hhjä\ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjä\ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjä\ubj)�”}”(hjph]”hŒv”…”�”}”(hj&]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjà\ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj§\h²hh³j¹\h´M›ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj£\h²hh³j¹\h´M›ubah}”(h]”jž\ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¹\h´M›hj \h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hjO]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M›hjL]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj \h²hh³j¹\h´M›ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjg]jHjg]jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒï**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_dec() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjq]h]”hŒ Parameters”…”�”}”(hjs]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjo]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸhjk]ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj�]h]”hŒ atomic_t *v”…”�”}”(hj’]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŽ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MœhjŠ]ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj©]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjk]ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mžhjk]ubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjá]h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjé]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjá]ubhŒ to (”…”�”}”(hjá]h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjû]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjá]ubhŒ - 1) with full ordering.”…”�”}”(hjá]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjk]ubjM)�”}”(hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_dec() there.”h]”hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_dec() there.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸhjk]ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj%^h]”hŒReturn”…”�”}”(hj'^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¡hjk]ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj;^h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjC^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;^ubhŒ.”…”�”}”(hj;^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¢hjk]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_dec_acquire (C function)”Œc.atomic_fetch_dec_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int atomic_fetch_dec_acquire (atomic_t *v)”h]”hù)�”}”(hŒ)int atomic_fetch_dec_acquire(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj|^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjx^h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjx^h²hh³jŠ^h´M­ubhÿ)�”}”(hŒatomic_fetch_dec_acquire”h]”j)�”}”(hŒatomic_fetch_dec_acquire”h]”hŒatomic_fetch_dec_acquire”…”�”}”(hj�^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™^ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjx^h²hh³jŠ^h´M­ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj¼^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¾^Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŸ^sbŒc.atomic_fetch_dec_acquire”†”asbuh1hhjµ^ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµ^ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjê^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjµ^ubj)�”}”(hjph]”hŒv”…”�”}”(hj÷^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµ^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±^ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjx^h²hh³jŠ^h´M­ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjt^h²hh³jŠ^h´M­ubah}”(h]”jo^ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŠ^h´M­hjq^h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M­hj_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjq^h²hh³jŠ^h´M­ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj8_jHj8_jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_dec_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjB_h]”hŒ Parameters”…”�”}”(hjD_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M±hj<_ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hja_h]”hŒ atomic_t *v”…”�”}”(hjc_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj__ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M®hj[_ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjz_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jv_h´M®hjw_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj[_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jv_h´M®hjX_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj<_ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M°hj<_ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj²_h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjº_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj²_ubhŒ to (”…”�”}”(hj²_h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÌ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj²_ubhŒ - 1) with acquire ordering.”…”�”}”(hj²_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¯hj<_ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_dec_acquire() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_dec_acquire() there.”…”�”}”(hjå_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M±hj<_ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjö_h]”hŒReturn”…”�”}”(hjø_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjô_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³hj<_ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj `h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj `ubhŒ.”…”�”}”(hj `h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´hj<_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_dec_release (C function)”Œc.atomic_fetch_dec_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int atomic_fetch_dec_release (atomic_t *v)”h]”hù)�”}”(hŒ)int atomic_fetch_dec_release(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjM`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjI`h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjI`h²hh³j[`h´M¾ubhÿ)�”}”(hŒatomic_fetch_dec_release”h]”j)�”}”(hŒatomic_fetch_dec_release”h]”hŒatomic_fetch_dec_release”…”�”}”(hjn`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj`ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjI`h²hh³j[`h´M¾ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj�`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�`Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjp`sbŒc.atomic_fetch_dec_release”†”asbuh1hhj†`ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†`ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj»`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj†`ubj)�”}”(hjph]”hŒv”…”�”}”(hjÈ`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‚`ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjI`h²hh³j[`h´M¾ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjE`h²hh³j[`h´M¾ubah}”(h]”j@`ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j[`h´M¾hjB`h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hjñ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¾hjî`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjB`h²hh³j[`h´M¾ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj ajHj ajI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_dec_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjah]”hŒ Parameters”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÂhj aubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj2ah]”hŒ atomic_t *v”…”�”}”(hj4ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0aubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¿hj,aubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjKah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jGah´M¿hjHaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jGah´M¿hj)aubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj aubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjmah]”hŒ Description”…”�”}”(hjoah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÁhj aubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjƒah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‹ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒaubhŒ to (”…”�”}”(hjƒah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒaubhŒ - 1) with release ordering.”…”�”}”(hjƒah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÀhj aubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_dec_release() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_dec_release() there.”…”�”}”(hj¶ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÂhj aubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÇah]”hŒReturn”…”�”}”(hjÉah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÄhj aubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÝah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjåah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝaubhŒ.”…”�”}”(hjÝah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÅhj aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_dec_relaxed (C function)”Œc.atomic_fetch_dec_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int atomic_fetch_dec_relaxed (atomic_t *v)”h]”hù)�”}”(hŒ)int atomic_fetch_dec_relaxed(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjbh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjbh²hh³j,bh´MÐubhÿ)�”}”(hŒatomic_fetch_dec_relaxed”h]”j)�”}”(hŒatomic_fetch_dec_relaxed”h]”hŒatomic_fetch_dec_relaxed”…”�”}”(hj?bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;bubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjbh²hh³j,bh´MÐubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj^bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j`bŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjAbsbŒc.atomic_fetch_dec_relaxed”†”asbuh1hhjWbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjWbubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŒbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjWbubj)�”}”(hjph]”hŒv”…”�”}”(hj™bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjSbubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjbh²hh³j,bh´MÐubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjbh²hh³j,bh´MÐubah}”(h]”jbah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j,bh´MÐhjbh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hjÂbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐhj¿bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjbh²hh³j,bh´MÐubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÚbjHjÚbjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_dec_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjäbh]”hŒ Parameters”…”�”}”(hjæbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâbubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÔhjÞbubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjch]”hŒ atomic_t *v”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑhjýbubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jch´MÑhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjýbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jch´MÑhjúbubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÞbubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj>ch]”hŒ Description”…”�”}”(hj@ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAtomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjTch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj\ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTcubhŒ to (”…”�”}”(hjTch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjnch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTcubhŒ - 1) with relaxed ordering.”…”�”}”(hjTch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÒhjÞbubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_dec_relaxed() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_dec_relaxed() there.”…”�”}”(hj‡ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÔhjÞbubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj˜ch]”hŒReturn”…”�”}”(hjšch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÖhjÞbubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj®ch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¶ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®cubhŒ.”…”�”}”(hj®ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M×hjÞbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_and (C function)”Œ c.atomic_and”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ$void atomic_and (int i, atomic_t *v)”h]”hù)�”}”(hŒ#void atomic_and(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjïch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjëch²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MáubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjëch²hh³jých´Máubhÿ)�”}”(hŒ atomic_and”h]”j)�”}”(hŒ atomic_and”h]”hŒ atomic_and”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj dubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjëch²hh³jých´Máubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj,dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj(dubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj(dubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjHdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj$dubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjcdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jedŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjdsbŒ c.atomic_and”†”asbuh1hhj\dubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\dubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‘dh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj\dubj)�”}”(hjph]”hŒv”…”�”}”(hjždh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj$dubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjëch²hh³jých´Máubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjçch²hh³jých´Máubah}”(h]”jâcah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jých´Máhjäch²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hjÇdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MáhjÄdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjäch²hh³jých´Máubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjßdjHjßdjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒó**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_and() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjédh]”hŒ Parameters”…”�”}”(hjëdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjçdubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Måhjãdubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjeh]”hŒint i”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MâhjeubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj!eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jeh´Mâhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jeh´Mâhjÿdubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjAeh]”hŒ atomic_t *v”…”�”}”(hjCeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj?eubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mãhj;eubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjZeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jVeh´MãhjWeubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj;eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jVeh´Mãhjÿdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjãdubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj|eh]”hŒ Description”…”�”}”(hj~eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MåhjãdubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj’eh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjšeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’eubhŒ to (”…”�”}”(hj’eh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¬eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’eubhŒ & ”…”�”}”(hj’eh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¾eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’eubhŒ) with relaxed ordering.”…”�”}”(hj’eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MähjãdubjM)�”}”(hŒ:Unsafe to use in noinstr code; use raw_atomic_and() there.”h]”hŒ:Unsafe to use in noinstr code; use raw_atomic_and() there.”…”�”}”(hj×eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MæhjãdubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjèeh]”hŒReturn”…”�”}”(hjêeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MèhjãdubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjþeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Méhjãdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_fetch_and (C function)”Œc.atomic_fetch_and”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ)int atomic_fetch_and (int i, atomic_t *v)”h]”hù)�”}”(hŒ(int atomic_fetch_and(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj-fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj)fh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MóubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCkŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjðjsbŒc.atomic_fetch_and_release”†”asbuh1hhj:kubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjakh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:kubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjokh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj:kubj)�”}”(hjph]”hŒv”…”�”}”(hj|kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjkubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÉjh²hh³jÛjh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÅjh²hh³jÛjh´Mubah}”(h]”jÀjah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÛjh´MhjÂjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with release ordering”h]”hŒ(atomic bitwise AND with release ordering”…”�”}”(hj¥kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj¢kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÂjh²hh³jÛjh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj½kjHj½kjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_and_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÇkh]”hŒ Parameters”…”�”}”(hjÉkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅkubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÁkubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjækh]”hŒint i”…”�”}”(hjèkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjäkubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjàkubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjÿkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jûkh´Mhjükubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjàkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jûkh´MhjÝkubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjlh]”hŒ atomic_t *v”…”�”}”(hj!lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjlubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj8lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4lh´Mhj5lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4lh´MhjÝkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÁkubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjZlh]”hŒ Description”…”�”}”(hj\lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXlubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÁkubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjplh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjxlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjplubhŒ to (”…”�”}”(hjplh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŠlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjplubhŒ & ”…”�”}”(hjplh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjœlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjplubhŒ) with release ordering.”…”�”}”(hjplh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÁkubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_and_release() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_and_release() there.”…”�”}”(hjµlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÁkubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÆlh]”hŒReturn”…”�”}”(hjÈlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄlubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÁkubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÜlh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjälh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜlubhŒ.”…”�”}”(hjÜlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÁkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_and_relaxed (C function)”Œc.atomic_fetch_and_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_and_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_and_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjmh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmh²hh³j+mh´M+ubhÿ)�”}”(hŒatomic_fetch_and_relaxed”h]”j)�”}”(hŒatomic_fetch_and_relaxed”h]”hŒatomic_fetch_and_relaxed”…”�”}”(hj>mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:mubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjmh²hh³j+mh´M+ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjZmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjVmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjVmubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjvmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjRmubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj‘mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j“mŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj@msbŒc.atomic_fetch_and_relaxed”†”asbuh1hhjŠmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠmubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¿mh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŠmubj)�”}”(hjph]”hŒv”…”�”}”(hjÌmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjRmubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjmh²hh³j+mh´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjmh²hh³j+mh´M+ubah}”(h]”jmah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j+mh´M+hjmh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hjõmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M+hjòmh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjmh²hh³j+mh´M+ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj njHj njI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_and_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjnh]”hŒ Parameters”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/hjnubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj6nh]”hŒint i”…”�”}”(hj8nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4nubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M,hj0nubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjOnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jKnh´M,hjLnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jKnh´M,hj-nubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjonh]”hŒ atomic_t *v”…”�”}”(hjqnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjmnubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M-hjinubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjˆnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j„nh´M-hj…nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjinubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„nh´M-hj-nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjnubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjªnh]”hŒ Description”…”�”}”(hj¬nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/hjnubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÀnh²hh³Nh´NubjŽ•)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÈnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀnubhŒ to (”…”�”}”(hjÀnh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÚnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀnubhŒ & ”…”�”}”(hjÀnh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjình²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀnubhŒ) with relaxed ordering.”…”�”}”(hjÀnh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M.hjnubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_and_relaxed() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_and_relaxed() there.”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M0hjnubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjoh]”hŒReturn”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M2hjnubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj,oh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj4oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,oubhŒ.”…”�”}”(hj,oh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M3hjnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_andnot (C function)”Œc.atomic_andnot”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'void atomic_andnot (int i, atomic_t *v)”h]”hù)�”}”(hŒ&void atomic_andnot(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjmoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjioh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|oh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjioh²hh³j{oh´M=ubhÿ)�”}”(hŒ atomic_andnot”h]”j)�”}”(hŒ atomic_andnot”h]”hŒ atomic_andnot”…”�”}”(hjŽoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠoubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjioh²hh³j{oh´M=ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjªoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¦oubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸oh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¦oubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÆoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¢oubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjáoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jãoŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj�osbŒc.atomic_andnot”†”asbuh1hhjÚoubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚoubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÚoubj)�”}”(hjph]”hŒv”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¢oubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjioh²hh³j{oh´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjeoh²hh³j{oh´M=ubah}”(h]”j`oah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j{oh´M=hjboh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed ordering”…”�”}”(hjEph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M=hjBph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjboh²hh³j{oh´M=ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj]pjHj]pjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒ÷**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **~i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_andnot() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjgph]”hŒ Parameters”…”�”}”(hjiph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjepubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MAhjapubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj†ph]”hŒint i”…”�”}”(hjˆph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj„pubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M>hj€pubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjŸph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j›ph´M>hjœpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj€pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›ph´M>hj}pubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj¿ph]”hŒ atomic_t *v”…”�”}”(hjÁph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj½pubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M?hj¹pubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjØph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÔph´M?hjÕpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¹pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÔph´M?hj}pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjapubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjúph]”hŒ Description”…”�”}”(hjüph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjøpubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MAhjapubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjqh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubhŒ to (”…”�”}”(hjqh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj*qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubhŒ & ”…”�”}”(hjqh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjvah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jYvh´Mthj@vh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with release ordering”h]”hŒ,atomic bitwise AND NOT with release ordering”…”�”}”(hj#wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mthj wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj@vh²hh³jYvh´Mtubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj;wjHj;wjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **~i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_andnot_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjEwh]”hŒ Parameters”…”�”}”(hjGwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCwubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mxhj?wubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjdwh]”hŒint i”…”�”}”(hjfwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbwubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Muhj^wubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj}wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jywh´Muhjzwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jywh´Muhj[wubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj�wh]”hŒ atomic_t *v”…”�”}”(hjŸwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj›wubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mvhj—wubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj¶wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j²wh´Mvhj³wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj—wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j²wh´Mvhj[wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj?wubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjØwh]”hŒ Description”…”�”}”(hjÚwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖwubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mxhj?wubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjîwh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjöwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîwubhŒ to (”…”�”}”(hjîwh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîwubhŒ & ”…”�”}”(hjîwh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîwubhŒ) with release ordering.”…”�”}”(hjîwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mwhj?wubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic_fetch_andnot_release() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic_fetch_andnot_release() there.”…”�”}”(hj3xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Myhj?wubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjDxh]”hŒReturn”…”�”}”(hjFxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBxubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M{hj?wubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjZxh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjbxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZxubhŒ.”…”�”}”(hjZxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M|hj?wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic_fetch_andnot_relaxed (C function)”Œc.atomic_fetch_andnot_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4int atomic_fetch_andnot_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ3int atomic_fetch_andnot_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj›xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj—xh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªxh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj—xh²hh³j©xh´M‡ubhÿ)�”}”(hŒatomic_fetch_andnot_relaxed”h]”j)�”}”(hŒatomic_fetch_andnot_relaxed”h]”hŒatomic_fetch_andnot_relaxed”…”�”}”(hj¼xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸xubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj—xh²hh³j©xh´M‡ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjØxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÔxubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæxh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔxubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjôxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÐxubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jyŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¾xsbŒc.atomic_fetch_andnot_relaxed”†”asbuh1hhjyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj=yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjyubj)�”}”(hjph]”hŒv”…”�”}”(hjJyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÐxubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj—xh²hh³j©xh´M‡ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj“xh²hh³j©xh´M‡ubah}”(h]”jŽxah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j©xh´M‡hj�xh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed ordering”…”�”}”(hjsyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‡hjpyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�xh²hh³j©xh´M‡ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‹yjHj‹yjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **~i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_andnot_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj•yh]”hŒ Parameters”…”�”}”(hj—yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“yubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‹hj�yubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj´yh]”hŒint i”…”�”}”(hj¶yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²yubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mˆhj®yubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjÍyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÉyh´MˆhjÊyubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj®yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÉyh´Mˆhj«yubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjíyh]”hŒ atomic_t *v”…”�”}”(hjïyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjëyubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‰hjçyubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jzh´M‰hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjçyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jzh´M‰hj«yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�yubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj(zh]”hŒ Description”…”�”}”(hj*zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‹hj�yubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj>zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjFzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>zubhŒ to (”…”�”}”(hj>zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjXzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>zubhŒ & ”…”�”}”(hj>zh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>zubhŒ) with relaxed ordering.”…”�”}”(hj>zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠhj�yubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic_fetch_andnot_relaxed() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic_fetch_andnot_relaxed() there.”…”�”}”(hjƒzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŒhj�yubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj”zh]”hŒReturn”…”�”}”(hj–zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽhj�yubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjªzh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj²zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªzubhŒ.”…”�”}”(hjªzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hj�yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_or (C function)”Œ c.atomic_or”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ#void atomic_or (int i, atomic_t *v)”h]”hù)�”}”(hŒ"void atomic_or(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjëzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjçzh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M™ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúzh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjçzh²hh³jùzh´M™ubhÿ)�”}”(hŒ atomic_or”h]”j)�”}”(hŒ atomic_or”h]”hŒ atomic_or”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjçzh²hh³jùzh´M™ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj({h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj${ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj${ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjD{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj${ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj {ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj_{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”ja{Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj{sbŒ c.atomic_or”†”asbuh1hhjX{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjX{ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjX{ubj)�”}”(hjph]”hŒv”…”�”}”(hjš{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjX{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj {ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjçzh²hh³jùzh´M™ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjãzh²hh³jùzh´M™ubah}”(h]”jÞzah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jùzh´M™hjàzh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with relaxed ordering”h]”hŒ'atomic bitwise OR with relaxed ordering”…”�”}”(hjÃ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M™hjÀ{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjàzh²hh³jùzh´M™ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÛ{jHjÛ{jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒò**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** | **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_or() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjß{ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj|h]”hŒint i”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mšhjþ{ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj=|h]”hŒ atomic_t *v”…”�”}”(hj?|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M›hj7|ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjV|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jR|h´M›hjS|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj7|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jR|h´M›hjû{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjß{ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjß{ubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjŽ|h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj–|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽ|ubhŒ to (”…”�”}”(hjŽ|h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¨|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽ|ubhŒ | ”…”�”}”(hjŽ|h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjº|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽ|ubhŒ) with relaxed ordering.”…”�”}”(hjŽ|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mœhjß{ubjM)�”}”(hŒ9Unsafe to use in noinstr code; use raw_atomic_or() there.”h]”hŒ9Unsafe to use in noinstr code; use raw_atomic_or() there.”…”�”}”(hjÓ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mžhjß{ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjä|h]”hŒReturn”…”�”}”(hjæ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjß{ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjú|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¡hjß{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_fetch_or (C function)”Œc.atomic_fetch_or”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(int atomic_fetch_or (int i, atomic_t *v)”h]”hù)�”}”(hŒ'int atomic_fetch_or(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj)}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj%}h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M«ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj%}h²hh³j7}h´M«ubhÿ)�”}”(hŒatomic_fetch_or”h]”j)�”}”(hŒatomic_fetch_or”h]”hŒatomic_fetch_or”…”�”}”(hjJ}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjF}ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj%}h²hh³j7}h´M«ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjf}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjb}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjb}ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj‚}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjb}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj^}ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj�}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjš}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŸ}Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjL}sbŒc.atomic_fetch_or”†”asbuh1hhj–}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj–}ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjË}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj–}ubj)�”}”(hjph]”hŒv”…”�”}”(hjØ}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj^}ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj%}h²hh³j7}h´M«ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj!}h²hh³j7}h´M«ubah}”(h]”j}ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j7}h´M«hj}h²hubj4)�”}”(hhh]”jM)�”}”(hŒ$atomic bitwise OR with full ordering”h]”hŒ$atomic bitwise OR with full ordering”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M«hjþ}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj}h²hh³j7}h´M«ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj~jHj~jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** | **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_or() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¯hj~ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjB~h]”hŒint i”…”�”}”(hjD~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj@~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¬hj<~ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj[~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jW~h´M¬hjX~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj<~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jW~h´M¬hj9~ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj{~h]”hŒ atomic_t *v”…”�”}”(hj}~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjy~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M­hju~ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj”~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�~h´M­hj‘~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhju~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�~h´M­hj9~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj~ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¯hj~ubjM)�”}”(hŒ?Atomically updates **v** to (**v** | **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÌ~h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÔ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌ~ubhŒ to (”…”�”}”(hjÌ~h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjæ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌ~ubhŒ | ”…”�”}”(hjÌ~h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjø~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌ~ubhŒ) with full ordering.”…”�”}”(hjÌ~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M®hj~ubjM)�”}”(hŒ?Unsafe to use in noinstr code; use raw_atomic_fetch_or() there.”h]”hŒ?Unsafe to use in noinstr code; use raw_atomic_fetch_or() there.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M°hj~ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj"h]”hŒReturn”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M²hj~ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³hj~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$atomic_fetch_or_acquire (C function)”Œc.atomic_fetch_or_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0int atomic_fetch_or_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ/int atomic_fetch_or_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjuh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjuh²hh³j‡h´M¾ubhÿ)�”}”(hŒatomic_fetch_or_acquire”h]”j)�”}”(hŒatomic_fetch_or_acquire”h]”hŒatomic_fetch_or_acquire”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjuh²hh³j‡h´M¾ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jïŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjœsbŒc.atomic_fetch_or_acquire”†”asbuh1hhjæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjæubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjæubj)�”}”(hjph]”hŒv”…”�”}”(hj(€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjuh²hh³j‡h´M¾ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjqh²hh³j‡h´M¾ubah}”(h]”jlah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‡h´M¾hjnh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with acquire ordering”h]”hŒ'atomic bitwise OR with acquire ordering”…”�”}”(hjQ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¾hjN€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjnh²hh³j‡h´M¾ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGji€jHji€jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** | **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_or_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjs€h]”hŒ Parameters”…”�”}”(hju€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjq€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÂhjm€ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj’€h]”hŒint i”…”�”}”(hj”€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¿hjŒ€ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj«€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjË€h]”hŒ atomic_t *v”…”�”}”(hjÍ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÉ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÀhjÅ€ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjä€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjm€ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÂhjm€ubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ to (”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ | ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ) with acquire ordering.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÁhjm€ubjM)�”}”(hŒGUnsafe to use in noinstr code; use raw_atomic_fetch_or_acquire() there.”h]”hŒGUnsafe to use in noinstr code; use raw_atomic_fetch_or_acquire() there.”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÃhjm€ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjr�h]”hŒReturn”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjp�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÅhjm€ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjˆ�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ�ubhŒ.”…”�”}”(hjˆ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÆhjm€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$atomic_fetch_or_release (C function)”Œc.atomic_fetch_or_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0int atomic_fetch_or_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ/int atomic_fetch_or_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÉ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÅ�h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅ�h²hh³j×�h´MÐubhÿ)�”}”(hŒatomic_fetch_or_release”h]”j)�”}”(hŒatomic_fetch_or_release”h]”hŒatomic_fetch_or_release”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæ�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÅ�h²hh³j×�h´MÐubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‚ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj"‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjþ�ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj=‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j?‚Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjì�sbŒc.atomic_fetch_or_release”†”asbuh1hhj6‚ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]‚h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6‚ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjk‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj6‚ubj)�”}”(hjph]”hŒv”…”�”}”(hjx‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjþ�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÅ�h²hh³j×�h´MÐubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÁ�h²hh³j×�h´MÐubah}”(h]”j¼�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j×�h´MÐhj¾�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with release ordering”h]”hŒ'atomic bitwise OR with release ordering”…”�”}”(hj¡‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐhjž‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¾�h²hh³j×�h´MÐubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¹‚jHj¹‚jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** | **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_or_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÔhj½‚ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjâ‚h]”hŒint i”…”�”}”(hjä‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjà‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑhjÜ‚ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjû‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjƒh]”hŒ atomic_t *v”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÒhjƒubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj4ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j0ƒh´MÒhj1ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j0ƒh´MÒhjÙ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj½‚ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjVƒh]”hŒ Description”…”�”}”(hjXƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÔhj½‚ubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjlƒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjtƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlƒubhŒ to (”…”�”}”(hjlƒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj†ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlƒubhŒ | ”…”�”}”(hjlƒh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj˜ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlƒubhŒ) with release ordering.”…”�”}”(hjlƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÓhj½‚ubjM)�”}”(hŒGUnsafe to use in noinstr code; use raw_atomic_fetch_or_release() there.”h]”hŒGUnsafe to use in noinstr code; use raw_atomic_fetch_or_release() there.”…”�”}”(hj±ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÕhj½‚ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjƒh]”hŒReturn”…”�”}”(hjăh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M×hj½‚ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj؃h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjàƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj؃ubhŒ.”…”�”}”(hj؃h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MØhj½‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$atomic_fetch_or_relaxed (C function)”Œc.atomic_fetch_or_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0int atomic_fetch_or_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ/int atomic_fetch_or_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj„h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„h²hh³j'„h´Mãubhÿ)�”}”(hŒatomic_fetch_or_relaxed”h]”j)�”}”(hŒatomic_fetch_or_relaxed”h]”hŒatomic_fetch_or_relaxed”…”�”}”(hj:„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6„ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj„h²hh³j'„h´Mãubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjV„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjR„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjR„ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjr„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjR„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjN„ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj�„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�„Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj<„sbŒc.atomic_fetch_or_relaxed”†”asbuh1hhj†„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†„ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj»„h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj†„ubj)�”}”(hjph]”hŒv”…”�”}”(hjÈ„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjN„ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj„h²hh³j'„h´Mãubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj„h²hh³j'„h´Mãubah}”(h]”j „ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j'„h´Mãhj„h²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with relaxed ordering”h]”hŒ'atomic bitwise OR with relaxed ordering”…”�”}”(hjñ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mãhjî„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj„h²hh³j'„h´Mãubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj …jHj …jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** | **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_or_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mçhj …ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj2…h]”hŒint i”…”�”}”(hj4…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mähj,…ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjK…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jG…h´MähjH…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jG…h´Mähj)…ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjk…h]”hŒ atomic_t *v”…”�”}”(hjm…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhji…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Måhje…ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj„…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€…h´Måhj�…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhje…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€…h´Måhj)…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj …ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mçhj …ubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¼…h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÄ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼…ubhŒ to (”…”�”}”(hj¼…h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÖ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼…ubhŒ | ”…”�”}”(hj¼…h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjè…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼…ubhŒ) with relaxed ordering.”…”�”}”(hj¼…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mæhj …ubjM)�”}”(hŒGUnsafe to use in noinstr code; use raw_atomic_fetch_or_relaxed() there.”h]”hŒGUnsafe to use in noinstr code; use raw_atomic_fetch_or_relaxed() there.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mèhj …ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj†h]”hŒReturn”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mêhj …ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj(†h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj0†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(†ubhŒ.”…”�”}”(hj(†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mëhj …ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_xor (C function)”Œ c.atomic_xor”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ$void atomic_xor (int i, atomic_t *v)”h]”hù)�”}”(hŒ#void atomic_xor(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hji†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhje†h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MõubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx†h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhje†h²hh³jw†h´Mõubhÿ)�”}”(hŒ atomic_xor”h]”j)�”}”(hŒ atomic_xor”h]”hŒ atomic_xor”…”�”}”(hjІh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj††ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhje†h²hh³jw†h´Mõubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¦†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¢†ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´†h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¢†ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjž†ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj݆h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j߆Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŒ†sbŒ c.atomic_xor”†”asbuh1hhjÖ†ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý†h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖ†ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÖ†ubj)�”}”(hjph]”hŒv”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjž†ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hje†h²hh³jw†h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hja†h²hh³jw†h´Mõubah}”(h]”j\†ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jw†h´Mõhj^†h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(hjA‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mõhj>‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj^†h²hh³jw†h´Mõubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjY‡jHjY‡jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒó**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** ^ **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_xor() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjc‡h]”hŒ Parameters”…”�”}”(hje‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mùhj]‡ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj‚‡h]”hŒint i”…”�”}”(hj„‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj€‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Möhj|‡ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj›‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j—‡h´Möhj˜‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj|‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j—‡h´Möhjy‡ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj»‡h]”hŒ atomic_t *v”…”�”}”(hj½‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¹‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M÷hjµ‡ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÔ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jЇh´M÷hjчubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjµ‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jЇh´M÷hjy‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj]‡ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mùhj]‡ubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj ˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ˆubhŒ to (”…”�”}”(hj ˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj&ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ˆubhŒ ^ ”…”�”}”(hj ˆh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj8ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ˆubhŒ) with relaxed ordering.”…”�”}”(hj ˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Møhj]‡ubjM)�”}”(hŒ:Unsafe to use in noinstr code; use raw_atomic_xor() there.”h]”hŒ:Unsafe to use in noinstr code; use raw_atomic_xor() there.”…”�”}”(hjQˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Múhj]‡ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjbˆh]”hŒReturn”…”�”}”(hjdˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mühj]‡ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjxˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mýhj]‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_fetch_xor (C function)”Œc.atomic_fetch_xor”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ)int atomic_fetch_xor (int i, atomic_t *v)”h]”hù)�”}”(hŒ(int atomic_fetch_xor(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj§ˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj£ˆh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶ˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj£ˆh²hh³jµˆh´Mubhÿ)�”}”(hŒatomic_fetch_xor”h]”j)�”}”(hŒatomic_fetch_xor”h]”hŒatomic_fetch_xor”…”�”}”(hjȈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjĈubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj£ˆh²hh³jµˆh´Mubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjäˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjàˆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàˆubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj܈ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‰Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjʈsbŒc.atomic_fetch_xor”†”asbuh1hhj‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjI‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‰ubj)�”}”(hjph]”hŒv”…”�”}”(hjV‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj܈ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj£ˆh²hh³jµˆh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŸˆh²hh³jµˆh´Mubah}”(h]”jšˆah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jµˆh´Mhjœˆh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic bitwise XOR with full ordering”h]”hŒ%atomic bitwise XOR with full ordering”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj|‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjœˆh²hh³jµˆh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj—‰jHj—‰jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** ^ **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_xor() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj›‰ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjÀ‰h]”hŒint i”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¾‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjº‰ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjÙ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÕ‰h´MhjÖ‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjº‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÕ‰h´Mhj·‰ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjù‰h]”hŒ atomic_t *v”…”�”}”(hjû‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj÷‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjó‰ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj›‰ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj4Šh]”hŒ Description”…”�”}”(hj6Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj›‰ubjM)�”}”(hŒ?Atomically updates **v** to (**v** ^ **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjJŠh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjRŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJŠubhŒ to (”…”�”}”(hjJŠh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjdŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJŠubhŒ ^ ”…”�”}”(hjJŠh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjvŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJŠubhŒ) with full ordering.”…”�”}”(hjJŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj›‰ubjM)�”}”(hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_xor() there.”h]”hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_xor() there.”…”�”}”(hj�Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj›‰ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj Šh]”hŒReturn”…”�”}”(hj¢Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj›‰ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¶Šh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¾Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶ŠubhŒ.”…”�”}”(hj¶Šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj›‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_xor_acquire (C function)”Œc.atomic_fetch_xor_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_xor_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_xor_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj÷Šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjóŠh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjóŠh²hh³j‹h´Mubhÿ)�”}”(hŒatomic_fetch_xor_acquire”h]”j)�”}”(hŒatomic_fetch_xor_acquire”h]”hŒatomic_fetch_xor_acquire”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjóŠh²hh³j‹h´Mubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj4‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj0‹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB‹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0‹ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjP‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj,‹ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjk‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jm‹Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‹sbŒc.atomic_fetch_xor_acquire”†”asbuh1hhjd‹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹‹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjd‹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj™‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjd‹ubj)�”}”(hjph]”hŒv”…”�”}”(hj¦‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj,‹ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjóŠh²hh³j‹h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjïŠh²hh³j‹h´Mubah}”(h]”jêŠah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‹h´MhjìŠh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with acquire ordering”h]”hŒ(atomic bitwise XOR with acquire ordering”…”�”}”(hjÏ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÌ‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjìŠh²hh³j‹h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjç‹jHjç‹jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** ^ **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_xor_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjë‹ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjŒh]”hŒint i”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj ŒubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj)Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j%Œh´Mhj&Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j%Œh´MhjŒubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjIŒh]”hŒ atomic_t *v”…”�”}”(hjKŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjGŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjCŒubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjbŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j^Œh´Mhj_Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjCŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j^Œh´MhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjë‹ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjë‹ubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjšŒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¢Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšŒubhŒ to (”…”�”}”(hjšŒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj´Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšŒubhŒ ^ ”…”�”}”(hjšŒh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÆŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšŒubhŒ) with acquire ordering.”…”�”}”(hjšŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjë‹ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_xor_acquire() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_xor_acquire() there.”…”�”}”(hjߌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjë‹ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjðŒh]”hŒReturn”…”�”}”(hjòŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M!hjë‹ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M"hjë‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_xor_release (C function)”Œc.atomic_fetch_xor_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_xor_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_xor_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjG�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjC�h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjC�h²hh³jU�h´M,ubhÿ)�”}”(hŒatomic_fetch_xor_release”h]”j)�”}”(hŒatomic_fetch_xor_release”h]”hŒatomic_fetch_xor_release”…”�”}”(hjh�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjC�h²hh³jU�h´M,ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj„�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj€�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€�ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|�ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj»�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j½�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjj�sbŒc.atomic_fetch_xor_release”†”asbuh1hhj´�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj´�ubj)�”}”(hjph]”hŒv”…”�”}”(hjö�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjC�h²hh³jU�h´M,ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj?�h²hh³jU�h´M,ubah}”(h]”j:�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jU�h´M,hj<�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with release ordering”h]”hŒ(atomic bitwise XOR with release ordering”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M,hjŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj<�h²hh³jU�h´M,ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj7ŽjHj7ŽjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** ^ **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_xor_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjAŽh]”hŒ Parameters”…”�”}”(hjCŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M0hj;Žubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj`Žh]”hŒint i”…”�”}”(hjbŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj^Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M-hjZŽubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjyŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³juŽh´M-hjvŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjZŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³juŽh´M-hjWŽubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj™Žh]”hŒ atomic_t *v”…”�”}”(hj›Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj—Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M.hj“ŽubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj²Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j®Žh´M.hj¯Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj“Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j®Žh´M.hjWŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj;ŽubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M0hj;ŽubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjêŽh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjòŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjêŽubhŒ to (”…”�”}”(hjêŽh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjêŽubhŒ ^ ”…”�”}”(hjêŽh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjêŽubhŒ) with release ordering.”…”�”}”(hjêŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/hj;ŽubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_xor_release() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_xor_release() there.”…”�”}”(hj/�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1hj;ŽubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj@�h]”hŒReturn”…”�”}”(hjB�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M3hj;ŽubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjV�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV�ubhŒ.”…”�”}”(hjV�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M4hj;Žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_xor_relaxed (C function)”Œc.atomic_fetch_xor_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_xor_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_xor_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj—�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj“�h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“�h²hh³j¥�h´M?ubhÿ)�”}”(hŒatomic_fetch_xor_relaxed”h]”j)�”}”(hŒatomic_fetch_xor_relaxed”h]”hŒatomic_fetch_xor_relaxed”…”�”}”(hj¸�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj“�h²hh³j¥�h´M?ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÐ�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÐ�ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjð�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÌ�ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j �Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjº�sbŒc.atomic_fetch_xor_relaxed”†”asbuh1hhj�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj9�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�ubj)�”}”(hjph]”hŒv”…”�”}”(hjF�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÌ�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj“�h²hh³j¥�h´M?ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj��h²hh³j¥�h´M?ubah}”(h]”jŠ�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¥�h´M?hjŒ�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(hjo�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M?hjl�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŒ�h²hh³j¥�h´M?ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‡�jHj‡�jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** ^ **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_fetch_xor_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MChj‹�ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj°�h]”hŒint i”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj®�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M@hjª�ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjÉ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjé�h]”hŒ atomic_t *v”…”�”}”(hjë�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjç�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MAhjã�ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jþ�h´MAhjÿ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjã�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jþ�h´MAhj§�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‹�ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MChj‹�ubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj:‘h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjB‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:‘ubhŒ to (”…”�”}”(hj:‘h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjT‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:‘ubhŒ ^ ”…”�”}”(hj:‘h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjf‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:‘ubhŒ) with relaxed ordering.”…”�”}”(hj:‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MBhj‹�ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_xor_relaxed() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_xor_relaxed() there.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MDhj‹�ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�‘h]”hŒReturn”…”�”}”(hj’‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MFhj‹�ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¦‘h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj®‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦‘ubhŒ.”…”�”}”(hj¦‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MGhj‹�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_xchg (C function)”Œ c.atomic_xchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&int atomic_xchg (atomic_t *v, int new)”h]”hù)�”}”(hŒ%int atomic_xchg(atomic_t *v, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjç‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjã‘h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MQubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjã‘h²hh³jõ‘h´MQubhÿ)�”}”(hŒ atomic_xchg”h]”j)�”}”(hŒ atomic_xchg”h]”hŒ atomic_xchg”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjã‘h²hh³jõ‘h´MQubj4)�”}”(hŒ(atomic_t *v, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj'’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j)’Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj ’sbŒ c.atomic_xchg”†”asbuh1hhj ’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG’h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ’ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjU’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ’ubj)�”}”(hjph]”hŒv”…”�”}”(hjb’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj’ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjz’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjv’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ’h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjv’ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj–’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjv’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj’ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjã‘h²hh³jõ‘h´MQubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjß‘h²hh³jõ‘h´MQubah}”(h]”jÚ‘ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jõ‘h´MQhjÜ‘h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic exchange with full ordering”h]”hŒ"atomic exchange with full ordering”…”�”}”(hjÀ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MQhj½’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÜ‘h²hh³jõ‘h´MQubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjØ’jHjØ’jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_t *v`` pointer to atomic_t ``int new`` int value to assign **Description** Atomically updates **v** to **new** with full ordering. Unsafe to use in noinstr code; use raw_atomic_xchg() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MUhjÜ’ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj“h]”hŒ atomic_t *v”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÿ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MRhjû’ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j“h´MRhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjû’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j“h´MRhjø’ubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hj:“h]”hŒint new”…”�”}”(hj<“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MShj4“ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjS“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jO“h´MShjP“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj4“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jO“h´MShjø’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÜ’ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hju“h]”hŒ Description”…”�”}”(hjw“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjs“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MUhjÜ’ubjM)�”}”(hŒ7Atomically updates **v** to **new** with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj‹“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj““h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹“ubhŒ to ”…”�”}”(hj‹“h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj¥“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹“ubhŒ with full ordering.”…”�”}”(hj‹“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MThjÜ’ubjM)�”}”(hŒ;Unsafe to use in noinstr code; use raw_atomic_xchg() there.”h]”hŒ;Unsafe to use in noinstr code; use raw_atomic_xchg() there.”…”�”}”(hj¾“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MVhjÜ’ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÏ“h]”hŒReturn”…”�”}”(hjÑ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MXhjÜ’ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjå“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjí“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjå“ubhŒ.”…”�”}”(hjå“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MYhjÜ’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_xchg_acquire (C function)”Œc.atomic_xchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int atomic_xchg_acquire (atomic_t *v, int new)”h]”hù)�”}”(hŒ-int atomic_xchg_acquire(atomic_t *v, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj&”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj"”h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"”h²hh³j4”h´Mdubhÿ)�”}”(hŒatomic_xchg_acquire”h]”j)�”}”(hŒatomic_xchg_acquire”h]”hŒatomic_xchg_acquire”…”�”}”(hjG”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjC”ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj"”h²hh³j4”h´Mdubj4)�”}”(hŒ(atomic_t *v, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjf”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjc”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jh”Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjI”sbŒc.atomic_xchg_acquire”†”asbuh1hhj_”ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj_”ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj””h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj_”ubj)�”}”(hjph]”hŒv”…”�”}”(hj¡”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj[”ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¹”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµ”ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµ”ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjÕ”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµ”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj[”ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj"”h²hh³j4”h´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj”h²hh³j4”h´Mdubah}”(h]”j”ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j4”h´Mdhj”h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with acquire ordering”h]”hŒ%atomic exchange with acquire ordering”…”�”}”(hjÿ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mdhjü”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj”h²hh³j4”h´Mdubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj•jHj•jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_t *v`` pointer to atomic_t ``int new`` int value to assign **Description** Atomically updates **v** to **new** with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_xchg_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhhj•ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj@•h]”hŒ atomic_t *v”…”�”}”(hjB•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj>•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mehj:•ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjY•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jU•h´MehjV•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jU•h´Mehj7•ubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjy•h]”hŒint new”…”�”}”(hj{•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjw•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mfhjs•ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj’•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŽ•h´Mfhj�•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjs•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŽ•h´Mfhj7•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj•ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhhj•ubjM)�”}”(hŒ:Atomically updates **v** to **new** with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÊ•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÒ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊ•ubhŒ to ”…”�”}”(hjÊ•h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjä•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊ•ubhŒ with acquire ordering.”…”�”}”(hjÊ•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mghj•ubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_xchg_acquire() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_xchg_acquire() there.”…”�”}”(hjý•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mihj•ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj–h]”hŒReturn”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj –ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mkhj•ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj$–h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj,–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$–ubhŒ.”…”�”}”(hj$–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mlhj•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_xchg_release (C function)”Œc.atomic_xchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int atomic_xchg_release (atomic_t *v, int new)”h]”hù)�”}”(hŒ-int atomic_xchg_release(atomic_t *v, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hje–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhja–h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhja–h²hh³js–h´Mvubhÿ)�”}”(hŒatomic_xchg_release”h]”j)�”}”(hŒatomic_xchg_release”h]”hŒatomic_xchg_release”…”�”}”(hj†–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhja–h²hh³js–h´Mvubj4)�”}”(hŒ(atomic_t *v, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj¥–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j§–Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjˆ–sbŒc.atomic_xchg_release”†”asbuh1hhjž–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjž–ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÓ–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjž–ubj)�”}”(hjph]”hŒv”…”�”}”(hjà–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjž–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjš–ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjø–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjô–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjô–ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjš–ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hja–h²hh³js–h´Mvubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj]–h²hh³js–h´Mvubah}”(h]”jX–ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³js–h´MvhjZ–h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with release ordering”h]”hŒ%atomic exchange with release ordering”…”�”}”(hj>—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mvhj;—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjZ–h²hh³js–h´Mvubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjV—jHjV—jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_t *v`` pointer to atomic_t ``int new`` int value to assign **Description** Atomically updates **v** to **new** with release ordering. Unsafe to use in noinstr code; use raw_atomic_xchg_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj`—h]”hŒ Parameters”…”�”}”(hjb—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MzhjZ—ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj—h]”hŒ atomic_t *v”…”�”}”(hj�—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj}—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mwhjy—ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj˜—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j”—h´Mwhj•—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjy—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”—h´Mwhjv—ubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hj¸—h]”hŒint new”…”�”}”(hjº—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¶—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mxhj²—ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjÑ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÍ—h´MxhjΗubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj²—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÍ—h´Mxhjv—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjZ—ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MzhjZ—ubjM)�”}”(hŒ:Atomically updates **v** to **new** with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj ˜h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ˜ubhŒ to ”…”�”}”(hj ˜h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj#˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ˜ubhŒ with release ordering.”…”�”}”(hj ˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MyhjZ—ubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_xchg_release() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_xchg_release() there.”…”�”}”(hj<˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M{hjZ—ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjM˜h]”hŒReturn”…”�”}”(hjO˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M}hjZ—ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjc˜h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjk˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc˜ubhŒ.”…”�”}”(hjc˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M~hjZ—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_xchg_relaxed (C function)”Œc.atomic_xchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int atomic_xchg_relaxed (atomic_t *v, int new)”h]”hù)�”}”(hŒ-int atomic_xchg_relaxed(atomic_t *v, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¤˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj ˜h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³˜h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ˜h²hh³j²˜h´M‰ubhÿ)�”}”(hŒatomic_xchg_relaxed”h]”j)�”}”(hŒatomic_xchg_relaxed”h]”hŒatomic_xchg_relaxed”…”�”}”(hjŘh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁ˜ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj ˜h²hh³j²˜h´M‰ubj4)�”}”(hŒ(atomic_t *v, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjä˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjá˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j昌modname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjǘsbŒc.atomic_xchg_relaxed”†”asbuh1hhjݘubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjݘubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjݘubj)�”}”(hjph]”hŒv”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjݘubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙ˜ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj7™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj3™ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3™ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjS™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙ˜ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj ˜h²hh³j²˜h´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjœ˜h²hh³j²˜h´M‰ubah}”(h]”j—˜ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j²˜h´M‰hj™˜h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with relaxed ordering”h]”hŒ%atomic exchange with relaxed ordering”…”�”}”(hj}™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‰hjz™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj™˜h²hh³j²˜h´M‰ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj•™jHj•™jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_t *v`` pointer to atomic_t ``int new`` int value to assign **Description** Atomically updates **v** to **new** with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_xchg_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hj™™ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj¾™h]”hŒ atomic_t *v”…”�”}”(hjÀ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¼™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠhj¸™ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj×™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hj÷™h]”hŒint new”…”�”}”(hjù™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjõ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‹hjñ™ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj™™ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj2šh]”hŒ Description”…”�”}”(hj4šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0šubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hj™™ubjM)�”}”(hŒ:Atomically updates **v** to **new** with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjHšh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjPšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHšubhŒ to ”…”�”}”(hjHšh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjbšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHšubhŒ with relaxed ordering.”…”�”}”(hjHšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŒhj™™ubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_xchg_relaxed() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_xchg_relaxed() there.”…”�”}”(hj{šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽhj™™ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjŒšh]”hŒReturn”…”�”}”(hjŽšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŠšubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hj™™ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¢šh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjªšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢šubhŒ.”…”�”}”(hj¢šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‘hj™™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_cmpxchg (C function)”Œc.atomic_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2int atomic_cmpxchg (atomic_t *v, int old, int new)”h]”hù)�”}”(hŒ1int atomic_cmpxchg(atomic_t *v, int old, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjãšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjßšh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjßšh²hh³jñšh´M›ubhÿ)�”}”(hŒatomic_cmpxchg”h]”j)�”}”(hŒatomic_cmpxchg”h]”hŒatomic_cmpxchg”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjßšh²hh³jñšh´M›ubj4)�”}”(hŒ(atomic_t *v, int old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj#›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j%›Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj›sbŒc.atomic_cmpxchg”†”asbuh1hhj›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjQ›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj›ubj)�”}”(hjph]”hŒv”…”�”}”(hj^›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj›ubj:)�”}”(hŒint old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjv›h²hh³Nh´Nubah}”(h]”h ]”jah"]”•Ch$]”h&]”uh1jûhjr›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjr›ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj’›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj›ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj«›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj§›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§›ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjÇ›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj›ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjßšh²hh³jñšh´M›ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÛšh²hh³jñšh´M›ubah}”(h]”jÖšah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jñšh´M›hjØšh²hubj4)�”}”(hhh]”jM)�”}”(hŒ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hjñ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M›hjî›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjØšh²hh³jñšh´M›ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj œjHj œjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX�**Parameters** ``atomic_t *v`` pointer to atomic_t ``int old`` int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_cmpxchg() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸhj œubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj2œh]”hŒ atomic_t *v”…”�”}”(hj4œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0œubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mœhj,œubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjKœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jGœh´MœhjHœubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jGœh´Mœhj)œubj©)�”}”(hŒ&``int old`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int old``”h]”jS)�”}”(hjkœh]”hŒint old”…”�”}”(hjmœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjiœubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjeœubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hj„œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€œh´M�hj�œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjeœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€œh´M�hj)œubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hj¤œh]”hŒint new”…”�”}”(hj¦œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¢œubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MžhjžœubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj½œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj œubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj œubjM)�”}”(hŒ‘If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjõœh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjýœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõœubhŒ == ”…”�”}”(hjõœh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõœubhŒ), atomically updates ”…”�”}”(hjõœh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj!�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõœubhŒ to ”…”�”}”(hjõœh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõœubhŒ with full ordering. Otherwise, ”…”�”}”(hjõœh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjE�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõœubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjõœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸhj œubjM)�”}”(hŒ>Unsafe to use in noinstr code; use raw_atomic_cmpxchg() there.”h]”hŒ>Unsafe to use in noinstr code; use raw_atomic_cmpxchg() there.”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¢hj œubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjo�h]”hŒReturn”…”�”}”(hjq�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¤hj œubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj…�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj…�ubhŒ.”…”�”}”(hj…�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¥hj œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#atomic_cmpxchg_acquire (C function)”Œc.atomic_cmpxchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:int atomic_cmpxchg_acquire (atomic_t *v, int old, int new)”h]”hù)�”}”(hŒ9int atomic_cmpxchg_acquire(atomic_t *v, int old, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÆ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÂ�h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÂ�h²hh³jÔ�h´M°ubhÿ)�”}”(hŒatomic_cmpxchg_acquire”h]”j)�”}”(hŒatomic_cmpxchg_acquire”h]”hŒatomic_cmpxchg_acquire”…”�”}”(hjç�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjã�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÂ�h²hh³jÔ�h´M°ubj4)�”}”(hŒ(atomic_t *v, int old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jžŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjé�sbŒc.atomic_cmpxchg_acquire”†”asbuh1hhjÿ�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿ�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj4žh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÿ�ubj)�”}”(hjph]”hŒv”…”�”}”(hjAžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjû�ubj:)�”}”(hŒint old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjYžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjUžubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgžh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjUžubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjužh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjû�ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjŽžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŠžubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœžh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠžubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjªžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjû�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÂ�h²hh³jÔ�h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¾�h²hh³jÔ�h´M°ubah}”(h]”j¹�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÔ�h´M°hj»�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(hjÔžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M°hjÑžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj»�h²hh³jÔ�h´M°ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjìžjHjìžjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXš**Parameters** ``atomic_t *v`` pointer to atomic_t ``int old`` int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_cmpxchg_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´hjðžubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjŸh]”hŒ atomic_t *v”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M±hjŸubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj.Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``int old`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int old``”h]”jS)�”}”(hjNŸh]”hŒint old”…”�”}”(hjPŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjLŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M²hjHŸubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hjgŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jcŸh´M²hjdŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjHŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jcŸh´M²hj Ÿubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hj‡Ÿh]”hŒint new”…”�”}”(hj‰Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj…Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³hj�ŸubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjðžubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MµhjðžubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjØŸh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjàŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØŸubhŒ == ”…”�”}”(hjØŸh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjòŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØŸubhŒ), atomically updates ”…”�”}”(hjØŸh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØŸubhŒ to ”…”�”}”(hjØŸh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØŸubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hjØŸh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØŸubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjØŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´hjðžubjM)�”}”(hŒFUnsafe to use in noinstr code; use raw_atomic_cmpxchg_acquire() there.”h]”hŒFUnsafe to use in noinstr code; use raw_atomic_cmpxchg_acquire() there.”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M·hjðžubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjR h]”hŒReturn”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¹hjðžubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjh h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh ubhŒ.”…”�”}”(hjh h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mºhjðžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#atomic_cmpxchg_release (C function)”Œc.atomic_cmpxchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:int atomic_cmpxchg_release (atomic_t *v, int old, int new)”h]”hù)�”}”(hŒ9int atomic_cmpxchg_release(atomic_t *v, int old, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¥ h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¥ h²hh³j· h´MÄubhÿ)�”}”(hŒatomic_cmpxchg_release”h]”j)�”}”(hŒatomic_cmpxchg_release”h]”hŒatomic_cmpxchg_release”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆ ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¥ h²hh³j· h´MÄubj4)�”}”(hŒ(atomic_t *v, int old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jë Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÌ sbŒc.atomic_cmpxchg_release”†”asbuh1hhjâ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâ ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjâ ubj)�”}”(hjph]”hŒv”…”�”}”(hj$¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÞ ubj:)�”}”(hŒint old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj<¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj8¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj8¡ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjX¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÞ ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjq¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjm¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjm¡ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj�¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjm¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÞ ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¥ h²hh³j· h´MÄubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¡ h²hh³j· h´MÄubah}”(h]”jœ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j· h´MÄhjž h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release ordering”…”�”}”(hj·¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÄhj´¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjž h²hh³j· h´MÄubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÏ¡jHjÏ¡jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXš**Parameters** ``atomic_t *v`` pointer to atomic_t ``int old`` int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_cmpxchg_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÈhjÓ¡ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjø¡h]”hŒ atomic_t *v”…”�”}”(hjú¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjö¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÅhjò¡ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``int old`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int old``”h]”jS)�”}”(hj1¢h]”hŒint old”…”�”}”(hj3¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj/¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÆhj+¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hjJ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jF¢h´MÆhjG¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj+¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jF¢h´MÆhjï¡ubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjj¢h]”hŒint new”…”�”}”(hjl¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjh¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÇhjd¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjƒ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¢h´MÇhj€¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjd¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¢h´MÇhjï¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÓ¡ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÉhjÓ¡ubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj»¢h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»¢ubhŒ == ”…”�”}”(hj»¢h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjÕ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»¢ubhŒ), atomically updates ”…”�”}”(hj»¢h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjç¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»¢ubhŒ to ”…”�”}”(hj»¢h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjù¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»¢ubhŒ# with release ordering. Otherwise, ”…”�”}”(hj»¢h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj £h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»¢ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj»¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÈhjÓ¡ubjM)�”}”(hŒFUnsafe to use in noinstr code; use raw_atomic_cmpxchg_release() there.”h]”hŒFUnsafe to use in noinstr code; use raw_atomic_cmpxchg_release() there.”…”�”}”(hj$£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MËhjÓ¡ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj5£h]”hŒReturn”…”�”}”(hj7£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÍhjÓ¡ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjK£h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjS£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK£ubhŒ.”…”�”}”(hjK£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÎhjÓ¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#atomic_cmpxchg_relaxed (C function)”Œc.atomic_cmpxchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:int atomic_cmpxchg_relaxed (atomic_t *v, int old, int new)”h]”hù)�”}”(hŒ9int atomic_cmpxchg_relaxed(atomic_t *v, int old, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjŒ£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjˆ£h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÙubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjˆ£h²hh³jš£h´MÙubhÿ)�”}”(hŒatomic_cmpxchg_relaxed”h]”j)�”}”(hŒatomic_cmpxchg_relaxed”h]”hŒatomic_cmpxchg_relaxed”…”�”}”(hj­£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©£ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjˆ£h²hh³jš£h´MÙubj4)�”}”(hŒ(atomic_t *v, int old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÌ£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉ£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jΣŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¯£sbŒc.atomic_cmpxchg_relaxed”†”asbuh1hhjÅ£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅ£ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjú£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÅ£ubj)�”}”(hjph]”hŒv”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅ£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁ£ubj:)�”}”(hŒint old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj;¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁ£ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjT¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjP¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjP¤ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjp¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁ£ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjˆ£h²hh³jš£h´MÙubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj„£h²hh³jš£h´MÙubah}”(h]”j£ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jš£h´MÙhj�£h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with relaxed ordering”h]”hŒ1atomic compare and exchange with relaxed ordering”…”�”}”(hjš¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÙhj—¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�£h²hh³jš£h´MÙubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj²¤jHj²¤jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXš**Parameters** ``atomic_t *v`` pointer to atomic_t ``int old`` int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_cmpxchg_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝhj¶¤ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÛ¤h]”hŒ atomic_t *v”…”�”}”(hjݤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÙ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÚhjÕ¤ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjô¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``int old`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int old``”h]”jS)�”}”(hj¥h]”hŒint old”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÛhj¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hj-¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjM¥h]”hŒint new”…”�”}”(hjO¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjK¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÜhjG¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjf¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jb¥h´MÜhjc¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjG¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jb¥h´MÜhjÒ¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¶¤ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞhj¶¤ubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjž¥h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¦¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjž¥ubhŒ == ”…”�”}”(hjž¥h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj¸¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjž¥ubhŒ), atomically updates ”…”�”}”(hjž¥h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÊ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjž¥ubhŒ to ”…”�”}”(hjž¥h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjÜ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjž¥ubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hjž¥h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjî¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjž¥ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjž¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝhj¶¤ubjM)�”}”(hŒFUnsafe to use in noinstr code; use raw_atomic_cmpxchg_relaxed() there.”h]”hŒFUnsafe to use in noinstr code; use raw_atomic_cmpxchg_relaxed() there.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Màhj¶¤ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¦h]”hŒReturn”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mâhj¶¤ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj.¦h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj6¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.¦ubhŒ.”…”�”}”(hj.¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mãhj¶¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_try_cmpxchg (C function)”Œc.atomic_try_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8bool atomic_try_cmpxchg (atomic_t *v, int *old, int new)”h]”hù)�”}”(hŒ7bool atomic_try_cmpxchg(atomic_t *v, int *old, int new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjo¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjk¦h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjk¦h²hh³j|¦h´Míubhÿ)�”}”(hŒatomic_try_cmpxchg”h]”j)�”}”(hŒatomic_try_cmpxchg”h]”hŒatomic_try_cmpxchg”…”�”}”(hj�¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹¦ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjk¦h²hh³j|¦h´Míubj4)�”}”(hŒ (atomic_t *v, int *old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj®¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j°¦Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‘¦sbŒc.atomic_try_cmpxchg”†”asbuh1hhj§¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΦh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§¦ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjܦh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj§¦ubj)�”}”(hjph]”hŒv”…”�”}”(hjé¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj£¦ubj:)�”}”(hŒint *old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjý¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjý¦ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjý¦ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj*§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjý¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj£¦ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjC§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj?§ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?§ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj_§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj£¦ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjk¦h²hh³j|¦h´Míubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjg¦h²hh³j|¦h´Míubah}”(h]”jb¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j|¦h´Míhjd¦h²hubj4)�”}”(hhh]”jM)�”}”(hŒ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hj‰§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Míhj†§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjd¦h²hh³j|¦h´Míubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¡§jHj¡§jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXí**Parameters** ``atomic_t *v`` pointer to atomic_t ``int *old`` pointer to int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_try_cmpxchg() there. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mñhj¥§ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjʧh]”hŒ atomic_t *v”…”�”}”(hj̧h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjȧubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MîhjħubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjã§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ2``int *old`` pointer to int value to compare with ”h]”(j¯)�”}”(hŒ ``int *old``”h]”jS)�”}”(hj¨h]”hŒint *old”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mïhjý§ubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to int value to compare with”h]”hŒ$pointer to int value to compare with”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hj<¨h]”hŒint new”…”�”}”(hj>¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mðhj6¨ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjU¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ¨h´MðhjR¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQ¨h´MðhjÁ§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¥§ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjw¨h]”hŒ Description”…”�”}”(hjy¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hju¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mòhj¥§ubjM)�”}”(hŒÄIf (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj�¨h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj•¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�¨ubhŒ == ”…”�”}”(hj�¨h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj§¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�¨ubhŒ), atomically updates ”…”�”}”(hj�¨h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¹¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�¨ubhŒ to ”…”�”}”(hj�¨h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj˨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�¨ubhŒ with full ordering. Otherwise, ”…”�”}”(hj�¨h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjݨh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�¨ubhŒ is not modified, ”…”�”}”(hj�¨h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjï¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�¨ubhŒ$ is updated to the current value of ”…”�”}”(hj�¨h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�¨ubhŒ#, and relaxed ordering is provided.”…”�”}”(hj�¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mñhj¥§ubjM)�”}”(hŒBUnsafe to use in noinstr code; use raw_atomic_try_cmpxchg() there.”h]”hŒBUnsafe to use in noinstr code; use raw_atomic_try_cmpxchg() there.”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mõhj¥§ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj+©h]”hŒReturn”…”�”}”(hj-©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M÷hj¥§ubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjE©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjA©ubhŒ if the exchange occurred, ”…”�”}”(hjA©h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjW©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjA©ubhŒ otherwise.”…”�”}”(hjA©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Møhj¥§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic_try_cmpxchg_acquire (C function)”Œc.atomic_try_cmpxchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@bool atomic_try_cmpxchg_acquire (atomic_t *v, int *old, int new)”h]”hù)�”}”(hŒ?bool atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj�©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŒ©h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŒ©h²hh³j�©h´Mubhÿ)�”}”(hŒatomic_try_cmpxchg_acquire”h]”j)�”}”(hŒatomic_try_cmpxchg_acquire”h]”hŒatomic_try_cmpxchg_acquire”…”�”}”(hj°©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬©ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŒ©h²hh³j�©h´Mubj4)�”}”(hŒ (atomic_t *v, int *old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÏ©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌ©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÑ©Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj²©sbŒc.atomic_try_cmpxchg_acquire”†”asbuh1hhjÈ©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÈ©ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjý©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÈ©ubj)�”}”(hjph]”hŒv”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÄ©ubj:)�”}”(hŒint *old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj"ªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0ªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjªubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj>ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjªubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjKªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÄ©ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjdªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj`ªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`ªubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj€ªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÄ©ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŒ©h²hh³j�©h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjˆ©h²hh³j�©h´Mubah}”(h]”jƒ©ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�©h´Mhj…©h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(hjªªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj§ªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj…©h²hh³j�©h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjªjHjªjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXø**Parameters** ``atomic_t *v`` pointer to atomic_t ``int *old`` pointer to int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_try_cmpxchg_acquire() there. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjƪubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjëªh]”hŒ atomic_t *v”…”�”}”(hjíªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjéªubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjåªubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j«h´Mhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjåªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j«h´Mhjâªubj©)�”}”(hŒ2``int *old`` pointer to int value to compare with ”h]”(j¯)�”}”(hŒ ``int *old``”h]”jS)�”}”(hj$«h]”hŒint *old”…”�”}”(hj&«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj"«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj«ubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to int value to compare with”h]”hŒ$pointer to int value to compare with”…”�”}”(hj=«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j9«h´Mhj:«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j9«h´Mhjâªubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hj]«h]”hŒint new”…”�”}”(hj_«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj[«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjW«ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjv«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jr«h´Mhjs«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjW«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jr«h´Mhjâªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjƪubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjƪubjM)�”}”(hŒÇIf (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj®«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¶«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®«ubhŒ == ”…”�”}”(hj®«h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjÈ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®«ubhŒ), atomically updates ”…”�”}”(hj®«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÚ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®«ubhŒ to ”…”�”}”(hj®«h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjì«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®«ubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hj®«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjþ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®«ubhŒ is not modified, ”…”�”}”(hj®«h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®«ubhŒ$ is updated to the current value of ”…”�”}”(hj®«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj"¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®«ubhŒ#, and relaxed ordering is provided.”…”�”}”(hj®«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjƪubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic_try_cmpxchg_acquire() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic_try_cmpxchg_acquire() there.”…”�”}”(hj;¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjƪubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjL¬h]”hŒReturn”…”�”}”(hjN¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjƪubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjf¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjb¬ubhŒ if the exchange occurred, ”…”�”}”(hjb¬h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjx¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjb¬ubhŒ otherwise.”…”�”}”(hjb¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjƪubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic_try_cmpxchg_release (C function)”Œc.atomic_try_cmpxchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@bool atomic_try_cmpxchg_release (atomic_t *v, int *old, int new)”h]”hù)�”}”(hŒ?bool atomic_try_cmpxchg_release(atomic_t *v, int *old, int new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj±¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj­¬h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­¬h²hh³j¾¬h´Mubhÿ)�”}”(hŒatomic_try_cmpxchg_release”h]”j)�”}”(hŒatomic_try_cmpxchg_release”h]”hŒatomic_try_cmpxchg_release”…”�”}”(hjѬh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjͬubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj­¬h²hh³j¾¬h´Mubj4)�”}”(hŒ (atomic_t *v, int *old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjð¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjí¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jò¬Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÓ¬sbŒc.atomic_try_cmpxchg_release”†”asbuh1hhjé¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjé¬ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjé¬ubj)�”}”(hjph]”hŒv”…”�”}”(hj+­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjå¬ubj:)�”}”(hŒint *old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjC­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj?­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?­ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj_­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj?­ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjl­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjå¬ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj…­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�­ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj¡­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjå¬ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj­¬h²hh³j¾¬h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj©¬h²hh³j¾¬h´Mubah}”(h]”j¤¬ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¾¬h´Mhj¦¬h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release ordering”…”�”}”(hjË­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÈ­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¦¬h²hh³j¾¬h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjã­jHjã­jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXø**Parameters** ``atomic_t *v`` pointer to atomic_t ``int *old`` pointer to int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_try_cmpxchg_release() there. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjç­ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj ®h]”hŒ atomic_t *v”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj®ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj%®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j!®h´Mhj"®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j!®h´Mhj®ubj©)�”}”(hŒ2``int *old`` pointer to int value to compare with ”h]”(j¯)�”}”(hŒ ``int *old``”h]”jS)�”}”(hjE®h]”hŒint *old”…”�”}”(hjG®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjC®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj?®ubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to int value to compare with”h]”hŒ$pointer to int value to compare with”…”�”}”(hj^®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jZ®h´Mhj[®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj?®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jZ®h´Mhj®ubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hj~®h]”hŒint new”…”�”}”(hj€®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj|®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjx®ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj—®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j“®h´Mhj”®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjx®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j“®h´Mhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjç­ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjç­ubjM)�”}”(hŒÇIf (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjÏ®h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj×®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ®ubhŒ == ”…”�”}”(hjÏ®h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjé®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ®ubhŒ), atomically updates ”…”�”}”(hjÏ®h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjû®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ®ubhŒ to ”…”�”}”(hjÏ®h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ®ubhŒ# with release ordering. Otherwise, ”…”�”}”(hjÏ®h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ®ubhŒ is not modified, ”…”�”}”(hjÏ®h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj1¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ®ubhŒ$ is updated to the current value of ”…”�”}”(hjÏ®h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjC¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ®ubhŒ#, and relaxed ordering is provided.”…”�”}”(hjÏ®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjç­ubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic_try_cmpxchg_release() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic_try_cmpxchg_release() there.”…”�”}”(hj\¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M"hjç­ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjm¯h]”hŒReturn”…”�”}”(hjo¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M$hjç­ubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj‡¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒ¯ubhŒ if the exchange occurred, ”…”�”}”(hjƒ¯h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj™¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒ¯ubhŒ otherwise.”…”�”}”(hjƒ¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M%hjç­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic_try_cmpxchg_relaxed (C function)”Œc.atomic_try_cmpxchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@bool atomic_try_cmpxchg_relaxed (atomic_t *v, int *old, int new)”h]”hù)�”}”(hŒ?bool atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjÒ¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjίh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà¯h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjίh²hh³j߯h´M1ubhÿ)�”}”(hŒatomic_try_cmpxchg_relaxed”h]”j)�”}”(hŒatomic_try_cmpxchg_relaxed”h]”hŒatomic_try_cmpxchg_relaxed”…”�”}”(hjò¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¯ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjίh²hh³j߯h´M1ubj4)�”}”(hŒ (atomic_t *v, int *old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j°Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjô¯sbŒc.atomic_try_cmpxchg_relaxed”†”asbuh1hhj °ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj °ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj?°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj °ubj)�”}”(hjph]”hŒv”…”�”}”(hjL°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj °ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj°ubj:)�”}”(hŒint *old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjd°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj`°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`°ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj€°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj`°ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj�°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj°ubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¦°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¢°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¢°ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj°ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjίh²hh³j߯h´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjʯh²hh³j߯h´M1ubah}”(h]”jůah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j߯h´M1hjǯh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with relaxed ordering”h]”hŒ1atomic compare and exchange with relaxed ordering”…”�”}”(hjì°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1hjé°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjǯh²hh³j߯h´M1ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj±jHj±jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXø**Parameters** ``atomic_t *v`` pointer to atomic_t ``int *old`` pointer to int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_try_cmpxchg_relaxed() there. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M5hj±ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj-±h]”hŒ atomic_t *v”…”�”}”(hj/±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj+±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M2hj'±ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjF±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jB±h´M2hjC±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj'±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jB±h´M2hj$±ubj©)�”}”(hŒ2``int *old`` pointer to int value to compare with ”h]”(j¯)�”}”(hŒ ``int *old``”h]”jS)�”}”(hjf±h]”hŒint *old”…”�”}”(hjh±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjd±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M3hj`±ubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to int value to compare with”h]”hŒ$pointer to int value to compare with”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j{±h´M3hj|±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj`±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j{±h´M3hj$±ubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjŸ±h]”hŒint new”…”�”}”(hj¡±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”•h´M4hj™±ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj¸±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j´±h´M4hjµ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj™±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j´±h´M4hj$±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj±ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M6hj±ubjM)�”}”(hŒÇIf (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjð±h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjø±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð±ubhŒ == ”…”�”}”(hjð±h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð±ubhŒ), atomically updates ”…”�”}”(hjð±h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð±ubhŒ to ”…”�”}”(hjð±h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj.²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð±ubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hjð±h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj@²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð±ubhŒ is not modified, ”…”�”}”(hjð±h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjR²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð±ubhŒ$ is updated to the current value of ”…”�”}”(hjð±h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjd²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð±ubhŒ#, and relaxed ordering is provided.”…”�”}”(hjð±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M5hj±ubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic_try_cmpxchg_relaxed() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic_try_cmpxchg_relaxed() there.”…”�”}”(hj}²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M9hj±ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj޲h]”hŒReturn”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŒ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M;hj±ubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj¨²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤²ubhŒ if the exchange occurred, ”…”�”}”(hj¤²h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjº²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤²ubhŒ otherwise.”…”�”}”(hj¤²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M<hj±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_sub_and_test (C function)”Œc.atomic_sub_and_test”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-bool atomic_sub_and_test (int i, atomic_t *v)”h]”hù)�”}”(hŒ,bool atomic_sub_and_test(int i, atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjó²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjï²h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MGubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjï²h²hh³j³h´MGubhÿ)�”}”(hŒatomic_sub_and_test”h]”j)�”}”(hŒatomic_sub_and_test”h]”hŒatomic_sub_and_test”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjï²h²hh³j³h´MGubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj/³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj+³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+³ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjK³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj'³ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjf³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjc³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jh³Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj³sbŒc.atomic_sub_and_test”†”asbuh1hhj_³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj_³ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj”³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj_³ubj)�”}”(hjph]”hŒv”…”�”}”(hj¡³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj'³ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjï²h²hh³j³h´MGubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjë²h²hh³j³h´MGubah}”(h]”jæ²ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j³h´MGhjè²h²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic subtract and test if zero with full ordering”h]”hŒ3atomic subtract and test if zero with full ordering”…”�”}”(hjʳh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MGhjdzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjè²h²hh³j³h´MGubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjâ³jHjâ³jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXC**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_sub_and_test() there. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKhjæ³ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj ´h]”hŒint i”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MHhj´ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hj$´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j ´h´MHhj!´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j ´h´MHhj´ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjD´h]”hŒ atomic_t *v”…”�”}”(hjF´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjB´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MIhj>´ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj]´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jY´h´MIhjZ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj>´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jY´h´MIhj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjæ³ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKhjæ³ubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj•´h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•´ubhŒ to (”…”�”}”(hj•´h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¯´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•´ubhŒ - ”…”�”}”(hj•´h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÁ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•´ubhŒ) with full ordering.”…”�”}”(hj•´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MJhjæ³ubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_sub_and_test() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_sub_and_test() there.”…”�”}”(hjÚ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MLhjæ³ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjë´h]”hŒReturn”…”�”}”(hjí´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjé´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MNhjæ³ubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµubhŒ if the resulting value of ”…”�”}”(hjµh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµubhŒ is zero, ”…”�”}”(hjµh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj)µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµubhŒ otherwise.”…”�”}”(hjµh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MOhjæ³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_dec_and_test (C function)”Œc.atomic_dec_and_test”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&bool atomic_dec_and_test (atomic_t *v)”h]”hù)�”}”(hŒ%bool atomic_dec_and_test(atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjbµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj^µh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj^µh²hh³joµh´MZubhÿ)�”}”(hŒatomic_dec_and_test”h]”j)�”}”(hŒatomic_dec_and_test”h]”hŒatomic_dec_and_test”…”�”}”(hj‚µh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~µubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj^µh²hh³joµh´MZubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj¡µh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j£µŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj„µsbŒc.atomic_dec_and_test”†”asbuh1hhjšµubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjšµubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjϵh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjšµubj)�”}”(hjph]”hŒv”…”�”}”(hjܵh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj–µubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj^µh²hh³joµh´MZubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjZµh²hh³joµh´MZubah}”(h]”jUµah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³joµh´MZhjWµh²hubj4)�”}”(hhh]”jM)�”}”(hŒ4atomic decrement and test if zero with full ordering”h]”hŒ4atomic decrement and test if zero with full ordering”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MZhj¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjWµh²hh³joµh´MZubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¶jHj¶jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_dec_and_test() there. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M^hj!¶ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjF¶h]”hŒ atomic_t *v”…”�”}”(hjH¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjD¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M[hj@¶ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj_¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj!¶ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M]hj!¶ubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj—¶h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŸ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—¶ubhŒ to (”…”�”}”(hj—¶h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj±¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—¶ubhŒ - 1) with full ordering.”…”�”}”(hj—¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M\hj!¶ubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_dec_and_test() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_dec_and_test() there.”…”�”}”(hjʶh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M^hj!¶ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÛ¶h]”hŒReturn”…”�”}”(hjݶh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙ¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M`hj!¶ubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjõ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñ¶ubhŒ if the resulting value of ”…”�”}”(hjñ¶h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñ¶ubhŒ is zero, ”…”�”}”(hjñ¶h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñ¶ubhŒ otherwise.”…”�”}”(hjñ¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mahj!¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_inc_and_test (C function)”Œc.atomic_inc_and_test”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&bool atomic_inc_and_test (atomic_t *v)”h]”hù)�”}”(hŒ%bool atomic_inc_and_test(atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjR·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjN·h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjN·h²hh³j_·h´Mlubhÿ)�”}”(hŒatomic_inc_and_test”h]”j)�”}”(hŒatomic_inc_and_test”h]”hŒatomic_inc_and_test”…”�”}”(hjr·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn·ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjN·h²hh³j_·h´Mlubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj‘·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j“·Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjt·sbŒc.atomic_inc_and_test”†”asbuh1hhjŠ·ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠ·ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¿·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŠ·ubj)�”}”(hjph]”hŒv”…”�”}”(hjÌ·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj†·ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjN·h²hh³j_·h´Mlubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjJ·h²hh³j_·h´Mlubah}”(h]”jE·ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j_·h´MlhjG·h²hubj4)�”}”(hhh]”jM)�”}”(hŒ4atomic increment and test if zero with full ordering”h]”hŒ4atomic increment and test if zero with full ordering”…”�”}”(hjõ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mlhjò·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjG·h²hh³j_·h´Mlubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj ¸jHj ¸jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_inc_and_test() there. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mphj¸ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj6¸h]”hŒ atomic_t *v”…”�”}”(hj8¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mmhj0¸ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjO¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jK¸h´MmhjL¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jK¸h´Mmhj-¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¸ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjq¸h]”hŒ Description”…”�”}”(hjs¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjo¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mohj¸ubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj‡¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‡¸ubhŒ to (”…”�”}”(hj‡¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¡¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‡¸ubhŒ + 1) with full ordering.”…”�”}”(hj‡¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mnhj¸ubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_inc_and_test() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_inc_and_test() there.”…”�”}”(hjº¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mphj¸ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj˸h]”hŒReturn”…”�”}”(hj͸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjɸubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mrhj¸ubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjå¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjá¸ubhŒ if the resulting value of ”…”�”}”(hjá¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj÷¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjá¸ubhŒ is zero, ”…”�”}”(hjá¸h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjá¸ubhŒ otherwise.”…”�”}”(hjá¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mshj¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_add_negative (C function)”Œc.atomic_add_negative”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-bool atomic_add_negative (int i, atomic_t *v)”h]”hù)�”}”(hŒ,bool atomic_add_negative(int i, atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjB¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj>¹h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M~ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>¹h²hh³jO¹h´M~ubhÿ)�”}”(hŒatomic_add_negative”h]”j)�”}”(hŒatomic_add_negative”h]”hŒatomic_add_negative”…”�”}”(hjb¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^¹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj>¹h²hh³jO¹h´M~ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj~¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjz¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjz¹ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjš¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjv¹ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjµ¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j·¹Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjd¹sbŒc.atomic_add_negative”†”asbuh1hhj®¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj®¹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjã¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj®¹ubj)�”}”(hjph]”hŒv”…”�”}”(hjð¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjv¹ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj>¹h²hh³jO¹h´M~ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj:¹h²hh³jO¹h´M~ubah}”(h]”j5¹ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jO¹h´M~hj7¹h²hubj4)�”}”(hhh]”jM)�”}”(hŒ2atomic add and test if negative with full ordering”h]”hŒ2atomic add and test if negative with full ordering”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M~hjºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj7¹h²hh³jO¹h´M~ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj1ºjHj1ºjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXB**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_add_negative() there. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj;ºh]”hŒ Parameters”…”�”}”(hj=ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‚hj5ºubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjZºh]”hŒint i”…”�”}”(hj\ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjXºubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjTºubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjsºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³joºh´Mhjpºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjTºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³joºh´MhjQºubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj“ºh]”hŒ atomic_t *v”…”�”}”(hj•ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M€hj�ºubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj¬ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¨ºh´M€hj©ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¨ºh´M€hjQºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj5ºubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‚hj5ºubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjäºh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjìºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjäºubhŒ to (”…”�”}”(hjäºh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjþºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjäºubhŒ + ”…”�”}”(hjäºh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjäºubhŒ) with full ordering.”…”�”}”(hjäºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hj5ºubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_add_negative() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_add_negative() there.”…”�”}”(hj)»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mƒhj5ºubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj:»h]”hŒReturn”…”�”}”(hj<»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M…hj5ºubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjT»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP»ubhŒ if the resulting value of ”…”�”}”(hjP»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjf»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP»ubhŒ is negative, ”…”�”}”(hjP»h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjx»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP»ubhŒ otherwise.”…”�”}”(hjP»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M†hj5ºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic_add_negative_acquire (C function)”Œc.atomic_add_negative_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5bool atomic_add_negative_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ4bool atomic_add_negative_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj±»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj­»h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­»h²hh³j¾»h´M‘ubhÿ)�”}”(hŒatomic_add_negative_acquire”h]”j)�”}”(hŒatomic_add_negative_acquire”h]”hŒatomic_add_negative_acquire”…”�”}”(hjÑ»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍ»ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj­»h²hh³j¾»h´M‘ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjí»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjé»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjé»ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj ¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjå»ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj$¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j&¼Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÓ»sbŒc.atomic_add_negative_acquire”†”asbuh1hhj¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD¼h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¼ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjR¼h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¼ubj)�”}”(hjph]”hŒv”…”�”}”(hj_¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjå»ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj­»h²hh³j¾»h´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj©»h²hh³j¾»h´M‘ubah}”(h]”j¤»ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¾»h´M‘hj¦»h²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with acquire ordering”h]”hŒ5atomic add and test if negative with acquire ordering”…”�”}”(hjˆ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‘hj…¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¦»h²hh³j¾»h´M‘ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj ¼jHj ¼jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXM**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_add_negative_acquire() there. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M•hj¤¼ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjɼh]”hŒint i”…”�”}”(hj˼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjǼubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M’hjüubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjâ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj½h]”hŒ atomic_t *v”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M“hjü¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¤¼ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M•hj¤¼ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjS½h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj[½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjS½ubhŒ to (”…”�”}”(hjS½h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjm½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjS½ubhŒ + ”…”�”}”(hjS½h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjS½ubhŒ) with acquire ordering.”…”�”}”(hjS½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M”hj¤¼ubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic_add_negative_acquire() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic_add_negative_acquire() there.”…”�”}”(hj˜½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M–hj¤¼ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj©½h]”hŒReturn”…”�”}”(hj«½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M˜hj¤¼ubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿½ubhŒ if the resulting value of ”…”�”}”(hj¿½h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÕ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿½ubhŒ is negative, ”…”�”}”(hj¿½h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjç½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿½ubhŒ otherwise.”…”�”}”(hj¿½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M™hj¤¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic_add_negative_release (C function)”Œc.atomic_add_negative_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5bool atomic_add_negative_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ4bool atomic_add_negative_release(int i, atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¾h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¾h²hh³j-¾h´M£ubhÿ)�”}”(hŒatomic_add_negative_release”h]”j)�”}”(hŒatomic_add_negative_release”h]”hŒatomic_add_negative_release”…”�”}”(hj@¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<¾ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¾h²hh³j-¾h´M£ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj\¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjX¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjX¾ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjx¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjX¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjT¾ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj“¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j•¾Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjB¾sbŒc.atomic_add_negative_release”†”asbuh1hhjŒ¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŒ¾ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÁ¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŒ¾ubj)�”}”(hjph]”hŒv”…”�”}”(hjξh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒ¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjT¾ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¾h²hh³j-¾h´M£ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¾h²hh³j-¾h´M£ubah}”(h]”j¾ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j-¾h´M£hj¾h²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with release ordering”h]”hŒ5atomic add and test if negative with release ordering”…”�”}”(hj÷¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M£hjô¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¾h²hh³j-¾h´M£ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¿jHj¿jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXM**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_add_negative_release() there. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M§hj¿ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj8¿h]”hŒint i”…”�”}”(hj:¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj6¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¤hj2¿ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjQ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jM¿h´M¤hjN¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj2¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jM¿h´M¤hj/¿ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjq¿h]”hŒ atomic_t *v”…”�”}”(hjs¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjo¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¥hjk¿ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjŠ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j†¿h´M¥hj‡¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjk¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j†¿h´M¥hj/¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¿ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M§hj¿ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¿h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÊ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿ubhŒ to (”…”�”}”(hj¿h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÜ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿ubhŒ + ”…”�”}”(hj¿h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjî¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿ubhŒ) with release ordering.”…”�”}”(hj¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¦hj¿ubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic_add_negative_release() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic_add_negative_release() there.”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¨hj¿ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÀh]”hŒReturn”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mªhj¿ubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj2Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ÀubhŒ if the resulting value of ”…”�”}”(hj.Àh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjDÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ÀubhŒ is negative, ”…”�”}”(hj.Àh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjVÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ÀubhŒ otherwise.”…”�”}”(hj.Àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M«hj¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic_add_negative_relaxed (C function)”Œc.atomic_add_negative_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5bool atomic_add_negative_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ4bool atomic_add_negative_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‹Àh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‹Àh²hh³jœÀh´M¶ubhÿ)�”}”(hŒatomic_add_negative_relaxed”h]”j)�”}”(hŒatomic_add_negative_relaxed”h]”hŒatomic_add_negative_relaxed”…”�”}”(hj¯Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«Àubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‹Àh²hh³jœÀh´M¶ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjËÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÇÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇÀubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjçÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÃÀubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÁŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj±ÀsbŒc.atomic_add_negative_relaxed”†”asbuh1hhjûÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûÀubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj0Áh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjûÀubj)�”}”(hjph]”hŒv”…”�”}”(hj=Áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÃÀubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‹Àh²hh³jœÀh´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‡Àh²hh³jœÀh´M¶ubah}”(h]”j‚Àah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jœÀh´M¶hj„Àh²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with relaxed ordering”h]”hŒ5atomic add and test if negative with relaxed ordering”…”�”}”(hjfÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¶hjcÁh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj„Àh²hh³jœÀh´M¶ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj~ÁjHj~ÁjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXM**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_add_negative_relaxed() there. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mºhj‚Áubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj§Áh]”hŒint i”…”�”}”(hj©Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¥Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M·hj¡ÁubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjÀÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjàÁh]”hŒ atomic_t *v”…”�”}”(hjâÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÞÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸hjÚÁubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjùÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj‚ÁubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mºhj‚ÁubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj1Âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj9Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ÂubhŒ to (”…”�”}”(hj1Âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjKÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ÂubhŒ + ”…”�”}”(hj1Âh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj]Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ÂubhŒ) with relaxed ordering.”…”�”}”(hj1Âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¹hj‚ÁubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic_add_negative_relaxed() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic_add_negative_relaxed() there.”…”�”}”(hjvÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M»hj‚ÁubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj‡Âh]”hŒReturn”…”�”}”(hj‰Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj…Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M½hj‚ÁubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj¡Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ÂubhŒ if the resulting value of ”…”�”}”(hj�Âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj³Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ÂubhŒ is negative, ”…”�”}”(hj�Âh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjÅÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ÂubhŒ otherwise.”…”�”}”(hj�Âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¾hj‚Áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$atomic_fetch_add_unless (C function)”Œc.atomic_fetch_add_unless”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7int atomic_fetch_add_unless (atomic_t *v, int a, int u)”h]”hù)�”}”(hŒ6int atomic_fetch_add_unless(atomic_t *v, int a, int u)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjþÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjúÂh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÈubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjúÂh²hh³j Ãh´MÈubhÿ)�”}”(hŒatomic_fetch_add_unless”h]”j)�”}”(hŒatomic_fetch_add_unless”h]”hŒatomic_fetch_add_unless”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjúÂh²hh³j Ãh´MÈubj4)�”}”(hŒ(atomic_t *v, int a, int u)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj>Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;Ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j@ÃŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj!ÃsbŒc.atomic_fetch_add_unless”†”asbuh1hhj7ÃubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^Ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7Ãubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjlÃh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj7Ãubj)�”}”(hjph]”hŒv”…”�”}”(hjyÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3Ãubj:)�”}”(hŒint a”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj‘Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�ÃubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸÃh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Ãubj)�”}”(hŒa”h]”hŒa”…”�”}”(hj­Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3Ãubj:)�”}”(hŒint u”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÆÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÂÃubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔÃh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÂÃubj)�”}”(hj÷lh]”hŒu”…”�”}”(hjâÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3Ãubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjúÂh²hh³j Ãh´MÈubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjöÂh²hh³j Ãh´MÈubah}”(h]”jñÂah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j Ãh´MÈhjóÂh²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hj Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÈhjÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjóÂh²hh³j Ãh´MÈubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj#ÄjHj#ÄjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX—**Parameters** ``atomic_t *v`` pointer to atomic_t ``int a`` int value to add ``int u`` int value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_fetch_add_unless() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌhj'Äubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjLÄh]”hŒ atomic_t *v”…”�”}”(hjNÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÉhjFÄubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjeÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jaÄh´MÉhjbÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jaÄh´MÉhjCÄubj©)�”}”(hŒ``int a`` int value to add ”h]”(j¯)�”}”(hŒ ``int a``”h]”jS)�”}”(hj…Äh]”hŒint a”…”�”}”(hj‡Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÊhjÄubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjžÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jšÄh´MÊhj›Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jšÄh´MÊhjCÄubj©)�”}”(hŒ$``int u`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int u``”h]”jS)�”}”(hj¾Äh]”hŒint u”…”�”}”(hjÀÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¼Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MËhj¸ÄubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hj×Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÓÄh´MËhjÔÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¸Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÓÄh´MËhjCÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj'ÄubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÍhj'ÄubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjÅh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubhŒ != ”…”�”}”(hjÅh²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hj)Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubhŒ), atomically updates ”…”�”}”(hjÅh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj;Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubhŒ to (”…”�”}”(hjÅh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjMÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubhŒ + ”…”�”}”(hjÅh²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hj_Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjÅh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjqÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌhj'ÄubjM)�”}”(hŒGUnsafe to use in noinstr code; use raw_atomic_fetch_add_unless() there.”h]”hŒGUnsafe to use in noinstr code; use raw_atomic_fetch_add_unless() there.”…”�”}”(hjŠÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÏhj'ÄubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj›Åh]”hŒReturn”…”�”}”(hj�Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑhj'ÄubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj±Åh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¹Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj±ÅubhŒ.”…”�”}”(hj±Åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÒhj'Äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_add_unless (C function)”Œc.atomic_add_unless”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2bool atomic_add_unless (atomic_t *v, int a, int u)”h]”hù)�”}”(hŒ1bool atomic_add_unless(atomic_t *v, int a, int u)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjòÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjîÅh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjîÅh²hh³jÿÅh´MÝubhÿ)�”}”(hŒatomic_add_unless”h]”j)�”}”(hŒatomic_add_unless”h]”hŒatomic_add_unless”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjîÅh²hh³jÿÅh´MÝubj4)�”}”(hŒ(atomic_t *v, int a, int u)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj1Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j3ÆŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÆsbŒc.atomic_add_unless”†”asbuh1hhj*ÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQÆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*Æubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj_Æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj*Æubj)�”}”(hjph]”hŒv”…”�”}”(hjlÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj&Æubj:)�”}”(hŒint a”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj„Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj€ÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Æubj)�”}”(hj¯Ãh]”hŒa”…”�”}”(hj Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj&Æubj:)�”}”(hŒint u”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¸Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj´ÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆÆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´Æubj)�”}”(hj÷lh]”hŒu”…”�”}”(hjÔÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj&Æubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjîÅh²hh³jÿÅh´MÝubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjêÅh²hh³jÿÅh´MÝubah}”(h]”jåÅah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÿÅh´MÝhjçÅh²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hjýÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝhjúÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjçÅh²hh³jÿÅh´MÝubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÇjHjÇjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX¨**Parameters** ``atomic_t *v`` pointer to atomic_t ``int a`` int value to add ``int u`` int value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_add_unless() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MáhjÇubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj>Çh]”hŒ atomic_t *v”…”�”}”(hj@Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj<Çubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞhj8ÇubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjWÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jSÇh´MÞhjTÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj8Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jSÇh´MÞhj5Çubj©)�”}”(hŒ``int a`` int value to add ”h]”(j¯)�”}”(hŒ ``int a``”h]”jS)�”}”(hjwÇh]”hŒint a”…”�”}”(hjyÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjuÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MßhjqÇubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj�Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŒÇh´Mßhj�Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjqÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŒÇh´Mßhj5Çubj©)�”}”(hŒ$``int u`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int u``”h]”jS)�”}”(hj°Çh]”hŒint u”…”�”}”(hj²Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj®Çubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”•h´MàhjªÇubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hjÉÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÅÇh´MàhjÆÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjªÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÅÇh´Màhj5Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÇubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MâhjÇubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjÈh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈubhŒ != ”…”�”}”(hjÈh²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈubhŒ), atomically updates ”…”�”}”(hjÈh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj-Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈubhŒ to (”…”�”}”(hjÈh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj?Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈubhŒ + ”…”�”}”(hjÈh²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hjQÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjÈh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjcÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MáhjÇubjM)�”}”(hŒAUnsafe to use in noinstr code; use raw_atomic_add_unless() there.”h]”hŒAUnsafe to use in noinstr code; use raw_atomic_add_unless() there.”…”�”}”(hj|Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MähjÇubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�Èh]”hŒReturn”…”�”}”(hj�Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MæhjÇubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj§Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj£ÈubhŒ if ”…”�”}”(hj£Èh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¹Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj£ÈubhŒ was updated, ”…”�”}”(hj£Èh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjËÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj£ÈubhŒ otherwise.”…”�”}”(hj£Èh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MçhjÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_inc_not_zero (C function)”Œc.atomic_inc_not_zero”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&bool atomic_inc_not_zero (atomic_t *v)”h]”hù)�”}”(hŒ%bool atomic_inc_not_zero(atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÉh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MòubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉh²hh³jÉh´Mòubhÿ)�”}”(hŒatomic_inc_not_zero”h]”j)�”}”(hŒatomic_inc_not_zero”h]”hŒatomic_inc_not_zero”…”�”}”(hj$Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Éubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÉh²hh³jÉh´Mòubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjCÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@Éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jEÉŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj&ÉsbŒc.atomic_inc_not_zero”†”asbuh1hhj<ÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÉh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj<Éubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjqÉh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj<Éubj)�”}”(hjph]”hŒv”…”�”}”(hj~Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj8Éubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÉh²hh³jÉh´Mòubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjüÈh²hh³jÉh´Mòubah}”(h]”j÷Èah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÉh´MòhjùÈh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic increment unless zero with full ordering”h]”hŒ/atomic increment unless zero with full ordering”…”�”}”(hj§Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mòhj¤Éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjùÈh²hh³jÉh´Mòubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¿ÉjHj¿ÉjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX]**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_inc_not_zero() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MöhjÃÉubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjèÉh]”hŒ atomic_t *v”…”�”}”(hjêÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjæÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MóhjâÉubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÃÉubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MõhjÃÉubjM)�”}”(hŒ�If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj9Êh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjAÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ÊubhŒ != 0), atomically updates ”…”�”}”(hj9Êh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjSÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ÊubhŒ to (”…”�”}”(hj9Êh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjeÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ÊubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hj9Êh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjwÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ÊubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj9Êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MôhjÃÉubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_inc_not_zero() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_inc_not_zero() there.”…”�”}”(hj�Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M÷hjÃÉubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¡Êh]”hŒReturn”…”�”}”(hj£Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŸÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MùhjÃÉubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj»Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj·ÊubhŒ if ”…”�”}”(hj·Êh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÍÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj·ÊubhŒ was updated, ”…”�”}”(hj·Êh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjßÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj·ÊubhŒ otherwise.”…”�”}”(hj·Êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MúhjÃÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic_inc_unless_negative (C function)”Œc.atomic_inc_unless_negative”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-bool atomic_inc_unless_negative (atomic_t *v)”h]”hù)�”}”(hŒ,bool atomic_inc_unless_negative(atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjËh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&Ëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjËh²hh³j%Ëh´Mubhÿ)�”}”(hŒatomic_inc_unless_negative”h]”j)�”}”(hŒatomic_inc_unless_negative”h]”hŒatomic_inc_unless_negative”…”�”}”(hj8Ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Ëubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjËh²hh³j%Ëh´Mubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjWËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jYËŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj:ËsbŒc.atomic_inc_unless_negative”†”asbuh1hhjPËubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwËh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPËubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj…Ëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjPËubj)�”}”(hjph]”hŒv”…”�”}”(hj’Ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjLËubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjËh²hh³j%Ëh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjËh²hh³j%Ëh´Mubah}”(h]”j Ëah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j%Ëh´Mhj Ëh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic increment unless negative with full ordering”h]”hŒ3atomic increment unless negative with full ordering”…”�”}”(hj»Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj¸Ëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj Ëh²hh³j%Ëh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÓËjHjÓËjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXd**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_inc_unless_negative() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj×Ëubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjüËh]”hŒ atomic_t *v”…”�”}”(hjþËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjúËubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjöËubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÌh´MhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjöËubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÌh´MhjóËubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj×ËubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj7Ìh]”hŒ Description”…”�”}”(hj9Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj×ËubjM)�”}”(hŒ�If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjMÌh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjUÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMÌubhŒ >= 0), atomically updates ”…”�”}”(hjMÌh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjgÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMÌubhŒ to (”…”�”}”(hjMÌh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjyÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMÌubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hjMÌh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‹Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMÌubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjMÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj×ËubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic_inc_unless_negative() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic_inc_unless_negative() there.”…”�”}”(hj¤Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj×ËubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjµÌh]”hŒReturn”…”�”}”(hj·Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj×ËubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjÏÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËÌubhŒ if ”…”�”}”(hjËÌh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjáÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËÌubhŒ was updated, ”…”�”}”(hjËÌh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjóÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËÌubhŒ otherwise.”…”�”}”(hjËÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj×Ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic_dec_unless_positive (C function)”Œc.atomic_dec_unless_positive”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-bool atomic_dec_unless_positive (atomic_t *v)”h]”hù)�”}”(hŒ,bool atomic_dec_unless_positive(atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj,Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj(Íh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Íh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj(Íh²hh³j9Íh´Mubhÿ)�”}”(hŒatomic_dec_unless_positive”h]”j)�”}”(hŒatomic_dec_unless_positive”h]”hŒatomic_dec_unless_positive”…”�”}”(hjLÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHÍubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj(Íh²hh³j9Íh´Mubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjkÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jmÍŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjNÍsbŒc.atomic_dec_unless_positive”†”asbuh1hhjdÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Íh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdÍubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj™Íh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjdÍubj)�”}”(hjph]”hŒv”…”�”}”(hj¦Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj`Íubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj(Íh²hh³j9Íh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj$Íh²hh³j9Íh´Mubah}”(h]”jÍah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j9Íh´Mhj!Íh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic decrement unless positive with full ordering”h]”hŒ3atomic decrement unless positive with full ordering”…”�”}”(hjÏÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÌÍh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj!Íh²hh³j9Íh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjçÍjHjçÍjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXd**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** If (**v** <= 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_dec_unless_positive() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjëÍubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÎh]”hŒ atomic_t *v”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj ÎubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj)Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j%Îh´Mhj&Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j%Îh´MhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjëÍubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjKÎh]”hŒ Description”…”�”}”(hjMÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjëÍubjM)�”}”(hŒ�If (**v** <= 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjaÎh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjiÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaÎubhŒ <= 0), atomically updates ”…”�”}”(hjaÎh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj{Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaÎubhŒ to (”…”�”}”(hjaÎh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaÎubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hjaÎh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŸÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaÎubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjaÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjëÍubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic_dec_unless_positive() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic_dec_unless_positive() there.”…”�”}”(hj¸Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjëÍubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÉÎh]”hŒReturn”…”�”}”(hjËÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÇÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjëÍubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjãÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjßÎubhŒ if ”…”�”}”(hjßÎh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjõÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjßÎubhŒ was updated, ”…”�”}”(hjßÎh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjßÎubhŒ otherwise.”…”�”}”(hjßÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjëÍubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#atomic_dec_if_positive (C function)”Œc.atomic_dec_if_positive”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(int atomic_dec_if_positive (atomic_t *v)”h]”hù)�”}”(hŒ'int atomic_dec_if_positive(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj@Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj<Ïh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOÏh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj<Ïh²hh³jNÏh´M+ubhÿ)�”}”(hŒatomic_dec_if_positive”h]”j)�”}”(hŒatomic_dec_if_positive”h]”hŒatomic_dec_if_positive”…”�”}”(hjaÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]Ïubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj<Ïh²hh³jNÏh´M+ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj€Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‚ÏŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjcÏsbŒc.atomic_dec_if_positive”†”asbuh1hhjyÏubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyÏubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj®Ïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjyÏubj)�”}”(hjph]”hŒv”…”�”}”(hj»Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjuÏubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj<Ïh²hh³jNÏh´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj8Ïh²hh³jNÏh´M+ubah}”(h]”j3Ïah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jNÏh´M+hj5Ïh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic decrement if positive with full ordering”h]”hŒ/atomic decrement if positive with full ordering”…”�”}”(hjäÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M+hjáÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj5Ïh²hh³jNÏh´M+ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjüÏjHjüÏjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXr**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** If (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_dec_if_positive() there. **Return** The old value of (**v** - 1), regardless of whether **v** was updated.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/hjÐubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj%Ðh]”hŒ atomic_t *v”…”�”}”(hj'Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj#Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M,hjÐubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj>Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÐubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj`Ðh]”hŒ Description”…”�”}”(hjbÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M.hjÐubjM)�”}”(hŒŽIf (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjvÐh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj~Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvÐubhŒ > 0), atomically updates ”…”�”}”(hjvÐh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvÐubhŒ to (”…”�”}”(hjvÐh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¢Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvÐubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hjvÐh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj´Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvÐubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjvÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M-hjÐubjM)�”}”(hŒFUnsafe to use in noinstr code; use raw_atomic_dec_if_positive() there.”h]”hŒFUnsafe to use in noinstr code; use raw_atomic_dec_if_positive() there.”…”�”}”(hjÍÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M0hjÐubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÞÐh]”hŒReturn”…”�”}”(hjàÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M2hjÐubjM)�”}”(hŒFThe old value of (**v** - 1), regardless of whether **v** was updated.”h]”(hŒThe old value of (”…”�”}”(hjôÐh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjüÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjôÐubhŒ - 1), regardless of whether ”…”�”}”(hjôÐh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjôÐubhŒ was updated.”…”�”}”(hjôÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M3hjÐubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_read (C function)”Œc.atomic64_read”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ's64 atomic64_read (const atomic64_t *v)”h]”hù)�”}”(hŒ&s64 atomic64_read(const atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjJÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jLÑŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒ atomic64_read”sbŒc.atomic64_read”†”asbuh1hhjCÑh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M>ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlÑh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCÑh²hh³jkÑh´M>ubhÿ)�”}”(hŒ atomic64_read”h]”j)�”}”(hjhÑh]”hŒ atomic64_read”…”�”}”(hj~Ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzÑubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjCÑh²hh³jkÑh´M>ubj4)�”}”(hŒ(const atomic64_t *v)”h]”j:)�”}”(hŒconst atomic64_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj™Ñh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj•ÑubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Ñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj•Ñubh)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj·Ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´Ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¹ÑŒmodname”NŒ classname”Njwjz)�”}”j}]”jfÑŒc.atomic64_read”†”asbuh1hhj•ÑubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕÑh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj•Ñubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjãÑh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj•Ñubj)�”}”(hjph]”hŒv”…”�”}”(hjðÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•Ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‘Ñubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjCÑh²hh³jkÑh´M>ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj?Ñh²hh³jkÑh´M>ubah}”(h]”j:Ñah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jkÑh´M>hj<Ñh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with relaxed ordering”h]”hŒ!atomic load with relaxed ordering”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M>hjÒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj<Ñh²hh³jkÑh´M>ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj1ÒjHj1ÒjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒõ**Parameters** ``const atomic64_t *v`` pointer to atomic64_t **Description** Atomically loads the value of **v** with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_read() there. **Return** The value loaded from **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj;Òh]”hŒ Parameters”…”�”}”(hj=Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MBhj5Òubj¤)�”}”(hhh]”j©)�”}”(hŒ.``const atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``const atomic64_t *v``”h]”jS)�”}”(hjZÒh]”hŒconst atomic64_t *v”…”�”}”(hj\Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjXÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M?hjTÒubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjsÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³joÒh´M?hjpÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjTÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³joÒh´M?hjQÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj5ÒubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MAhj5ÒubjM)�”}”(hŒ:Atomically loads the value of **v** with relaxed ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hj«Òh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj³Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«ÒubhŒ with relaxed ordering.”…”�”}”(hj«Òh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M@hj5ÒubjM)�”}”(hŒ=Unsafe to use in noinstr code; use raw_atomic64_read() there.”h]”hŒ=Unsafe to use in noinstr code; use raw_atomic64_read() there.”…”�”}”(hjÌÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MBhj5ÒubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÝÒh]”hŒReturn”…”�”}”(hjßÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MDhj5ÒubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hjóÒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjûÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóÒubhŒ.”…”�”}”(hjóÒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MEhj5Òubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic64_read_acquire (C function)”Œc.atomic64_read_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/s64 atomic64_read_acquire (const atomic64_t *v)”h]”hù)�”}”(hŒ.s64 atomic64_read_acquire(const atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj7Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j9ÓŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_read_acquire”sbŒc.atomic64_read_acquire”†”asbuh1hhj0Óh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0Óh²hh³jXÓh´MOubhÿ)�”}”(hŒatomic64_read_acquire”h]”j)�”}”(hjUÓh]”hŒatomic64_read_acquire”…”�”}”(hjkÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgÓubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0Óh²hh³jXÓh´MOubj4)�”}”(hŒ(const atomic64_t *v)”h]”j:)�”}”(hŒconst atomic64_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj†Óh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‚ÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Óh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚Óubh)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj¤Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¦ÓŒmodname”NŒ classname”Njwjz)�”}”j}]”jSÓŒc.atomic64_read_acquire”†”asbuh1hhj‚ÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚Óubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÐÓh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‚Óubj)�”}”(hjph]”hŒv”…”�”}”(hjÝÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚Óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj~Óubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj0Óh²hh³jXÓh´MOubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,Óh²hh³jXÓh´MOubah}”(h]”j'Óah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jXÓh´MOhj)Óh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with acquire ordering”h]”hŒ!atomic load with acquire ordering”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MOhjÔh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj)Óh²hh³jXÓh´MOubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÔjHjÔjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒý**Parameters** ``const atomic64_t *v`` pointer to atomic64_t **Description** Atomically loads the value of **v** with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_read_acquire() there. **Return** The value loaded from **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MShj"Ôubj¤)�”}”(hhh]”j©)�”}”(hŒ.``const atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``const atomic64_t *v``”h]”jS)�”}”(hjGÔh]”hŒconst atomic64_t *v”…”�”}”(hjIÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjEÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MPhjAÔubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj`Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j\Ôh´MPhj]Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjAÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j\Ôh´MPhj>Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj"ÔubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MRhj"ÔubjM)�”}”(hŒ:Atomically loads the value of **v** with acquire ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hj˜Ôh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˜ÔubhŒ with acquire ordering.”…”�”}”(hj˜Ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MQhj"ÔubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic64_read_acquire() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic64_read_acquire() there.”…”�”}”(hj¹Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MShj"ÔubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÊÔh]”hŒReturn”…”�”}”(hjÌÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MUhj"ÔubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hjàÔh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjèÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjàÔubhŒ.”…”�”}”(hjàÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MVhj"Ôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_set (C function)”Œc.atomic64_set”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void atomic64_set (atomic64_t *v, s64 i)”h]”hù)�”}”(hŒ'void atomic64_set(atomic64_t *v, s64 i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj!Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÕh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M`ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÕh²hh³j/Õh´M`ubhÿ)�”}”(hŒ atomic64_set”h]”j)�”}”(hŒ atomic64_set”h]”hŒ atomic64_set”…”�”}”(hjBÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>Õubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÕh²hh³j/Õh´M`ubj4)�”}”(hŒ(atomic64_t *v, s64 i)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjaÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^Õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jcÕŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjDÕsbŒc.atomic64_set”†”asbuh1hhjZÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZÕubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�Õh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjZÕubj)�”}”(hjph]”hŒv”…”�”}”(hjœÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjVÕubj:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj·Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´Õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¹ÕŒmodname”NŒ classname”Njwjz)�”}”j}]”j}ÕŒc.atomic64_set”†”asbuh1hhj°ÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕÕh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°Õubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjãÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjVÕubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÕh²hh³j/Õh´M`ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÕh²hh³j/Õh´M`ubah}”(h]”jÕah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j/Õh´M`hjÕh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with relaxed ordering”h]”hŒ atomic set with relaxed ordering”…”�”}”(hj Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M`hj Öh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÕh²hh³j/Õh´M`ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj$ÖjHj$ÖjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒö**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 i`` s64 value to assign **Description** Atomically sets **v** to **i** with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_set() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj.Öh]”hŒ Parameters”…”�”}”(hj0Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mdhj(Öubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjMÖh]”hŒ atomic64_t *v”…”�”}”(hjOÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MahjGÖubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjfÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jbÖh´MahjcÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbÖh´MahjDÖubj©)�”}”(hŒ``s64 i`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj†Öh]”hŒs64 i”…”�”}”(hjˆÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj„Öubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mbhj€ÖubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjŸÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j›Öh´MbhjœÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj€Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›Öh´MbhjDÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj(ÖubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mdhj(ÖubjM)�”}”(hŒ5Atomically sets **v** to **i** with relaxed ordering.”h]”(hŒAtomically sets ”…”�”}”(hj×Öh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjßÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×ÖubhŒ to ”…”�”}”(hj×Öh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjñÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×ÖubhŒ with relaxed ordering.”…”�”}”(hj×Öh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mchj(ÖubjM)�”}”(hŒÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÜh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>Üubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjqÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:Üubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjŒÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰Üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŽÜŒmodname”NŒ classname”Njwjz)�”}”j}]”jÜŒc.atomic64_add_return”†”asbuh1hhj…ÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÜh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…Üubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¸Üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj…Üubj)�”}”(hjph]”hŒv”…”�”}”(hjÅÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:Üubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjìÛh²hh³jÜh´M—ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjèÛh²hh³jÜh´M—ubah}”(h]”jãÛah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÜh´M—hjåÛh²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hjîÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M—hjëÜh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjåÛh²hh³jÜh´M—ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÝjHjÝjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic64_add_return() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M›hj Ýubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj/Ýh]”hŒs64 i”…”�”}”(hj1Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj-Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M˜hj)ÝubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hjHÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jDÝh´M˜hjEÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj)Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jDÝh´M˜hj&Ýubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjhÝh]”hŒ atomic64_t *v”…”�”}”(hjjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjfÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M™hjbÝubjÉ•)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj�Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j}Ýh´M™hj~Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjbÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j}Ýh´M™hj&Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ÝubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M›hj ÝubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¹Ýh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÁÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹ÝubhŒ to (”…”�”}”(hj¹Ýh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÓÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹ÝubhŒ + ”…”�”}”(hj¹Ýh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjåÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹ÝubhŒ) with full ordering.”…”�”}”(hj¹Ýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mšhj ÝubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic64_add_return() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic64_add_return() there.”…”�”}”(hjþÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mœhj ÝubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÞh]”hŒReturn”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mžhj ÝubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj%Þh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj-Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ÞubhŒ.”…”�”}”(hj%Þh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸhj Ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_add_return_acquire (C function)”Œc.atomic64_add_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6s64 atomic64_add_return_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ5s64 atomic64_add_return_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjiÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jkÞŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_add_return_acquire”sbŒc.atomic64_add_return_acquire”†”asbuh1hhjbÞh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Þh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjbÞh²hh³jŠÞh´Mªubhÿ)�”}”(hŒatomic64_add_return_acquire”h]”j)�”}”(hj‡Þh]”hŒatomic64_add_return_acquire”…”�”}”(hj�Þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™Þubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjbÞh²hh³jŠÞh´Mªubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj»Þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j½ÞŒmodname”NŒ classname”Njwjz)�”}”j}]”j…ÞŒc.atomic64_add_return_acquire”†”asbuh1hhj´ÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´Þubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjçÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj°Þubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jߌmodname”NŒ classname”Njwjz)�”}”j}]”j…ÞŒc.atomic64_add_return_acquire”†”asbuh1hhjûÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûÞubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj.ßh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjûÞubj)�”}”(hjph]”hŒv”…”�”}”(hj;ßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj°Þubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjbÞh²hh³jŠÞh´Mªubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj^Þh²hh³jŠÞh´Mªubah}”(h]”jYÞah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŠÞh´Mªhj[Þh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hjdßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mªhjaßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj[Þh²hh³jŠÞh´Mªubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj|ßjHj|ßjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_add_return_acquire() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M®hj€ßubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj¥ßh]”hŒs64 i”…”�”}”(hj§ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M«hjŸßubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj¾ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÞßh]”hŒ atomic64_t *v”…”�”}”(hjàßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÜßubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¬hjØßubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj÷ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj€ßubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M®hj€ßubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj/àh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj7àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/àubhŒ to (”…”�”}”(hj/àh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjIàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/àubhŒ + ”…”�”}”(hj/àh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj[àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/àubhŒ) with acquire ordering.”…”�”}”(hj/àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M­hj€ßubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_add_return_acquire() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_add_return_acquire() there.”…”�”}”(hjtàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¯hj€ßubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj…àh]”hŒReturn”…”�”}”(hj‡àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒàubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M±hj€ßubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj›àh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj£àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›àubhŒ.”…”�”}”(hj›àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M²hj€ßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_add_return_release (C function)”Œc.atomic64_add_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6s64 atomic64_add_return_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ5s64 atomic64_add_return_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjßàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jáàŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_add_return_release”sbŒc.atomic64_add_return_release”†”asbuh1hhjØàh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjØàh²hh³jáh´M¼ubhÿ)�”}”(hŒatomic64_add_return_release”h]”j)�”}”(hjýàh]”hŒatomic64_add_return_release”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjØàh²hh³jáh´M¼ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj1áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j3áŒmodname”NŒ classname”Njwjz)�”}”j}]”jûàŒc.atomic64_add_return_release”†”asbuh1hhj*áubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOáh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*áubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj]áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj&áubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjxáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jzáŒmodname”NŒ classname”Njwjz)�”}”j}]”jûàŒc.atomic64_add_return_release”†”asbuh1hhjqáubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjqáubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¤áh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjqáubj)�”}”(hjph]”hŒv”…”�”}”(hj±áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj&áubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjØàh²hh³jáh´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÔàh²hh³jáh´M¼ubah}”(h]”jÏàah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jáh´M¼hjÑàh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hjÚáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¼hj×áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÑàh²hh³jáh´M¼ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjòájHjòájI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_add_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÀhjöáubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjâh]”hŒs64 i”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M½hjâubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj4âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j0âh´M½hj1âubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j0âh´M½hjâubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjTâh]”hŒ atomic64_t *v”…”�”}”(hjVâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjRâubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¾hjNâubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjmâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jiâh´M¾hjjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjNâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jiâh´M¾hjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjöáubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÀhjöáubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¥âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj­âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥âubhŒ to (”…”�”}”(hj¥âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¿âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥âubhŒ + ”…”�”}”(hj¥âh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÑâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥âubhŒ) with release ordering.”…”�”}”(hj¥âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¿hjöáubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_add_return_release() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_add_return_release() there.”…”�”}”(hjêâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÁhjöáubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjûâh]”hŒReturn”…”�”}”(hjýâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùâubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÃhjöáubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjãh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãubhŒ.”…”�”}”(hjãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÄhjöáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_add_return_relaxed (C function)”Œc.atomic64_add_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6s64 atomic64_add_return_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ5s64 atomic64_add_return_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjUãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jWãŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_add_return_relaxed”sbŒc.atomic64_add_return_relaxed”†”asbuh1hhjNãh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÏubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjNãh²hh³jvãh´MÏubhÿ)�”}”(hŒatomic64_add_return_relaxed”h]”j)�”}”(hjsãh]”hŒatomic64_add_return_relaxed”…”�”}”(hj‰ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…ãubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjNãh²hh³jvãh´MÏubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj§ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j©ãŒmodname”NŒ classname”Njwjz)�”}”j}]”jqãŒc.atomic64_add_return_relaxed”†”asbuh1hhj ãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ãubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÓãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœãubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjîãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jðãŒmodname”NŒ classname”Njwjz)�”}”j}]”jqãŒc.atomic64_add_return_relaxed”†”asbuh1hhjçãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjçãubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjçãubj)�”}”(hjph]”hŒv”…”�”}”(hj'äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœãubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjNãh²hh³jvãh´MÏubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjJãh²hh³jvãh´MÏubah}”(h]”jEãah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jvãh´MÏhjGãh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hjPäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÏhjMäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjGãh²hh³jvãh´MÏubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjhäjHjhäjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_add_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÓhjläubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj‘äh]”hŒs64 i”…”�”}”(hj“äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�äubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐhj‹äubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hjªäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÊäh]”hŒ atomic64_t *v”…”�”}”(hjÌäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÈäubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑhjÄäubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjãäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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äubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÓhjläubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjåh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj#åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåubhŒ to (”…”�”}”(hjåh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj5åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåubhŒ + ”…”�”}”(hjåh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjGåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåubhŒ) with relaxed ordering.”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÒhjläubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_add_return_relaxed() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_add_return_relaxed() there.”…”�”}”(hj`åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÔhjläubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjqåh]”hŒReturn”…”�”}”(hjsåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjoåubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÖhjläubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj‡åh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‡åubhŒ.”…”�”}”(hj‡åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M×hjläubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_fetch_add (C function)”Œc.atomic64_fetch_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-s64 atomic64_fetch_add (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ,s64 atomic64_fetch_add(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjËåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÍåŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_add”sbŒc.atomic64_fetch_add”†”asbuh1hhjÄåh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MáubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíåh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÄåh²hh³jìåh´Máubhÿ)�”}”(hŒatomic64_fetch_add”h]”j)�”}”(hjéåh]”hŒatomic64_fetch_add”…”�”}”(hjÿåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûåubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÄåh²hh³jìåh´Máubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jæŒmodname”NŒ classname”Njwjz)�”}”j}]”jçåŒc.atomic64_fetch_add”†”asbuh1hhjæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjæubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjIæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjæubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjdæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jfæŒmodname”NŒ classname”Njwjz)�”}”j}]”jçåŒc.atomic64_fetch_add”†”asbuh1hhj]æubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj]æubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�æh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj]æubj)�”}”(hjph]”hŒv”…”�”}”(hj�æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjæubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÄåh²hh³jìåh´Máubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÀåh²hh³jìåh´Máubah}”(h]”j»åah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jìåh´Máhj½åh²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hjÆæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MáhjÃæh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj½åh²hh³jìåh´Máubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÞæjHjÞæjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_add() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Måhjâæubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjçh]”hŒs64 i”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MâhjçubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj@çh]”hŒ atomic64_t *v”…”�”}”(hjBçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj>çubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mãhj:çubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjYçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jUçh´MãhjVçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jUçh´Mãhjþæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjâæubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj{çh]”hŒ Description”…”�”}”(hj}çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyçubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MåhjâæubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj‘çh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘çubhŒ to (”…”�”}”(hj‘çh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj«çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘çubhŒ + ”…”�”}”(hj‘çh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj½çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘çubhŒ) with full ordering.”…”�”}”(hj‘çh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MähjâæubjM)�”}”(hŒBUnsafe to use in noinstr code; use raw_atomic64_fetch_add() there.”h]”hŒBUnsafe to use in noinstr code; use raw_atomic64_fetch_add() there.”…”�”}”(hjÖçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MæhjâæubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjççh]”hŒReturn”…”�”}”(hjéçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåçubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MèhjâæubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjýçh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjýçubhŒ.”…”�”}”(hjýçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Méhjâæubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_add_acquire (C function)”Œc.atomic64_fetch_add_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_add_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_add_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjAèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCèŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_add_acquire”sbŒc.atomic64_fetch_add_acquire”†”asbuh1hhj:èh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MôubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcèh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:èh²hh³jbèh´Môubhÿ)�”}”(hŒatomic64_fetch_add_acquire”h]”j)�”}”(hj_èh]”hŒatomic64_fetch_add_acquire”…”�”}”(hjuèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqèubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj:èh²hh³jbèh´Môubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj“èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j•èŒmodname”NŒ classname”Njwjz)�”}”j}]”j]èŒc.atomic64_fetch_add_acquire”†”asbuh1hhjŒèubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±èh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŒèubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¿èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjˆèubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÚèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÜèŒmodname”NŒ classname”Njwjz)�”}”j}]”j]èŒc.atomic64_fetch_add_acquire”†”asbuh1hhjÓèubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøèh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÓèubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÓèubj)�”}”(hjph]”hŒv”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjˆèubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj:èh²hh³jbèh´Môubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj6èh²hh³jbèh´Môubah}”(h]”j1èah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jbèh´Môhj3èh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hj<éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Môhj9éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj3èh²hh³jbèh´Môubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjTéjHjTéjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_add_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MøhjXéubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj}éh]”hŒs64 i”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{éubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MõhjwéubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj–éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j’éh´Mõhj“éubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjwéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’éh´Mõhjtéubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¶éh]”hŒ atomic64_t *v”…”�”}”(hj¸éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj´éubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Möhj°éubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÏéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jËéh´MöhjÌéubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj°éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jËéh´Möhjtéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjXéubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MøhjXéubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjêh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjêubhŒ to (”…”�”}”(hjêh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj!êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjêubhŒ + ”…”�”}”(hjêh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj3êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjêubhŒ) with acquire ordering.”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M÷hjXéubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_add_acquire() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_add_acquire() there.”…”�”}”(hjLêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MùhjXéubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj]êh]”hŒReturn”…”�”}”(hj_êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[êubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MûhjXéubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjsêh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj{êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsêubhŒ.”…”�”}”(hjsêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MühjXéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_add_release (C function)”Œc.atomic64_fetch_add_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_add_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_add_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj·êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´êubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¹êŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_add_release”sbŒc.atomic64_fetch_add_release”†”asbuh1hhj°êh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙêh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°êh²hh³jØêh´Mubhÿ)�”}”(hŒatomic64_fetch_add_release”h]”j)�”}”(hjÕêh]”hŒatomic64_fetch_add_release”…”�”}”(hjëêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçêubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj°êh²hh³jØêh´Mubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j ëŒmodname”NŒ classname”Njwjz)�”}”j}]”jÓêŒc.atomic64_fetch_add_release”†”asbuh1hhjëubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'ëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjëubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj5ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjþêubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjPëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jRëŒmodname”NŒ classname”Njwjz)�”}”j}]”jÓêŒc.atomic64_fetch_add_release”†”asbuh1hhjIëubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjIëubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj|ëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjIëubj)�”}”(hjph]”hŒv”…”�”}”(hj‰ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjþêubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj°êh²hh³jØêh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¬êh²hh³jØêh´Mubah}”(h]”j§êah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jØêh´Mhj©êh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hj²ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj¯ëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj©êh²hh³jØêh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÊëjHjÊëjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_add_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÎëubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjóëh]”hŒs64 i”…”�”}”(hjõëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjñëubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjíëubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jìh´Mhj ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjíëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jìh´Mhjêëubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj,ìh]”hŒ atomic64_t *v”…”�”}”(hj.ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj*ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj&ìubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjEìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jAìh´MhjBìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj&ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jAìh´Mhjêëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÎëubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjgìh]”hŒ Description”…”�”}”(hjiìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeìubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÎëubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj}ìh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj…ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ìubhŒ to (”…”�”}”(hj}ìh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj—ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ìubhŒ + ”…”�”}”(hj}ìh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj©ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ìubhŒ) with release ordering.”…”�”}”(hj}ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÎëubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_add_release() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_add_release() there.”…”�”}”(hjÂìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÎëubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÓìh]”hŒReturn”…”�”}”(hjÕìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑìubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÎëubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjéìh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjñìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjéìubhŒ.”…”�”}”(hjéìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÎëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_add_relaxed (C function)”Œc.atomic64_fetch_add_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_add_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_add_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj-íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j/íŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_add_relaxed”sbŒc.atomic64_fetch_add_relaxed”†”asbuh1hhj&íh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOíh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj&íh²hh³jNíh´Mubhÿ)�”}”(hŒatomic64_fetch_add_relaxed”h]”j)�”}”(hjKíh]”hŒatomic64_fetch_add_relaxed”…”�”}”(hjaíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]íubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj&íh²hh³jNíh´Mubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�íŒmodname”NŒ classname”Njwjz)�”}”j}]”jIíŒc.atomic64_fetch_add_relaxed”†”asbuh1hhjxíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�íh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjxíubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj«íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjxíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjtíubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÆíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÈíŒmodname”NŒ classname”Njwjz)�”}”j}]”jIíŒc.atomic64_fetch_add_relaxed”†”asbuh1hhj¿íubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäíh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿íubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjòíh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¿íubj)�”}”(hjph]”hŒv”…”�”}”(hjÿíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjtíubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj&íh²hh³jNíh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj"íh²hh³jNíh´Mubah}”(h]”jíah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jNíh´Mhjíh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj(îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj%îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjíh²hh³jNíh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj@îjHj@îjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_add_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjJîh]”hŒ Parameters”…”�”}”(hjLîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHîubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjDîubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjiîh]”hŒs64 i”…”�”}”(hjkîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgîubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjcîubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj‚îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~îh´Mhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~îh´Mhj`îubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¢îh]”hŒ atomic64_t *v”…”�”}”(hj¤îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj îubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjœîubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj»îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j·îh´Mhj¸îubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjœîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j·îh´Mhj`îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjDîubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjDîubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjóîh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjûîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóîubhŒ to (”…”�”}”(hjóîh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóîubhŒ + ”…”�”}”(hjóîh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóîubhŒ) with relaxed ordering.”…”�”}”(hjóîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjDîubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_add_relaxed() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_add_relaxed() there.”…”�”}”(hj8ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjDîubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjIïh]”hŒReturn”…”�”}”(hjKïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGïubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjDîubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj_ïh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjgïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_ïubhŒ.”…”�”}”(hj_ïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M!hjDîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_sub (C function)”Œc.atomic64_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void atomic64_sub (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ'void atomic64_sub(s64 i, atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjœïh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯ïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœïh²hh³j®ïh´M+ubhÿ)�”}”(hŒ atomic64_sub”h]”j)�”}”(hŒ atomic64_sub”h]”hŒ atomic64_sub”…”�”}”(hjÁïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½ïubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjœïh²hh³j®ïh´M+ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjàïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jâïŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÃïsbŒc.atomic64_sub”†”asbuh1hhjÙïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÙïubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÕïubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj)ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j+ðŒmodname”NŒ classname”Njwjz)�”}”j}]”jüïŒc.atomic64_sub”†”asbuh1hhj"ðubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"ðubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjUðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj"ðubj)�”}”(hjph]”hŒv”…”�”}”(hjbðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÕïubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjœïh²hh³j®ïh´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj˜ïh²hh³j®ïh´M+ubah}”(h]”j“ïah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j®ïh´M+hj•ïh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hj‹ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M+hjˆðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj•ïh²hh³j®ïh´M+ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj£ðjHj£ðjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_sub() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/hj§ðubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjÌðh]”hŒs64 i”…”�”}”(hjÎðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÊðubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M,hjÆðubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hjåðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjñh]”hŒ atomic64_t *v”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M-hjÿðubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj§ðubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj@ñh]”hŒ Description”…”�”}”(hjBñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/hj§ðubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjVñh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj^ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVñubhŒ to (”…”�”}”(hjVñh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjpñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVñubhŒ - ”…”�”}”(hjVñh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj‚ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVñubhŒ) with relaxed ordering.”…”�”}”(hjVñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M.hj§ðubjM)�”}”(hŒhj*óubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hjIóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jEóh´M>hjFóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jEóh´M>hj'óubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjióh]”hŒ atomic64_t *v”…”�”}”(hjkóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgóubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M?hjcóubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj‚óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~óh´M?hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~óh´M?hj'óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj óubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MAhj óubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjºóh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÂóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºóubhŒ to (”…”�”}”(h•jºóh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÔóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºóubhŒ - ”…”�”}”(hjºóh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjæóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºóubhŒ) with full ordering.”…”�”}”(hjºóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M@hj óubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic64_sub_return() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic64_sub_return() there.”…”�”}”(hjÿóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MBhj óubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjôh]”hŒReturn”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MDhj óubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj&ôh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj.ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&ôubhŒ.”…”�”}”(hj&ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MEhj óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_sub_return_acquire (C function)”Œc.atomic64_sub_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6s64 atomic64_sub_return_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ5s64 atomic64_sub_return_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjjôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jlôŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_sub_return_acquire”sbŒc.atomic64_sub_return_acquire”†”asbuh1hhjcôh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MPubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcôh²hh³j‹ôh´MPubhÿ)�”}”(hŒatomic64_sub_return_acquire”h]”j)�”}”(hjˆôh]”hŒatomic64_sub_return_acquire”…”�”}”(hjžôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšôubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjcôh²hh³j‹ôh´MPubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¼ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¾ôŒmodname”NŒ classname”Njwjz)�”}”j}]”j†ôŒc.atomic64_sub_return_acquire”†”asbuh1hhjµôubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµôubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjèôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±ôubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jõŒmodname”NŒ classname”Njwjz)�”}”j}]”j†ôŒc.atomic64_sub_return_acquire”†”asbuh1hhjüôubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjüôubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj/õh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjüôubj)�”}”(hjph]”hŒv”…”�”}”(hj<õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±ôubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjcôh²hh³j‹ôh´MPubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj_ôh²hh³j‹ôh´MPubah}”(h]”jZôah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‹ôh´MPhj\ôh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hjeõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MPhjbõh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj\ôh²hh³j‹ôh´MPubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj}õjHj}õjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_sub_return_acquire() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MThj�õubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj¦õh]”hŒs64 i”…”�”}”(hj¨õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¤õubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MQhj õubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj¿õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j»õh´MQhj¼õubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj õubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j»õh´MQhj�õubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjßõh]”hŒ atomic64_t *v”…”�”}”(hjáõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÝõubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MRhjÙõubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjøõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jôõh´MRhjõõubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÙõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jôõh´MRhj�õubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�õubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MThj�õubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj0öh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0öubhŒ to (”…”�”}”(hj0öh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0öubhŒ - ”…”�”}”(hj0öh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj\öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0öubhŒ) with acquire ordering.”…”�”}”(hj0öh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MShj�õubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_sub_return_acquire() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_sub_return_acquire() there.”…”�”}”(hjuöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MUhj�õubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj†öh]”hŒReturn”…”�”}”(hjˆöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„öubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MWhj�õubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjœöh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¤öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœöubhŒ.”…”�”}”(hjœöh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MXhj�õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_sub_return_release (C function)”Œc.atomic64_sub_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6s64 atomic64_sub_return_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ5s64 atomic64_sub_return_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjàöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jâöŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_sub_return_release”sbŒc.atomic64_sub_return_release”†”asbuh1hhjÙöh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÙöh²hh³j÷h´Mbubhÿ)�”}”(hŒatomic64_sub_return_release”h]”j)�”}”(hjþöh]”hŒatomic64_sub_return_release”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÙöh²hh³j÷h´Mbubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj2÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j4÷Œmodname”NŒ classname”Njwjz)�”}”j}]”jüöŒc.atomic64_sub_return_release”†”asbuh1hhj+÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+÷ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj^÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj'÷ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjy÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjv÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j{÷Œmodname”NŒ classname”Njwjz)�”}”j}]”jüöŒc.atomic64_sub_return_release”†”asbuh1hhjr÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjr÷ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¥÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjr÷ubj)�”}”(hjph]”hŒv”…”�”}”(hj²÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj'÷ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÙöh²hh³j÷h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÕöh²hh³j÷h´Mbubah}”(h]”jÐöah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j÷h´MbhjÒöh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hjÛ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MbhjØ÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÒöh²hh³j÷h´Mbubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjó÷jHjó÷jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_sub_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mfhj÷÷ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjøh]”hŒs64 i”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MchjøubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj5øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j1øh´Mchj2øubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j1øh´Mchjøubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjUøh]”hŒ atomic64_t *v”…”�”}”(hjWøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjSøubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MdhjOøubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjnøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jjøh´Mdhjkøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjOøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jjøh´Mdhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj÷÷ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mfhj÷÷ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¦øh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj®øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦øubhŒ to (”…”�”}”(hj¦øh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÀøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦øubhŒ - ”…”�”}”(hj¦øh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÒøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦øubhŒ) with release ordering.”…”�”}”(hj¦øh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mehj÷÷ubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_sub_return_release() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_sub_return_release() there.”…”�”}”(hjëøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mghj÷÷ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjüøh]”hŒReturn”…”�”}”(hjþøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjúøubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mihj÷÷ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjùh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùubhŒ.”…”�”}”(hjùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mjhj÷÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_sub_return_relaxed (C function)”Œc.atomic64_sub_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6s64 atomic64_sub_return_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ5s64 atomic64_sub_return_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjVùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jXùŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_sub_return_relaxed”sbŒc.atomic64_sub_return_relaxed”†”asbuh1hhjOùh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MuubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjOùh²hh³jwùh´Muubhÿ)�”}”(hŒatomic64_sub_return_relaxed”h]”j)�”}”(hjtùh]”hŒatomic64_sub_return_relaxed”…”�”}”(hjŠùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†ùubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjOùh²hh³jwùh´Muubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¨ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jªùŒmodname”NŒ classname”Njwjz)�”}”j}]”jrùŒc.atomic64_sub_return_relaxed”†”asbuh1hhj¡ùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡ùubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÔùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�ùubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjïùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jñùŒmodname”NŒ classname”Njwjz)�”}”j}]”jrùŒc.atomic64_sub_return_relaxed”†”asbuh1hhjèùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjèùubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjèùubj)�”}”(hjph]”hŒv”…”�”}”(hj(úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�ùubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjOùh²hh³jwùh´Muubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjKùh²hh³jwùh´Muubah}”(h]”jFùah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jwùh´MuhjHùh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hjQúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MuhjNúh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjHùh²hh³jwùh´Muubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjiújHjiújI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_sub_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjsúh]”hŒ Parameters”…”�”}”(hjuúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqúubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Myhjmúubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj’úh]”hŒs64 i”…”�”}”(hj”úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�úubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MvhjŒúubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj«úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j§úh´Mvhj¨úubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŒúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j§úh´Mvhj‰úubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjËúh]”hŒ atomic64_t *v”…”�”}”(hjÍúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÉúubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MwhjÅúubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjäúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jàúh´Mwhjáúubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÅúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jàúh´Mwhj‰úubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjmúubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MyhjmúubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjûh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj$ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûubhŒ to (”…”�”}”(hjûh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj6ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûubhŒ - ”…”�”}”(hjûh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjHûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûubhŒ) with relaxed ordering.”…”�”}”(hjûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MxhjmúubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_sub_return_relaxed() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_sub_return_relaxed() there.”…”�”}”(hjaûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MzhjmúubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjrûh]”hŒReturn”…”�”}”(hjtûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpûubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M|hjmúubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjˆûh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆûubhŒ.”…”�”}”(hjˆûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M}hjmúubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_fetch_sub (C function)”Œc.atomic64_fetch_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-s64 atomic64_fetch_sub (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ,s64 atomic64_fetch_sub(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÌûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÎûŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_sub”sbŒc.atomic64_fetch_sub”†”asbuh1hhjÅûh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅûh²hh³jíûh´M‡ubhÿ)�”}”(hŒatomic64_fetch_sub”h]”j)�”}”(hjêûh]”hŒatomic64_fetch_sub”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüûubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÅûh²hh³jíûh´M‡ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j üŒmodname”NŒ classname”Njwjz)�”}”j}]”jèûŒc.atomic64_fetch_sub”†”asbuh1hhjüubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<üh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjüubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjJüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjüubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjeüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jgüŒmodname”NŒ classname”Njwjz)�”}”j}]”jèûŒc.atomic64_fetch_sub”†”asbuh1hhj^üubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj^üubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‘üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj^üubj)�”}”(hjph]”hŒv”…”�”}”(hjžüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjüubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÅûh²hh³jíûh´M‡ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÁûh²hh³jíûh´M‡ubah}”(h]”j¼ûah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jíûh´M‡hj¾ûh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(hjÇüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‡hjÄüh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¾ûh²hh³jíûh´M‡ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjßüjHjßüjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_sub() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‹hjãüubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjýh]”hŒs64 i”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MˆhjýubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj!ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjAýh]”hŒ atomic64_t *v”…”�”}”(hjCýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj?ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‰hj;ýubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjZýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jVýh´M‰hjWýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj;ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jVýh´M‰hjÿüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjãüubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj|ýh]”hŒ Description”…”�”}”(hj~ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzýubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‹hjãüubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj’ýh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjšýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ýubhŒ to (”…”�”}”(hj’ýh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¬ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ýubhŒ - ”…”�”}”(hj’ýh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¾ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ýubhŒ) with full ordering.”…”�”}”(hj’ýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠhjãüubjM)�”}”(hŒBUnsafe to use in noinstr code; use raw_atomic64_fetch_sub() there.”h]”hŒBUnsafe to use in noinstr code; use raw_atomic64_fetch_sub() there.”…”�”}”(hj×ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŒhjãüubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjèýh]”hŒReturn”…”�”}”(hjêýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæýubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽhjãüubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjþýh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþýubhŒ.”…”�”}”(hjþýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjãüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_sub_acquire (C function)”Œc.atomic64_fetch_sub_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_sub_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_sub_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjBþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jDþŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_sub_acquire”sbŒc.atomic64_fetch_sub_acquire”†”asbuh1hhj;þh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MšubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;þh²hh³jcþh´Mšubhÿ)�”}”(hŒatomic64_fetch_sub_acquire”h]”j)�”}”(hj`þh]”hŒatomic64_fetch_sub_acquire”…”�”}”(hjvþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrþubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj;þh²hh³jcþh´Mšubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj”þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j–þŒmodname”NŒ classname”Njwjz)�”}”j}]”j^þŒc.atomic64_fetch_sub_acquire”†”asbuh1hhj�þubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²þh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�þubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÀþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‰þubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÛþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÝþŒmodname”NŒ classname”Njwjz)�”}”j}]”j^þŒc.atomic64_fetch_sub_acquire”†”asbuh1hhjÔþubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔþubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÔþubj)�”}”(hjph]”hŒv”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‰þubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj;þh²hh³jcþh´Mšubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj7þh²hh³jcþh´Mšubah}”(h]”j2þah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jcþh´Mšhj4þh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hj=ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mšhj:ÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj4þh²hh³jcþh´Mšubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjUÿjHjUÿjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_sub_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj_ÿh]”hŒ Parameters”…”�”}”(hjaÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj]ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MžhjYÿubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj~ÿh]”hŒs64 i”…”�”}”(hj€ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj|ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M›hjxÿubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj—ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j“ÿh´M›hj”ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjxÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j“ÿh´M›hjuÿubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj·ÿh]”hŒ atomic64_t *v”…”�”}”(hj¹ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjµÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mœhj±ÿubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÐÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÌÿh´MœhjÍÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj±ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÌÿh´Mœhjuÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjYÿubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MžhjYÿubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ to (”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ - ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ) with acquire ordering.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjYÿubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_sub_acquire() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_sub_acquire() there.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸhjYÿubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj^h]”hŒReturn”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¡hjYÿubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjth²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjtubhŒ.”…”�”}”(hjth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¢hjYÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_sub_release (C function)”Œc.atomic64_fetch_sub_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_sub_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_sub_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jºŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_sub_release”sbŒc.atomic64_fetch_sub_release”†”asbuh1hhj±h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±h²hh³jÙh´M¬ubhÿ)�”}”(hŒatomic64_fetch_sub_release”h]”j)�”}”(hjÖh]”hŒatomic64_fetch_sub_release”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj±h²hh³jÙh´M¬ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”jÔŒc.atomic64_fetch_sub_release”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÿubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jSŒmodname”NŒ classname”Njwjz)�”}”j}]”jÔŒc.atomic64_fetch_sub_release”†”asbuh1hhjJubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjJubj)�”}”(hjph]”hŒv”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÿubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj±h²hh³jÙh´M¬ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj­h²hh³jÙh´M¬ubah}”(h]”j¨ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÙh´M¬hjªh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¬hj°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjªh²hh³jÙh´M¬ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjËjHjËjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_sub_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M°hjÏubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjôh]”hŒs64 i”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M­hjîubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj-h]”hŒ atomic64_t *v”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M®hj'ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jBh´M®hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jBh´M®hjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÏubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjhh]”hŒ Description”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M°hjÏubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj~h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ubhŒ to (”…”�”}”(hj~h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ubhŒ - ”…”�”}”(hj~h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ubhŒ) with release ordering.”…”�”}”(hj~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¯hjÏubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_sub_release() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_sub_release() there.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M±hjÏubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÔh]”hŒReturn”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³hjÏubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjêh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjêubhŒ.”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´hjÏubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_sub_relaxed (C function)”Œc.atomic64_fetch_sub_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_sub_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j0Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_sub_relaxed”sbŒc.atomic64_fetch_sub_relaxed”†”asbuh1hhj'h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¿ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'h²hh³jOh´M¿ubhÿ)�”}”(hŒatomic64_fetch_sub_relaxed”h]”j)�”}”(hjLh]”hŒatomic64_fetch_sub_relaxed”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj'h²hh³jOh´M¿ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‚Œmodname”NŒ classname”Njwjz)�”}”j}]”jJŒc.atomic64_fetch_sub_relaxed”†”asbuh1hhjyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjuubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÉŒmodname”NŒ classname”Njwjz)�”}”j}]”jJŒc.atomic64_fetch_sub_relaxed”†”asbuh1hhjÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÀubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÀubj)�”}”(hjph]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjuubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj'h²hh³jOh´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj#h²hh³jOh´M¿ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jOh´M¿hj h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¿hj&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj h²hh³jOh´M¿ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjAjHjAjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_sub_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjKh]”hŒ Parameters”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÃhjEubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjjh]”hŒs64 i”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÀhjdubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´MÀhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´MÀhjaubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj£h]”hŒ atomic64_t *v”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÁhj�ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¸h´MÁhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¸h´MÁhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjEubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÃhjEubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjôh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjôubhŒ to (”…”�”}”(hjôh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjôubhŒ - ”…”�”}”(hjôh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjôubhŒ) with relaxed ordering.”…”�”}”(hjôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÂhjEubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_sub_relaxed() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_sub_relaxed() there.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÄhjEubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjJh]”hŒReturn”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÆhjEubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj`h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`ubhŒ.”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÇhjEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_inc (C function)”Œc.atomic64_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ!void atomic64_inc (atomic64_t *v)”h]”hù)�”}”(hŒ void atomic64_inc(atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�h²hh³j¯h´MÑubhÿ)�”}”(hŒ atomic64_inc”h]”j)�”}”(hŒ atomic64_inc”h]”hŒ atomic64_inc”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�h²hh³j¯h´MÑubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jãŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÄsbŒc.atomic64_inc”†”asbuh1hhjÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÚubj)�”}”(hjph]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÖubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�h²hh³j¯h´MÑubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj™h²hh³j¯h´MÑubah}”(h]”j”ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¯h´MÑhj–h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑhjBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–h²hh³j¯h´MÑubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj]jHj]jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÞ**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_inc() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjgh]”hŒ Parameters”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÕhjaubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj†h]”hŒ atomic64_t *v”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÒhj€ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjaubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÔhjaubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj×h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×ubhŒ to (”…”�”}”(hj×h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×ubhŒ + 1) with relaxed ordering.”…”�”}”(hj×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÓhjaubjM)�”}”(hŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mõhj6 ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ h´MõhjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQ h´Mõhj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjw h]”hŒ Description”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hju ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M÷hj ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj� h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj� ubhŒ to (”…”�”}”(hj� h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj� ubhŒ + 1) with acquire ordering.”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Möhj ubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_inc_return_acquire() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_inc_return_acquire() there.”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Møhj ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÑ h]”hŒReturn”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Múhj ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjç h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjç ubhŒ.”…”�”}”(hjç h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mûhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_inc_return_release (C function)”Œc.atomic64_inc_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/s64 atomic64_inc_return_release (atomic64_t *v)”h]”hù)�”}”(hŒ.s64 atomic64_inc_return_release(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj( ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j- Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_inc_return_release”sbŒc.atomic64_inc_return_release”†”asbuh1hhj$ h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$ h²hh³jL h´Mubhÿ)�”}”(hŒatomic64_inc_return_release”h]”j)�”}”(hjI h]”hŒatomic64_inc_return_release”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[ ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj$ h²hh³jL h´Mubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”jG Œc.atomic64_inc_return_release”†”asbuh1hhjv ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjv ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjv ubj)�”}”(hjph]”hŒv”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjv ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjr ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj$ h²hh³jL h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj h²hh³jL h´Mubah}”(h]”j ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jL h´Mhj h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÜ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj h²hh³jL h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj÷ jHj÷ jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_inc_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjû ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj h]”hŒ atomic64_t *v”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j5 h´Mhj6 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j5 h´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjû ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj[ h]”hŒ Description”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjY ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjû ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjq h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjq ubhŒ to (”…”�”}”(hjq h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjq ubhŒ + 1) with release ordering.”…”�”}”(hjq h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjû ubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_inc_return_release() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_inc_return_release() there.”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjû ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjµ h]”hŒReturn”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjû ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjË h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjË ubhŒ.”…”�”}”(hjË h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjû ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_inc_return_relaxed (C function)”Œc.atomic64_inc_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/s64 atomic64_inc_return_relaxed (atomic64_t *v)”h]”hù)�”}”(hŒ.s64 atomic64_inc_return_relaxed(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_inc_return_relaxed”sbŒc.atomic64_inc_return_relaxed”†”asbuh1hhj h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj h²hh³j0 h´Mubhÿ)�”}”(hŒatomic64_inc_return_relaxed”h]”j)�”}”(hj- h]”hŒatomic64_inc_return_relaxed”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj? ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj h²hh³j0 h´Mubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jc Œmodname”NŒ classname”Njwjz)�”}”j}]”j+ Œc.atomic64_inc_return_relaxed”†”asbuh1hhjZ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZ ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjZ ubj)�”}”(hjph]”hŒv”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjV ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj h²hh³j0 h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj h²hh³j0 h´Mubah}”(h]”jÿ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j0 h´Mhj h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÀ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj h²hh³j0 h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÛ jHjÛ jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_inc_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjß ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjh]”hŒ atomic64_t *v”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjþ ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjþ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´Mhjû ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjß ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj?h]”hŒ Description”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjß ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjUh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjUubhŒ to (”…”�”}”(hjUh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjUubhŒ + 1) with relaxed ordering.”…”�”}”(hjUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjß ubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_inc_return_relaxed() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_inc_return_relaxed() there.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjß ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj™h]”hŒReturn”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjß ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj¯h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¯ubhŒ.”…”�”}”(hj¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjß ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_fetch_inc (C function)”Œc.atomic64_fetch_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&s64 atomic64_fetch_inc (atomic64_t *v)”h]”hù)�”}”(hŒ%s64 atomic64_fetch_inc(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jõŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_inc”sbŒc.atomic64_fetch_inc”†”asbuh1hhjìh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M(ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjìh²hh³jh´M(ubhÿ)�”}”(hŒatomic64_fetch_inc”h]”j)�”}”(hjh]”hŒatomic64_fetch_inc”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjìh²hh³jh´M(ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jGŒmodname”NŒ classname”Njwjz)�”}”j}]”jŒc.atomic64_fetch_inc”†”asbuh1hhj>ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj>ubj)�”}”(hjph]”hŒv”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjìh²hh³jh´M(ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjèh²hh³jh´M(ubah}”(h]”jãah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´M(hjåh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M(hj¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjåh²hh³jh´M(ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¿jHj¿jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒõ**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_inc() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M,hjÃubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjèh]”hŒ atomic64_t *v”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M)hjâubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÃubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M+hjÃubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj9h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ubhŒ to (”…”�”}”(hj9h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ubhŒ + 1) with full ordering.”…”�”}”(hj9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M*hjÃubjM)�”}”(hŒBUnsafe to use in noinstr code; use raw_atomic64_fetch_inc() there.”h]”hŒBUnsafe to use in noinstr code; use raw_atomic64_fetch_inc() there.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M,hjÃubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj}h]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M.hjÃubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“ubhŒ.”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/hjÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_inc_acquire (C function)”Œc.atomic64_fetch_inc_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.s64 atomic64_fetch_inc_acquire (atomic64_t *v)”h]”hù)�”}”(hŒ-s64 atomic64_fetch_inc_acquire(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÙŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_inc_acquire”sbŒc.atomic64_fetch_inc_acquire”†”asbuh1hhjÐh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÐh²hh³jøh´M:ubhÿ)�”}”(hŒatomic64_fetch_inc_acquire”h]”j)�”}”(hjõh]”hŒatomic64_fetch_inc_acquire”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÐh²hh³jøh´M:ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j+Œmodname”NŒ classname”Njwjz)�”}”j}]”jóŒc.atomic64_fetch_inc_acquire”†”asbuh1hhj"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj"ubj)�”}”(hjph]”hŒv”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÐh²hh³jøh´M:ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÌh²hh³jøh´M:ubah}”(h]”jÇah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jøh´M:hjÉh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M:hjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÉh²hh³jøh´M:ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj£jHj£jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_inc_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M>hj§ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÌh]”hŒ atomic64_t *v”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M;hjÆubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj§ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M=hj§ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ to (”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ + 1) with acquire ordering.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M<hj§ubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_inc_acquire() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_inc_acquire() there.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M>hj§ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjah]”hŒReturn”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M@hj§ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjwh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwubhŒ.”…”�”}”(hjwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MAhj§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_inc_release (C function)”Œc.atomic64_fetch_inc_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.s64 atomic64_fetch_inc_release (atomic64_t *v)”h]”hù)�”}”(hŒ-s64 atomic64_fetch_inc_release(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j½Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_inc_release”sbŒc.atomic64_fetch_inc_release”†”asbuh1hhj´h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´h²hh³jÜh´MKubhÿ)�”}”(hŒatomic64_fetch_inc_release”h]”j)�”}”(hjÙh]”hŒatomic64_fetch_inc_release”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj´h²hh³jÜh´MKubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j׌c.atomic64_fetch_inc_release”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hjph]”hŒv”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj´h²hh³jÜh´MKubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj°h²hh³jÜh´MKubah}”(h]”j«ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÜh´MKhj­h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKhjlh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj­h²hh³jÜh´MKubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‡jHj‡jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_inc_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MOhj‹ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj°h]”hŒ atomic64_t *v”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MLhjªubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÅh´MLhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÅh´MLhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‹ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MNhj‹ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ to (”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ + 1) with release ordering.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MMhj‹ubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_inc_release() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_inc_release() there.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MOhj‹ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjEh]”hŒReturn”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MQhj‹ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj[h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[ubhŒ.”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MRhj‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_inc_relaxed (C function)”Œc.atomic64_fetch_inc_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.s64 atomic64_fetch_inc_relaxed (atomic64_t *v)”h]”hù)�”}”(hŒ-s64 atomic64_fetch_inc_relaxed(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¡Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_inc_relaxed”sbŒc.atomic64_fetch_inc_relaxed”†”asbuh1hhj˜h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj˜h²hh³jÀh´M]ubhÿ)�”}”(hŒatomic64_fetch_inc_relaxed”h]”j)�”}”(hj½h]”hŒatomic64_fetch_inc_relaxed”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj˜h²hh³jÀh´M]ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jóŒmodname”NŒ classname”Njwjz)�”}”j}]”j»Œc.atomic64_fetch_inc_relaxed”†”asbuh1hhjêubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjêubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjêubj)�”}”(hjph]”hŒv”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjæubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj˜h²hh³jÀh´M]ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj”h²hh³jÀh´M]ubah}”(h]”j�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÀh´M]hj‘h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M]hjPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‘h²hh³jÀh´M]ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjkjHjkjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_inc_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjuh]”hŒ Parameters”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mahjoubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj”h]”hŒ atomic64_t *v”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M^hjŽubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjoubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M`hjoubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjåh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåubhŒ to (”…”�”}”(hjåh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåubhŒ + 1) with relaxed ordering.”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M_hjoubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_inc_relaxed() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_inc_relaxed() there.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MahjoubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj)h]”hŒReturn”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MchjoubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubhŒ.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mdhjoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_dec (C function)”Œc.atomic64_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ!void atomic64_dec (atomic64_t *v)”h]”hù)�”}”(hŒ void atomic64_dec(atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj|h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MnubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|h²hh³jŽh´Mnubhÿ)�”}”(hŒ atomic64_dec”h]”j)�”}”(hŒ atomic64_dec”h]”hŒ atomic64_dec”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj|h²hh³jŽh´Mnubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÂŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj£sbŒc.atomic64_dec”†”asbuh1hhj¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¹ubj)�”}”(hjph]”hŒv”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjµubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj|h²hh³jŽh´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjxh²hh³jŽh´Mnubah}”(h]”jsah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŽh´Mnhjuh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mnhj!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjuh²hh³jŽh´Mnubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj<jHj<jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÞ**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_dec() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjFh]”hŒ Parameters”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mrhj@ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjeh]”hŒ atomic64_t *v”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mohj_ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jzh´Mohj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jzh´Mohj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj@ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mqhj@ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¶h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶ubhŒ to (”…”�”}”(hj¶h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶ubhŒ - 1) with relaxed ordering.”…”�”}”(hj¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mphj@ubjM)�”}”(hŒAtomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjlh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlubhŒ to (”…”�”}”(hjlh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlubhŒ - 1) with acquire ordering.”…”�”}”(hjlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M“hjöubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_dec_return_acquire() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_dec_return_acquire() there.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M•hjöubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj°h]”hŒReturn”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M—hjöubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ.”…”�”}”(hjÆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M˜hjöubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_dec_return_release (C function)”Œc.atomic64_dec_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/s64 atomic64_dec_return_release (atomic64_t *v)”h]”hù)�”}”(hŒ.s64 atomic64_dec_return_release(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_dec_return_release”sbŒc.atomic64_dec_return_release”†”asbuh1hhjh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j+h´M¢ubhÿ)�”}”(hŒatomic64_dec_return_release”h]”j)�”}”(hj(h]”hŒatomic64_dec_return_release”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j+h´M¢ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j^Œmodname”NŒ classname”Njwjz)�”}”j}]”j&Œc.atomic64_dec_return_release”†”asbuh1hhjUubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjUubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjUubj)�”}”(hjph]”hŒv”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjQubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³j+h´M¢ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÿh²hh³j+h´M¢ubah}”(h]”júah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j+h´M¢hjüh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¢hj»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjüh²hh³j+h´M¢ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÖjHjÖjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_dec_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¦hjÚubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÿh]”hŒ atomic64_t *v”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M£hjùubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´M£hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´M£hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÚubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj:h]”hŒ Description”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¥hjÚubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPubhŒ to (”…”�”}”(hjPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPubhŒ - 1) with release ordering.”…”�”}”(hjPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¤hjÚubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_dec_return_release() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_dec_return_release() there.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¦hjÚubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj”h]”hŒReturn”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¨hjÚubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjªh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªubhŒ.”…”�”}”(hjªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M©hjÚubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_dec_return_relaxed (C function)”Œc.atomic64_dec_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/s64 atomic64_dec_return_relaxed (atomic64_t *v)”h]”hù)�”}”(hŒ.s64 atomic64_dec_return_relaxed(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jðŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_dec_return_relaxed”sbŒc.atomic64_dec_return_relaxed”†”asbuh1hhjçh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjçh²hh³jh´M´ubhÿ)�”}”(hŒatomic64_dec_return_relaxed”h]”j)�”}”(hj h]”hŒatomic64_dec_return_relaxed”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjçh²hh³jh´M´ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jBŒmodname”NŒ classname”Njwjz)�”}”j}]”j Œc.atomic64_dec_return_relaxed”†”asbuh1hhj9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj9ubj)�”}”(hjph]”hŒv”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj5ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjçh²hh³jh´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjãh²hh³jh´M´ubah}”(h]”jÞah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´M´hjàh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´hjŸh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjàh²hh³jh´M´ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjºjHjºjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_dec_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸hj¾ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”•h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjãh]”hŒ atomic64_t *v”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MµhjÝubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¾ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M·hj¾ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubhŒ to (”…”�”}”(hj4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubhŒ - 1) with relaxed ordering.”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¶hj¾ubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic64_dec_return_relaxed() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic64_dec_return_relaxed() there.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸hj¾ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjxh]”hŒReturn”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mºhj¾ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjŽh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽubhŒ.”…”�”}”(hjŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M»hj¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_fetch_dec (C function)”Œc.atomic64_fetch_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&s64 atomic64_fetch_dec (atomic64_t *v)”h]”hù)�”}”(hŒ%s64 atomic64_fetch_dec(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÔŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_dec”sbŒc.atomic64_fetch_dec”†”asbuh1hhjËh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÅubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjËh²hh³jóh´MÅubhÿ)�”}”(hŒatomic64_fetch_dec”h]”j)�”}”(hjðh]”hŒatomic64_fetch_dec”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjËh²hh³jóh´MÅubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj! ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j& Œmodname”NŒ classname”Njwjz)�”}”j}]”jîŒc.atomic64_fetch_dec”†”asbuh1hhj ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ubj)�”}”(hjph]”hŒv”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjËh²hh³jóh´MÅubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÇh²hh³jóh´MÅubah}”(h]”jÂah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jóh´MÅhjÄh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÅhjƒ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÄh²hh³jóh´MÅubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjž jHjž jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒõ**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_dec() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÉhj¢ ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÇ h]”hŒ atomic64_t *v”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÅ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÆhjÁ ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¢ ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÈhj¢ ubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj!h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!ubhŒ to (”…”�”}”(hj!h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj2!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!ubhŒ - 1) with full ordering.”…”�”}”(hj!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÇhj¢ ubjM)�”}”(hŒBUnsafe to use in noinstr code; use raw_atomic64_fetch_dec() there.”h]”hŒBUnsafe to use in noinstr code; use raw_atomic64_fetch_dec() there.”…”�”}”(hjK!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÉhj¢ ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj\!h]”hŒReturn”…”�”}”(hj^!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MËhj¢ ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjr!h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjz!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjr!ubhŒ.”…”�”}”(hjr!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌhj¢ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_dec_acquire (C function)”Œc.atomic64_fetch_dec_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.s64 atomic64_fetch_dec_acquire (atomic64_t *v)”h]”hù)�”}”(hŒ-s64 atomic64_fetch_dec_acquire(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¶!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¸!Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_dec_acquire”sbŒc.atomic64_fetch_dec_acquire”†”asbuh1hhj¯!h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M×ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯!h²hh³j×!h´M×ubhÿ)�”}”(hŒatomic64_fetch_dec_acquire”h]”j)�”}”(hjÔ!h]”hŒatomic64_fetch_dec_acquire”…”�”}”(hjê!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæ!ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¯!h²hh³j×!h´M×ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j "Œmodname”NŒ classname”Njwjz)�”}”j}]”jÒ!Œc.atomic64_fetch_dec_acquire”†”asbuh1hhj"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj4"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj"ubj)�”}”(hjph]”hŒv”…”�”}”(hjA"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjý!ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¯!h²hh³j×!h´M×ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj«!h²hh³j×!h´M×ubah}”(h]”j¦!ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j×!h´M×hj¨!h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hjj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M×hjg"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨!h²hh³j×!h´M×ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‚"jHj‚"jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_dec_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÛhj†"ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj«"h]”hŒ atomic64_t *v”…”�”}”(hj­"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj©"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MØhj¥"ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÄ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj†"ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÚhj†"ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjü"h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjü"ubhŒ to (”…”�”}”(hjü"h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjü"ubhŒ - 1) with acquire ordering.”…”�”}”(hjü"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÙhj†"ubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_dec_acquire() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_dec_acquire() there.”…”�”}”(hj/#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÛhj†"ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj@#h]”hŒReturn”…”�”}”(hjB#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝhj†"ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjV#h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj^#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV#ubhŒ.”…”�”}”(hjV#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞhj†"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_dec_release (C function)”Œc.atomic64_fetch_dec_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.s64 atomic64_fetch_dec_release (atomic64_t *v)”h]”hù)�”}”(hŒ-s64 atomic64_fetch_dec_release(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjš#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jœ#Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_dec_release”sbŒc.atomic64_fetch_dec_release”†”asbuh1hhj“#h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MèubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“#h²hh³j»#h´Mèubhÿ)�”}”(hŒatomic64_fetch_dec_release”h]”j)�”}”(hj¸#h]”hŒatomic64_fetch_dec_release”…”�”}”(hjÎ#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊ#ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj“#h²hh³j»#h´Mèubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjì#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jî#Œmodname”NŒ classname”Njwjz)�”}”j}]”j¶#Œc.atomic64_fetch_dec_release”†”asbuh1hhjå#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjå#ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjå#ubj)�”}”(hjph]”hŒv”…”�”}”(hj%$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjå#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjá#ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj“#h²hh³j»#h´Mèubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�#h²hh³j»#h´Mèubah}”(h]”jŠ#ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j»#h´MèhjŒ#h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hjN$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MèhjK$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŒ#h²hh³j»#h´Mèubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjf$jHjf$jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_dec_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjp$h]”hŒ Parameters”…”�”}”(hjr$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjn$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mìhjj$ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj�$h]”hŒ atomic64_t *v”…”�”}”(hj‘$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Méhj‰$ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj¨$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjj$ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mëhjj$ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjà$h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjè$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjà$ubhŒ to (”…”�”}”(hjà$h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjú$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjà$ubhŒ - 1) with release ordering.”…”�”}”(hjà$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mêhjj$ubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_dec_release() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_dec_release() there.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mìhjj$ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj$%h]”hŒReturn”…”�”}”(hj&%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mîhjj$ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj:%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjB%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:%ubhŒ.”…”�”}”(hj:%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mïhjj$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_dec_relaxed (C function)”Œc.atomic64_fetch_dec_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.s64 atomic64_fetch_dec_relaxed (atomic64_t *v)”h]”hù)�”}”(hŒ-s64 atomic64_fetch_dec_relaxed(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj~%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j€%Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_dec_relaxed”sbŒc.atomic64_fetch_dec_relaxed”†”asbuh1hhjw%h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MúubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjw%h²hh³jŸ%h´Múubhÿ)�”}”(hŒatomic64_fetch_dec_relaxed”h]”j)�”}”(hjœ%h]”hŒatomic64_fetch_dec_relaxed”…”�”}”(hj²%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®%ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjw%h²hh³jŸ%h´Múubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÐ%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍ%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÒ%Œmodname”NŒ classname”Njwjz)�”}”j}]”jš%Œc.atomic64_fetch_dec_relaxed”†”asbuh1hhjÉ%ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî%h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉ%ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjü%h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÉ%ubj)�”}”(hjph]”hŒv”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉ%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÅ%ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjw%h²hh³jŸ%h´Múubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjs%h²hh³jŸ%h´Múubah}”(h]”jn%ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŸ%h´Múhjp%h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj2&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Múhj/&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjp%h²hh³jŸ%h´Múubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjJ&jHjJ&jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_dec_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjT&h]”hŒ Parameters”…”�”}”(hjV&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MþhjN&ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjs&h]”hŒ atomic64_t *v”…”�”}”(hju&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjq&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mûhjm&ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjŒ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jˆ&h´Mûhj‰&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjm&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆ&h´Mûhjj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjN&ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MýhjN&ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÄ&h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÌ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄ&ubhŒ to (”…”�”}”(hjÄ&h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÞ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄ&ubhŒ - 1) with relaxed ordering.”…”�”}”(hjÄ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MühjN&ubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_dec_relaxed() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_dec_relaxed() there.”…”�”}”(hj÷&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MþhjN&ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj'h]”hŒReturn”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjN&ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj&'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ.”…”�”}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjN&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_and (C function)”Œc.atomic64_and”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void atomic64_and (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ'void atomic64_and(s64 i, atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj['h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj['h²hh³jm'h´M ubhÿ)�”}”(hŒ atomic64_and”h]”j)�”}”(hŒ atomic64_and”h]”hŒ atomic64_and”…”�”}”(hj€'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|'ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj['h²hh³jm'h´M ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjŸ'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¡'Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‚'sbŒc.atomic64_and”†”asbuh1hhj˜'ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj˜'ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÍ'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj”'ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjè'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjå'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jê'Œmodname”NŒ classname”Njwjz)�”}”j}]”j»'Œc.atomic64_and”†”asbuh1hhjá'ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjá'ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjá'ubj)�”}”(hjph]”hŒv”…”�”}”(hj!(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjá'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj”'ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj['h²hh³jm'h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjW'h²hh³jm'h´M ubah}”(h]”jR'ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jm'h´M hjT'h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hjJ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjG(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjT'h²hh³jm'h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjb(jHjb(jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒù**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_and() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjl(h]”hŒ Parameters”…”�”}”(hjn(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjf(ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj‹(h]”hŒs64 i”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‰(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj…(ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj¤(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÄ(h]”hŒ atomic64_t *v”…”�”}”(hjÆ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÂ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj¾(ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÝ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjf(ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjf(ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj)h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)ubhŒ to (”…”�”}”(hj)h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj/)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)ubhŒ & ”…”�”}”(hj)h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjA)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)ubhŒ) with relaxed ordering.”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjf(ubjM)�”}”(hŒ+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£hjÊ*ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjc+h]”hŒ Description”…”�”}”(hje+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M! hjÊ*ubjM)�”}”(hŒ?Atomically updates **v** to (**v** & **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjy+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy+ubhŒ to (”…”�”}”(hjy+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj“+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy+ubhŒ & ”…”�”}”(hjy+h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¥+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy+ubhŒ) with full ordering.”…”�”}”(hjy+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÊ*ubjM)�”}”(hŒBUnsafe to use in noinstr code; use raw_atomic64_fetch_and() there.”h]”hŒBUnsafe to use in noinstr code; use raw_atomic64_fetch_and() there.”…”�”}”(hj¾+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M" hjÊ*ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÏ+h]”hŒReturn”…”�”}”(hjÑ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M$ hjÊ*ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjå+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjí+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjå+ubhŒ.”…”�”}”(hjå+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M% hjÊ*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_and_acquire (C function)”Œc.atomic64_fetch_and_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_and_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_and_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj),h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j+,Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_and_acquire”sbŒc.atomic64_fetch_and_acquire”†”asbuh1hhj",h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M0 ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj",h²hh³jJ,h´M0 ubhÿ)�”}”(hŒatomic64_fetch_and_acquire”h]”j)�”}”(hjG,h]”hŒatomic64_fetch_and_acquire”…”�”}”(hj],h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY,ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj",h²hh³jJ,h´M0 ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj{,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjx,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j},Œmodname”NŒ classname”Njwjz)�”}”j}]”jE,Œc.atomic64_fetch_and_acquire”†”asbuh1hhjt,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjt,ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj§,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjp,ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÂ,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÄ,Œmodname”NŒ classname”Njwjz)�”}”j}]”jE,Œc.atomic64_fetch_and_acquire”†”asbuh1hhj»,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj»,ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjî,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj»,ubj)�”}”(hjph]”hŒv”…”�”}”(hjû,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjp,ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj",h²hh³jJ,h´M0 ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,h²hh³jJ,h´M0 ubah}”(h]”j,ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jJ,h´M0 hj,h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with acquire ordering”h]”hŒ(atomic bitwise AND with acquire ordering”…”�”}”(hj$-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M0 hj!-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj,h²hh³jJ,h´M0 ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj<-jHj<-jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_and_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjF-h]”hŒ Parameters”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M4 hj@-ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hje-h]”hŒs64 i”…”�”}”(hjg-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjc-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1 hj_-ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj~-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jz-h´M1 hj{-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj_-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jz-h´M1 hj\-ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjž-h]”hŒ atomic64_t *v”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjœ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M2 hj˜-ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj·-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j³-h´M2 hj´-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj˜-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j³-h´M2 hj\-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj@-ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M4 hj@-ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjï-h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj÷-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjï-ubhŒ to (”…”�”}”(hjï-h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjï-ubhŒ & ”…”�”}”(hjï-h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjï-ubhŒ) with acquire ordering.”…”�”}”(hjï-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M3 hj@-ubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_and_acquire() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_and_acquire() there.”…”�”}”(hj4.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M5 hj@-ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjE.h]”hŒReturn”…”�”}”(hjG.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjC.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M7 hj@-ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj[.h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjc.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[.ubhŒ.”…”�”}”(hj[.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M8 hj@-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_and_release (C function)”Œc.atomic64_fetch_and_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_and_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_and_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjŸ.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¡.Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_and_release”sbŒc.atomic64_fetch_and_release”†”asbuh1hhj˜.h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MB ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj˜.h²hh³jÀ.h´MB ubhÿ)�”}”(hŒatomic64_fetch_and_release”h]”j)�”}”(hj½.h]”hŒatomic64_fetch_and_release”…”�”}”(hjÓ.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏ.ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj˜.h²hh³jÀ.h´MB ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjñ.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jó.Œmodname”NŒ classname”Njwjz)�”}”j}]”j».Œc.atomic64_fetch_and_release”†”asbuh1hhjê.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjê.ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjê.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjæ.ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj8/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j:/Œmodname”NŒ classname”Njwjz)�”}”j}]”j».Œc.atomic64_fetch_and_release”†”asbuh1hhj1/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV/h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1/ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjd/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj1/ubj)�”}”(hjph]”hŒv”…”�”}”(hjq/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjæ.ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj˜.h²hh³jÀ.h´MB ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj”.h²hh³jÀ.h´MB ubah}”(h]”j�.ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÀ.h´MB hj‘.h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with release ordering”h]”hŒ(atomic bitwise AND with release ordering”…”�”}”(hjš/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MB hj—/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‘.h²hh³jÀ.h´MB ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj²/jHj²/jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_and_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MF hj¶/ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjÛ/h]”hŒs64 i”…”�”}”(hjÝ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÙ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MC hjÕ/ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjô/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jð/h´MC hjñ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÕ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jð/h´MC hjÒ/ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj0h]”hŒ atomic64_t *v”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MD hj0ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj-0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j)0h´MD hj*0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j)0h´MD hjÒ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¶/ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjO0h]”hŒ Description”…”�”}”(hjQ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MF hj¶/ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hje0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjm0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hje0ubhŒ to (”…”�”}”(hje0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hje0ubhŒ & ”…”�”}”(hje0h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj‘0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hje0ubhŒ) with release ordering.”…”�”}”(hje0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´ME hj¶/ubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_and_release() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_and_release() there.”…”�”}”(hjª0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MG hj¶/ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj»0h]”hŒReturn”…”�”}”(hj½0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MI hj¶/ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÑ0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÙ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑ0ubhŒ.”…”�”}”(hjÑ0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MJ hj¶/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_and_relaxed (C function)”Œc.atomic64_fetch_and_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_and_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_and_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j1Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_and_relaxed”sbŒc.atomic64_fetch_and_relaxed”†”asbuh1hhj1h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MU ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj71h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1h²hh³j61h´MU ubhÿ)�”}”(hŒatomic64_fetch_and_relaxed”h]”j)�”}”(hj31h]”hŒatomic64_fetch_and_relaxed”…”�”}”(hjI1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE1ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj1h²hh³j61h´MU ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjg1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”ji1Œmodname”NŒ classname”Njwjz)�”}”j}]”j11Œc.atomic64_fetch_and_relaxed”†”asbuh1hhj`1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`1ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj“1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj\1ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj®1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j°1Œmodname”NŒ classname”Njwjz)�”}”j}]”j11Œc.atomic64_fetch_and_relaxed”†”asbuh1hhj§1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§1ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÚ1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj§1ubj)�”}”(hjph]”hŒv”…”�”}”(hjç1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj\1ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj1h²hh³j61h´MU ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj 1h²hh³j61h´MU ubah}”(h]”j1ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j61h´MU hj1h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MU hj 2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj1h²hh³j61h´MU ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj(2jHj(2jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_and_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj22h]”hŒ Parameters”…”�”}”(hj42h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj02ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MY hj,2ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjQ2h]”hŒs64 i”…”�”}”(hjS2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjO2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MV hjK2ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jf2h´MV hjg2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjK2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jf2h´MV hjH2ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjŠ2h]”hŒ atomic64_t *v”…”�”}”(hjŒ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjˆ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MW hj„2ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj£2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŸ2h´MW hj 2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj„2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŸ2h´MW hjH2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj,2ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÅ2h]”hŒ Description”…”�”}”(hjÇ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÃ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MY hj,2ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÛ2h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjã2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛ2ubhŒ to (”…”�”}”(hjÛ2h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjõ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛ2ubhŒ & ”…”�”}”(hjÛ2h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛ2ubhŒ) with relaxed ordering.”…”�”}”(hjÛ2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MX hj,2ubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_and_relaxed() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_and_relaxed() there.”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MZ hj,2ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj13h]”hŒReturn”…”�”}”(hj33h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M\ hj,2ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjG3h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjO3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjG3ubhŒ.”…”�”}”(hjG3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M] hj,2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_andnot (C function)”Œc.atomic64_andnot”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void atomic64_andnot (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ*void atomic64_andnot(s64 i, atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjˆ3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj„3h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mg ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„3h²hh³j–3h´Mg ubhÿ)�”}”(hŒatomic64_andnot”h]”j)�”}”(hŒatomic64_andnot”h]”hŒatomic64_andnot”…”�”}”(hj©3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥3ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj„3h²hh³j–3h´Mg ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÈ3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅ3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÊ3Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj«3sbŒc.atomic64_andnot”†”asbuh1hhjÁ3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁ3ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjö3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁ3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj½3ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j4Œmodname”NŒ classname”Njwjz)�”}”j}]”jä3Œc.atomic64_andnot”†”asbuh1hhj 4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj 4ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj=4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj 4ubj)�”}”(hjph]”hŒv”…”�”}”(hjJ4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj 4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj½3ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj„3h²hh³j–3h´Mg ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj€3h²hh³j–3h´Mg ubah}”(h]”j{3ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j–3h´Mg hj}3h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed ordering”…”�”}”(hjs4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mg hjp4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj}3h²hh³j–3h´Mg ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‹4jHj‹4jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒý**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **~i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_andnot() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj•4h]”hŒ Parameters”…”�”}”(hj—4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mk hj�4ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj´4h]”hŒs64 i”…”�”}”(hj¶4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”•`h´Mh hj®4ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjÍ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÉ4h´Mh hjÊ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj®4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÉ4h´Mh hj«4ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjí4h]”hŒ atomic64_t *v”…”�”}”(hjï4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjë4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mi hjç4ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j5h´Mi hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjç4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j5h´Mi hj«4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�4ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj(5h]”hŒ Description”…”�”}”(hj*5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mk hj�4ubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj>5h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjF5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>5ubhŒ to (”…”�”}”(hj>5h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjX5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>5ubhŒ & ”…”�”}”(hj>5h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>5ubhŒ) with relaxed ordering.”…”�”}”(hj>5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mj hj�4ubjM)�”}”(hŒ?Unsafe to use in noinstr code; use raw_atomic64_andnot() there.”h]”hŒ?Unsafe to use in noinstr code; use raw_atomic64_andnot() there.”…”�”}”(hjƒ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Ml hj�4ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj”5h]”hŒReturn”…”�”}”(hj–5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mn hj�4ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjª5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mo hj�4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic64_fetch_andnot (C function)”Œc.atomic64_fetch_andnot”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0s64 atomic64_fetch_andnot (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ/s64 atomic64_fetch_andnot(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÜ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙ5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÞ5Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_andnot”sbŒc.atomic64_fetch_andnot”†”asbuh1hhjÕ5h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´My ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÕ5h²hh³jý5h´My ubhÿ)�”}”(hŒatomic64_fetch_andnot”h]”j)�”}”(hjú5h]”hŒatomic64_fetch_andnot”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj 6ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÕ5h²hh³jý5h´My ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj.6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j06Œmodname”NŒ classname”Njwjz)�”}”j}]”jø5Œc.atomic64_fetch_andnot”†”asbuh1hhj'6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'6ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjZ6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj#6ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hju6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jw6Œmodname”NŒ classname”Njwjz)�”}”j}]”jø5Œc.atomic64_fetch_andnot”†”asbuh1hhjn6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjn6ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¡6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjn6ubj)�”}”(hjph]”hŒv”…”�”}”(hj®6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj#6ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÕ5h²hh³jý5h´My ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÑ5h²hh³jý5h´My ubah}”(h]”jÌ5ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jý5h´My hjÎ5h²hubj4)�”}”(hhh]”jM)�”}”(hŒ)atomic bitwise AND NOT with full ordering”h]”hŒ)atomic bitwise AND NOT with full ordering”…”�”}”(hj×6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´My hjÔ6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÎ5h²hh³jý5h´My ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjï6jHjï6jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **~i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_andnot() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjù6h]”hŒ Parameters”…”�”}”(hjû6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj÷6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M} hjó6ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj7h]”hŒs64 i”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mz hj7ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj17h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j-7h´Mz hj.7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j-7h´Mz hj7ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjQ7h]”hŒ atomic64_t *v”…”�”}”(hjS7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjO7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M{ hjK7ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jf7h´M{ hjg7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjK7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jf7h´M{ hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjó6ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjŒ7h]”hŒ Description”…”�”}”(hjŽ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŠ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M} hjó6ubjM)�”}”(hŒ@Atomically updates **v** to (**v** & **~i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¢7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjª7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢7ubhŒ to (”…”�”}”(hj¢7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¼7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢7ubhŒ & ”…”�”}”(hj¢7h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjÎ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢7ubhŒ) with full ordering.”…”�”}”(hj¢7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M| hjó6ubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic64_fetch_andnot() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic64_fetch_andnot() there.”…”�”}”(hjç7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M~ hjó6ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjø7h]”hŒReturn”…”�”}”(hjú7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M€ hjó6ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hjó6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic64_fetch_andnot_acquire (C function)”Œc.atomic64_fetch_andnot_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8s64 atomic64_fetch_andnot_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ7s64 atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjR8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jT8Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_andnot_acquire”sbŒc.atomic64_fetch_andnot_acquire”†”asbuh1hhjK8h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŒ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjK8h²hh³js8h´MŒ ubhÿ)�”}”(hŒatomic64_fetch_andnot_acquire”h]”j)�”}”(hjp8h]”hŒatomic64_fetch_andnot_acquire”…”�”}”(hj†8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚8ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjK8h²hh³js8h´MŒ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¤8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¦8Œmodname”NŒ classname”Njwjz)�”}”j}]”jn8Œc.atomic64_fetch_andnot_acquire”†”asbuh1hhj�8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�8ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÐ8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj™8ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjë8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jí8Œmodname”NŒ classname”Njwjz)�”}”j}]”jn8Œc.atomic64_fetch_andnot_acquire”†”asbuh1hhjä8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjä8ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjä8ubj)�”}”(hjph]”hŒv”…”�”}”(hj$9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj™8ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjK8h²hh³js8h´MŒ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjG8h²hh³js8h´MŒ ubah}”(h]”jB8ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³js8h´MŒ hjD8h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with acquire ordering”h]”hŒ,atomic bitwise AND NOT with acquire ordering”…”�”}”(hjM9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŒ hjJ9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjD8h²hh³js8h´MŒ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGje9jHje9jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **~i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_andnot_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjo9h]”hŒ Parameters”…”�”}”(hjq9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hji9ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjŽ9h]”hŒs64 i”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hjˆ9ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj§9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j£9h´M� hj¤9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjˆ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j£9h´M� hj…9ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÇ9h]”hŒ atomic64_t *v”…”�”}”(hjÉ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÅ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽ hjÁ9ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjà9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÜ9h´MŽ hjÝ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÁ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÜ9h´MŽ hj…9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hji9ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hji9ubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:ubhŒ to (”…”�”}”(hj:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj2:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:ubhŒ & ”…”�”}”(hj:h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjD:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:ubhŒ) with acquire ordering.”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hji9ubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic64_fetch_andnot_acquire() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic64_fetch_andnot_acquire() there.”…”�”}”(hj]:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‘ hji9ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjn:h]”hŒReturn”…”�”}”(hjp:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M“ hji9ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj„:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„:ubhŒ.”…”�”}”(hj„:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M” hji9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic64_fetch_andnot_release (C function)”Œc.atomic64_fetch_andnot_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8s64 atomic64_fetch_andnot_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ7s64 atomic64_fetch_andnot_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÈ:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅ:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÊ:Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_andnot_release”sbŒc.atomic64_fetch_andnot_release”†”asbuh1hhjÁ:h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mž ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁ:h²hh³jé:h´Mž ubhÿ)�”}”(hŒatomic64_fetch_andnot_release”h]”j)�”}”(hjæ:h]”hŒatomic64_fetch_andnot_release”…”�”}”(hjü:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjø:ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÁ:h²hh³jé:h´Mž ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j;Œmodname”NŒ classname”Njwjz)�”}”j}]”jä:Œc.atomic64_fetch_andnot_release”†”asbuh1hhj;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjF;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj;ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hja;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jc;Œmodname”NŒ classname”Njwjz)�”}”j}]”jä:Œc.atomic64_fetch_andnot_release”†”asbuh1hhjZ;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZ;ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjZ;ubj)�”}”(hjph]”hŒv”…”�”}”(hjš;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj;ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÁ:h²hh³jé:h´Mž ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj½:h²hh³jé:h´Mž ubah}”(h]”j¸:ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jé:h´Mž hjº:h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with release ordering”h]”hŒ,atomic bitwise AND NOT with release ordering”…”�”}”(hjÃ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mž hjÀ;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjº:h²hh³jé:h´Mž ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÛ;jHjÛ;jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **~i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_andnot_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¢ hjß;ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj<h]”hŒs64 i”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸ hjþ;ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj=<h]”hŒ atomic64_t *v”…”�”}”(hj?<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M  hj7<ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjV<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jR<h´M  hjS<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj7<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jR<h´M  hjû;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjß;ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¢ hjß;ubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjŽ<h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj–<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽ<ubhŒ to (”…”�”}”(hjŽ<h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¨<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽ<ubhŒ & ”…”�”}”(hjŽ<h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjº<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽ<ubhŒ) with release ordering.”…”�”}”(hjŽ<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¡ hjß;ubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic64_fetch_andnot_release() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic64_fetch_andnot_release() there.”…”�”}”(hjÓ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M£ hjß;ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjä<h]”hŒReturn”…”�”}”(hjæ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¥ hjß;ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjú<h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjú<ubhŒ.”…”�”}”(hjú<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¦ hjß;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic64_fetch_andnot_relaxed (C function)”Œc.atomic64_fetch_andnot_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8s64 atomic64_fetch_andnot_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ7s64 atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj>=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j@=Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_andnot_relaxed”sbŒc.atomic64_fetch_andnot_relaxed”†”asbuh1hhj7=h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M± ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7=h²hh³j_=h´M± ubhÿ)�”}”(hŒatomic64_fetch_andnot_relaxed”h]”j)�”}”(hj\=h]”hŒatomic64_fetch_andnot_relaxed”…”�”}”(hjr=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn=ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj7=h²hh³j_=h´M± ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j’=Œmodname”NŒ classname”Njwjz)�”}”j}]”jZ=Œc.atomic64_fetch_andnot_relaxed”†”asbuh1hhj‰=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰=ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¼=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj…=ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj×=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔ=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÙ=Œmodname”NŒ classname”Njwjz)�”}”j}]”jZ=Œc.atomic64_fetch_andnot_relaxed”†”asbuh1hhjÐ=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÐ=ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÐ=ubj)�”}”(hjph]”hŒv”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj…=ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj7=h²hh³j_=h´M± ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj3=h²hh³j_=h´M± ubah}”(h]”j.=ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j_=h´M± hj0=h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed ordering”…”�”}”(hj9>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M± hj6>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj0=h²hh³j_=h´M± ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjQ>jHjQ>jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **~i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_andnot_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj[>h]”hŒ Parameters”…”�”}”(hj]>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjY>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mµ hjU>ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjz>h]”hŒs64 i”…”�”}”(hj|>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjx>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M² hjt>ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj“>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�>h´M² hj�>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjt>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�>h´M² hjq>ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj³>h]”hŒ atomic64_t *v”…”�”}”(hjµ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj±>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³ hj­>ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÌ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÈ>h´M³ hjÉ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj­>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÈ>h´M³ hjq>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjU>ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mµ hjU>ubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubhŒ to (”…”�”}”(hj?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubhŒ & ”…”�”}”(hj?h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hj0?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubhŒ) with relaxed ordering.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´ hjU>ubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic64_fetch_andnot_relaxed() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic64_fetch_andnot_relaxed() there.”…”�”}”(hjI?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¶ hjU>ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjZ?h]”hŒReturn”…”�”}”(hj\?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjX?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸ hjU>ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjp?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjx?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjp?ubhŒ.”…”�”}”(hjp?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¹ hjU>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_or (C function)”Œ c.atomic64_or”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'void atomic64_or (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ&void atomic64_or(s64 i, atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj­?h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mà ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­?h²hh³j¿?h´Mà ubhÿ)�”}”(hŒ atomic64_or”h]”j)�”}”(hŒ atomic64_or”h]”hŒ atomic64_or”…”�”}”(hjÒ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎ?ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj­?h²hh³j¿?h´Mà ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjñ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jó?Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÔ?sbŒ c.atomic64_or”†”asbuh1hhjê?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjê?ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjê?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjæ?ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj:@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j<@Œmodname”NŒ classname”Njwjz)�”}”j}]”j @Œ c.atomic64_or”†”asbuh1hhj3@ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3@ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjf@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj3@ubj)�”}”(hjph]”hŒv”…”�”}”(hjs@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjæ?ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj­?h²hh³j¿?h´Mà ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj©?h²hh³j¿?h´Mà ubah}”(h]”j¤?ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¿?h´Mà hj¦?h²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with relaxed ordering”h]”hŒ'atomic bitwise OR with relaxed ordering”…”�”}”(hjœ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mà hj™@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¦?h²hh³j¿?h´Mà ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj´@jHj´@jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒø**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** | **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_or() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÇ hj¸@ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjÝ@h]”hŒs64 i”…”�”}”(hjß@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÛ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÄ hj×@ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjö@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjAh]”hŒ atomic64_t *v”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÅ hjAubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj/Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j+Ah´MÅ hj,Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j+Ah´MÅ hjÔ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¸@ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjQAh]”hŒ Description”…”�”}”(hjSAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOAubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÇ hj¸@ubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjgAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjoAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgAubhŒ to (”…”�”}”(hjgAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgAubhŒ | ”…”�”}”(hjgAh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj“Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgAubhŒ) with relaxed ordering.”…”�”}”(hjgAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÆ hj¸@ubjM)�”}”(hŒ;Unsafe to use in noinstr code; use raw_atomic64_or() there.”h]”hŒ;Unsafe to use in noinstr code; use raw_atomic64_or() there.”…”�”}”(hj¬Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÈ hj¸@ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj½Ah]”hŒReturn”…”�”}”(hj¿Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÊ hj¸@ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjÓAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MË hj¸@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_fetch_or (C function)”Œc.atomic64_fetch_or”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,s64 atomic64_fetch_or (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ+s64 atomic64_fetch_or(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jBŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_or”sbŒc.atomic64_fetch_or”†”asbuh1hhjþAh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÕ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþAh²hh³j&Bh´MÕ ubhÿ)�”}”(hŒatomic64_fetch_or”h]”j)�”}”(hj#Bh]”hŒatomic64_fetch_or”…”�”}”(hj9Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5Bubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjþAh²hh³j&Bh´MÕ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjWBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jYBŒmodname”NŒ classname”Njwjz)�”}”j}]”j!BŒc.atomic64_fetch_or”†”asbuh1hhjPBubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuBh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPBubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjƒBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjLBubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjžBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j BŒmodname”NŒ classname”Njwjz)�”}”j}]”j!BŒc.atomic64_fetch_or”†”asbuh1hhj—BubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj—Bubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÊBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj—Bubj)�”}”(hjph]”hŒv”…”�”}”(hj×Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjLBubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjþAh²hh³j&Bh´MÕ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjúAh²hh³j&Bh´MÕ ubah}”(h]”jõAah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j&Bh´MÕ hj÷Ah²hubj4)�”}”(hhh]”jM)�”}”(hŒ$atomic bitwise OR with full ordering”h]”hŒ$atomic bitwise OR with full ordering”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÕ hjýBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj÷Ah²hh³j&Bh´MÕ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjCjHjCjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** | **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_or() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj"Ch]”hŒ Parameters”…”�”}”(hj$Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÙ hjCubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjACh]”hŒs64 i”…”�”}”(hjCCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj?Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÖ hj;CubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjZCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jVCh´MÖ hjWCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj;Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jVCh´MÖ hj8Cubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjzCh]”hŒ atomic64_t *v”…”�”}”(hj|Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjxCubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M× hjtCubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj“Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�Ch´M× hj�Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjtCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Ch´M× hj8Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjCubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjµCh]”hŒ Description”…”�”}”(hj·Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÙ hjCubjM)�”}”(hŒ?Atomically updates **v** to (**v** | **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjËCh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÓCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËCubhŒ to (”…”�”}”(hjËCh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjåCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËCubhŒ | ”…”�”}”(hjËCh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj÷Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËCubhŒ) with full ordering.”…”�”}”(hjËCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MØ hjCubjM)�”}”(hŒAUnsafe to use in noinstr code; use raw_atomic64_fetch_or() there.”h]”hŒAUnsafe to use in noinstr code; use raw_atomic64_fetch_or() there.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÚ hjCubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj!Dh]”hŒReturn”…”�”}”(hj#Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÜ hjCubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj7Dh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj?Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7DubhŒ.”…”�”}”(hj7Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝ hjCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic64_fetch_or_acquire (C function)”Œc.atomic64_fetch_or_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4s64 atomic64_fetch_or_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ3s64 atomic64_fetch_or_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj{Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjxDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j}DŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_or_acquire”sbŒc.atomic64_fetch_or_acquire”†”asbuh1hhjtDh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mè ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjtDh²hh³jœDh´Mè ubhÿ)�”}”(hŒatomic64_fetch_or_acquire”h]”j)�”}”(hj™Dh]”hŒatomic64_fetch_or_acquire”…”�”}”(hj¯Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«Dubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjtDh²hh³jœDh´Mè ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÍDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÏDŒmodname”NŒ classname”Njwjz)�”}”j}]”j—DŒc.atomic64_fetch_or_acquire”†”asbuh1hhjÆDubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëDh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆDubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjùDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÂDubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jEŒmodname”NŒ classname”Njwjz)�”}”j}]”j—DŒc.atomic64_fetch_or_acquire”†”asbuh1hhj EubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Eubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj@Eh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj Eubj)�”}”(hjph]”hŒv”…”�”}”(hjMEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÂDubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjtDh²hh³jœDh´Mè ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjpDh²hh³jœDh´Mè ubah}”(h]”jkDah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jœDh´Mè hjmDh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with acquire ordering”h]”hŒ'atomic bitwise OR with acquire ordering”…”�”}”(hjvEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mè hjsEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjmDh²hh³jœDh´Mè ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŽEjHjŽEjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** | **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_fetch_or_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj˜Eh]”hŒ Parameters”…”�”}”(hjšEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mì hj’Eubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj·Eh]”hŒs64 i”…”�”}”(hj¹Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjµEubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mé hj±EubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjÐEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÌEh´Mé hjÍEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj±Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÌEh´Mé hj®Eubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjðEh]”hŒ atomic64_t *v”…”�”}”(hjòEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjîEubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mê hjêEubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jFh´Mê hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjêEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jFh´Mê hj®Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj’EubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj+Fh]”hŒ Description”…”�”}”(hj-Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mì hj’EubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjAFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjIFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAFubhŒ to (”…”�”}”(hjAFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj[Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAFubhŒ | ”…”�”}”(hjAFh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjmFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAFubhŒ) with acquire ordering.”…”�”}”(hjAFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Më hj’EubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic64_fetch_or_acquire() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic64_fetch_or_acquire() there.”…”�”}”(hj†Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mí hj’EubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj—Fh]”hŒReturn”…”�”}”(hj™Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mï hj’EubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj­Fh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjµFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj­FubhŒ.”…”�”}”(hj­Fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mð hj’Eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic64_fetch_or_release (C function)”Œc.atomic64_fetch_or_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4s64 atomic64_fetch_or_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ3s64 atomic64_fetch_or_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjñFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jóFŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_or_release”sbŒc.atomic64_fetch_or_release”†”asbuh1hhjêFh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mú ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjêFh²hh³jGh´Mú ubhÿ)�”}”(hŒatomic64_fetch_or_release”h]”j)�”}”(hjGh]”hŒatomic64_fetch_or_release”…”�”}”(hj%Gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!Gubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjêFh²hh³jGh´Mú ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjCGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jEGŒmodname”NŒ classname”Njwjz)�”}”j}]”j GŒc.atomic64_fetch_or_release”†”asbuh1hhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mm hj§VubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjVWh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj^Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVWubhŒ to (”…”�”}”(hjVWh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjpWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVWubhŒ ^ ”…”�”}”(hjVWh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj‚Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVWubhŒ) with relaxed ordering.”…”�”}”(hjVWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Ml hj§VubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_xor_relaxed() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_xor_relaxed() there.”…”�”}”(hj›Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mn hj§VubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¬Wh]”hŒReturn”…”�”}”(hj®Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªWubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mp hj§VubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÂWh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÊWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂWubhŒ.”…”�”}”(hjÂWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mq hj§Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_xchg (C function)”Œc.atomic64_xchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*s64 atomic64_xchg (atomic64_t *v, s64 new)”h]”hù)�”}”(hŒ)s64 atomic64_xchg(atomic64_t *v, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jXŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒ atomic64_xchg”sbŒc.atomic64_xchg”†”asbuh1hhjÿWh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M{ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Xh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿWh²hh³j'Xh´M{ ubhÿ)�”}”(hŒ atomic64_xchg”h]”j)�”}”(hj$Xh]”hŒ atomic64_xchg”…”�”}”(hj:Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6Xubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÿWh²hh³j'Xh´M{ ubj4)�”}”(hŒ(atomic64_t *v, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjXXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jZXŒmodname”NŒ classname”Njwjz)�”}”j}]”j"XŒc.atomic64_xchg”†”asbuh1hhjQXubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvXh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQXubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj„Xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjQXubj)�”}”(hjph]”hŒv”…”�”}”(hj‘Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjMXubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¬Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j®XŒmodname”NŒ classname”Njwjz)�”}”j}]”j"XŒc.atomic64_xchg”†”asbuh1hhj¥XubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊXh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¥Xubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjØXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjMXubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÿWh²hh³j'Xh´M{ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjûWh²hh³j'Xh´M{ ubah}”(h]”jöWah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j'Xh´M{ hjøWh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic exchange with full ordering”h]”hŒ"atomic exchange with full ordering”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M{ hjÿXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjøWh²hh³j'Xh´M{ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjYjHjYjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 new`` s64 value to assign **Description** Atomically updates **v** to **new** with full ordering. Unsafe to use in noinstr code; use raw_atomic64_xchg() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj$Yh]”hŒ Parameters”…”�”}”(hj&Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjYubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjCYh]”hŒ atomic64_t *v”…”�”}”(hjEYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAYubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M| hj=YubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj\Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jXYh´M| hjYYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jXYh´M| hj:Yubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj|Yh]”hŒs64 new”…”�”}”(hj~Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjzYubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M} hjvYubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hj•Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‘Yh´M} hj’Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjvYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‘Yh´M} hj:Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjYubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj·Yh]”hŒ Description”…”�”}”(hj¹Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµYubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjYubjM)�”}”(hŒ7Atomically updates **v** to **new** with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÍYh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÕYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍYubhŒ to ”…”�”}”(hjÍYh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjçYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍYubhŒ with full ordering.”…”�”}”(hjÍYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M~ hjYubjM)�”}”(hŒ=Unsafe to use in noinstr code; use raw_atomic64_xchg() there.”h]”hŒ=Unsafe to use in noinstr code; use raw_atomic64_xchg() there.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M€ hjYubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjZh]”hŒReturn”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‚ hjYubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj'Zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj/Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ZubhŒ.”…”�”}”(hj'Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mƒ hjYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic64_xchg_acquire (C function)”Œc.atomic64_xchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 atomic64_xchg_acquire (atomic64_t *v, s64 new)”h]”hù)�”}”(hŒ1s64 atomic64_xchg_acquire(atomic64_t *v, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjkZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jmZŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_xchg_acquire”sbŒc.atomic64_xchg_acquire”†”asbuh1hhjdZh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdZh²hh³jŒZh´MŽ ubhÿ)�”}”(hŒatomic64_xchg_acquire”h]”j)�”}”(hj‰Zh]”hŒatomic64_xchg_acquire”…”�”}”(hjŸZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›Zubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjdZh²hh³jŒZh´MŽ ubj4)�”}”(hŒ(atomic64_t *v, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj½Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¿ZŒmodname”NŒ classname”Njwjz)�”}”j}]”j‡ZŒc.atomic64_xchg_acquire”†”asbuh1hhj¶ZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¶Zubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjéZh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¶Zubj)�”}”(hjph]”hŒv”…”�”}”(hjöZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶Zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj²Zubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j[Œmodname”NŒ classname”Njwjz)�”}”j}]”j‡ZŒc.atomic64_xchg_acquire”†”asbuh1hhj [ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/[h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj [ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj=[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj [ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj²Zubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjdZh²hh³jŒZh´MŽ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj`Zh²hh³jŒZh´MŽ ubah}”(h]”j[Zah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŒZh´MŽ hj]Zh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with acquire ordering”h]”hŒ%atomic exchange with acquire ordering”…”�”}”(hjg[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽ hjd[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj]Zh²hh³jŒZh´MŽ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj[jHj[jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 new`` s64 value to assign **Description** Atomically updates **v** to **new** with acquire ordering. Unsafe to use in noinstr code; use raw_atomic64_xchg_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M’ hjƒ[ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¨[h]”hŒ atomic64_t *v”…”�”}”(hjª[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¦[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hj¢[ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÁ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hjá[h]”hŒs64 new”…”�”}”(hjã[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjß[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hjÛ[ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjú[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjƒ[ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M’ hjƒ[ubjM)�”}”(hŒ:Atomically updates **v** to **new** with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj2\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj:\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2\ubhŒ to ”…”�”}”(hj2\h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjL\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2\ubhŒ with acquire ordering.”…”�”}”(hj2\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‘ hjƒ[ubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic64_xchg_acquire() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic64_xchg_acquire() there.”…”�”}”(hje\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M“ hjƒ[ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjv\h]”hŒReturn”…”�”}”(hjx\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M• hjƒ[ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjŒ\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj”\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŒ\ubhŒ.”…”�”}”(hjŒ\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M– hjƒ[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic64_xchg_release (C function)”Œc.atomic64_xchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 atomic64_xchg_release (atomic64_t *v, s64 new)”h]”hù)�”}”(hŒ1s64 atomic64_xchg_release(atomic64_t *v, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÐ\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍ\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÒ\Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_xchg_release”sbŒc.atomic64_xchg_release”†”asbuh1hhjÉ\h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M  ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò\h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉ\h²hh³jñ\h´M  ubhÿ)�”}”(hŒatomic64_xchg_release”h]”j)�”}”(hjî\h]”hŒatomic64_xchg_release”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÉ\h²hh³jñ\h´M  ubj4)�”}”(hŒ(atomic64_t *v, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj"]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j$]Œmodname”NŒ classname”Njwjz)�”}”j}]”jì\Œc.atomic64_xchg_release”†”asbuh1hhj]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj]ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjN]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj]ubj)�”}”(hjph]”hŒv”…”�”}”(hj[]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjv]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jx]Œmodname”NŒ classname”Njwjz)�”}”j}]”jì\Œc.atomic64_xchg_release”†”asbuh1hhjo]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjo]ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj¢]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjo]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÉ\h²hh³jñ\h´M  ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÅ\h²hh³jñ\h´M  ubah}”(h]”jÀ\ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jñ\h´M  hjÂ\h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with release ordering”h]”hŒ%atomic exchange with release ordering”…”�”}”(hjÌ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M  hjÉ]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÂ\h²hh³jñ\h´M  ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjä]jHjä]jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 new`` s64 value to assign **Description** Atomically updates **v** to **new** with release ordering. Unsafe to use in noinstr code; use raw_atomic64_xchg_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¤ hjè]ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj ^h]”hŒ atomic64_t *v”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¡ hj^ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj&^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hjF^h]”hŒs64 new”…”�”}”(hjH^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjD^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¢ hj@^ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hj_^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjè]ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¤ hjè]ubjM)�”}”(hŒ:Atomically updates **v** to **new** with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj—^h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŸ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—^ubhŒ to ”…”�”}”(hj—^h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj±^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—^ubhŒ with release ordering.”…”�”}”(hj—^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M£ hjè]ubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic64_xchg_release() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic64_xchg_release() there.”…”�”}”(hjÊ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¥ hjè]ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÛ^h]”hŒReturn”…”�”}”(hjÝ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M§ hjè]ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjñ^h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjù^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñ^ubhŒ.”…”�”}”(hjñ^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¨ hjè]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic64_xchg_relaxed (C function)”Œc.atomic64_xchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 atomic64_xchg_relaxed (atomic64_t *v, s64 new)”h]”hù)�”}”(hŒ1s64 atomic64_xchg_relaxed(atomic64_t *v, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj5_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j7_Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_xchg_relaxed”sbŒc.atomic64_xchg_relaxed”†”asbuh1hhj._h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj._h²hh³jV_h´M³ ubhÿ)�”}”(hŒatomic64_xchg_relaxed”h]”j)�”}”(hjS_h]”hŒatomic64_xchg_relaxed”…”�”}”(hji_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje_ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj._h²hh³jV_h´M³ ubj4)�”}”(hŒ(atomic64_t *v, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj‡_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‰_Œmodname”NŒ classname”Njwjz)�”}”j}]”jQ_Œc.atomic64_xchg_relaxed”†”asbuh1hhj€_ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€_ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj³_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€_ubj)�”}”(hjph]”hŒv”…”�”}”(hjÀ_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|_ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÛ_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÝ_Œmodname”NŒ classname”Njwjz)�”}”j}]”jQ_Œc.atomic64_xchg_relaxed”†”asbuh1hhjÔ_ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔ_ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔ_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|_ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj._h²hh³jV_h´M³ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj*_h²hh³jV_h´M³ ubah}”(h]”j%_ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jV_h´M³ hj'_h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with relaxed ordering”h]”hŒ%atomic exchange with relaxed ordering”…”�”}”(hj1`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³ hj.`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj'_h²hh³jV_h´M³ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjI`jHjI`jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 new`` s64 value to assign **Description** Atomically updates **v** to **new** with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_xchg_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjS`h]”hŒ Parameters”…”�”}”(hjU`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M· hjM`ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjr`h]”hŒ atomic64_t *v”…”�”}”(hjt`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjp`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´ hjl`ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj‹`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‡`h´M´ hjˆ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjl`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‡`h´M´ hji`ubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj«`h]”hŒs64 new”…”�”}”(hj­`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj©`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mµ hj¥`ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjÄ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÀ`h´Mµ hjÁ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¥`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÀ`h´Mµ hji`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjM`ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M· hjM`ubjM)�”}”(hŒ:Atomically updates **v** to **new** with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjü`h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjü`ubhŒ to ”…”�”}”(hjü`h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjü`ubhŒ with relaxed ordering.”…”�”}”(hjü`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¶ hjM`ubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic64_xchg_relaxed() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic64_xchg_relaxed() there.”…”�”}”(hj/ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸ hjM`ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj@ah]”hŒReturn”…”�”}”(hjBah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mº hjM`ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjVah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj^ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVaubhŒ.”…”�”}”(hjVah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”•(h´M» hjM`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_cmpxchg (C function)”Œc.atomic64_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6s64 atomic64_cmpxchg (atomic64_t *v, s64 old, s64 new)”h]”hù)�”}”(hŒ5s64 atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjšah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jœaŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_cmpxchg”sbŒc.atomic64_cmpxchg”†”asbuh1hhj“ah²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÅ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼ah²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“ah²hh³j»ah´MÅ ubhÿ)�”}”(hŒatomic64_cmpxchg”h]”j)�”}”(hj¸ah]”hŒatomic64_cmpxchg”…”�”}”(hjÎah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊaubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj“ah²hh³j»ah´MÅ ubj4)�”}”(hŒ!(atomic64_t *v, s64 old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjìah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jîaŒmodname”NŒ classname”Njwjz)�”}”j}]”j¶aŒc.atomic64_cmpxchg”†”asbuh1hhjåaubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjåaubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjåaubj)�”}”(hjph]”hŒv”…”�”}”(hj%bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjáaubj:)�”}”(hŒs64 old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj@bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jBbŒmodname”NŒ classname”Njwjz)�”}”j}]”j¶aŒc.atomic64_cmpxchg”†”asbuh1hhj9bubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9bubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjlbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjáaubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjˆbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŠbŒmodname”NŒ classname”Njwjz)�”}”j}]”j¶aŒc.atomic64_cmpxchg”†”asbuh1hhj�bubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�bubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj´bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjáaubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj“ah²hh³j»ah´MÅ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�ah²hh³j»ah´MÅ ubah}”(h]”jŠaah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j»ah´MÅ hjŒah²hubj4)�”}”(hhh]”jM)�”}”(hŒ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hjÞbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÅ hjÛbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŒah²hh³j»ah´MÅ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjöbjHjöbjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX•**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 old`` s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic64_cmpxchg() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjch]”hŒ Parameters”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþbubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÉ hjúbubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjch]”hŒ atomic64_t *v”…”�”}”(hj!ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÆ hjcubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj8ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4ch´MÆ hj5cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4ch´MÆ hjcubj©)�”}”(hŒ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hjXch]”hŒs64 old”…”�”}”(hjZch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjVcubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÇ hjRcubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hjqch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmch´MÇ hjncubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmch´MÇ hjcubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj‘ch]”hŒs64 new”…”�”}”(hj“ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�cubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÈ hj‹cubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjªch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¦ch´MÈ hj§cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‹cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¦ch´MÈ hjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjúbubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÌch]”hŒ Description”…”�”}”(hjÎch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊcubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÊ hjúbubjM)�”}”(hŒ‘If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjâch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjêch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâcubhŒ == ”…”�”}”(hjâch²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjüch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâcubhŒ), atomically updates ”…”�”}”(hjâch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâcubhŒ to ”…”�”}”(hjâch²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâcubhŒ with full ordering. Otherwise, ”…”�”}”(hjâch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj2dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâcubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjâch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÉ hjúbubjM)�”}”(hŒ@Unsafe to use in noinstr code; use raw_atomic64_cmpxchg() there.”h]”hŒ@Unsafe to use in noinstr code; use raw_atomic64_cmpxchg() there.”…”�”}”(hjKdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌ hjúbubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj\dh]”hŒReturn”…”�”}”(hj^dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZdubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÎ hjúbubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjrdh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjzdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrdubhŒ.”…”�”}”(hjrdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÏ hjúbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic64_cmpxchg_acquire (C function)”Œc.atomic64_cmpxchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>s64 atomic64_cmpxchg_acquire (atomic64_t *v, s64 old, s64 new)”h]”hù)�”}”(hŒ=s64 atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¶dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¸dŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_cmpxchg_acquire”sbŒc.atomic64_cmpxchg_acquire”†”asbuh1hhj¯dh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÚ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯dh²hh³j×dh´MÚ ubhÿ)�”}”(hŒatomic64_cmpxchg_acquire”h]”j)�”}”(hjÔdh]”hŒatomic64_cmpxchg_acquire”…”�”}”(hjêdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjædubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¯dh²hh³j×dh´MÚ ubj4)�”}”(hŒ!(atomic64_t *v, s64 old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j eŒmodname”NŒ classname”Njwjz)�”}”j}]”jÒdŒc.atomic64_cmpxchg_acquire”†”asbuh1hhjeubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjeubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj4eh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjeubj)�”}”(hjph]”hŒv”…”�”}”(hjAeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjýdubj:)�”}”(hŒs64 old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj\eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j^eŒmodname”NŒ classname”Njwjz)�”}”j}]”jÒdŒc.atomic64_cmpxchg_acquire”†”asbuh1hhjUeubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzeh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjUeubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjˆeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjýdubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¤eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¦eŒmodname”NŒ classname”Njwjz)�”}”j}]”jÒdŒc.atomic64_cmpxchg_acquire”†”asbuh1hhj�eubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂeh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�eubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjÐeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjýdubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¯dh²hh³j×dh´MÚ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj«dh²hh³j×dh´MÚ ubah}”(h]”j¦dah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j×dh´MÚ hj¨dh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(hjúeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÚ hj÷eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨dh²hh³j×dh´MÚ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjfjHjfjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 old`` s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic64_cmpxchg_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjfh]”hŒ Parameters”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞ hjfubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj;fh]”hŒ atomic64_t *v”…”�”}”(hj=fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj9fubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÛ hj5fubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjTfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jPfh´MÛ hjQfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj5fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jPfh´MÛ hj2fubj©)�”}”(hŒ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hjtfh]”hŒs64 old”…”�”}”(hjvfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjrfubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÜ hjnfubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‰fh´MÜ hjŠfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjnfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‰fh´MÜ hj2fubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj­fh]”hŒs64 new”…”�”}”(hj¯fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj«fubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝ hj§fubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjÆfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÂfh´MÝ hjÃfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj§fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÂfh´MÝ hj2fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjfubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjèfh]”hŒ Description”…”�”}”(hjêfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæfubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mß hjfubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjþfh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþfubhŒ == ”…”�”}”(hjþfh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþfubhŒ), atomically updates ”…”�”}”(hjþfh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj*gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþfubhŒ to ”…”�”}”(hjþfh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjs64 atomic64_cmpxchg_release (atomic64_t *v, s64 old, s64 new)”h]”hù)�”}”(hŒ=s64 atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÒgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÔgŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_cmpxchg_release”sbŒc.atomic64_cmpxchg_release”†”asbuh1hhjËgh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mî ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôgh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjËgh²hh³jógh´Mî ubhÿ)�”}”(hŒatomic64_cmpxchg_release”h]”j)�”}”(hjðgh]”hŒatomic64_cmpxchg_release”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjËgh²hh³jógh´Mî ubj4)�”}”(hŒ!(atomic64_t *v, s64 old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj$hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j&hŒmodname”NŒ classname”Njwjz)�”}”j}]”jîgŒc.atomic64_cmpxchg_release”†”asbuh1hhjhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjhubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjPhh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjhubj)�”}”(hjph]”hŒv”…”�”}”(hj]hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjhubj:)�”}”(hŒs64 old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjxhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jzhŒmodname”NŒ classname”Njwjz)�”}”j}]”jîgŒc.atomic64_cmpxchg_release”†”asbuh1hhjqhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjqhubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj¤hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjhubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÀhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÂhŒmodname”NŒ classname”Njwjz)�”}”j}]”jîgŒc.atomic64_cmpxchg_release”†”asbuh1hhj¹hubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹hubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjìhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjhubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjËgh²hh³jógh´Mî ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÇgh²hh³jógh´Mî ubah}”(h]”jÂgah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jógh´Mî hjÄgh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release ordering”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mî hjih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÄgh²hh³jógh´Mî ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj.ijHj.ijI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 old`` s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic64_cmpxchg_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj8ih]”hŒ Parameters”…”�”}”(hj:ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6iubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mò hj2iubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjWih]”hŒ atomic64_t *v”…”�”}”(hjYih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjUiubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mï hjQiubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjpih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jlih´Mï hjmiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jlih´Mï hjNiubj©)�”}”(hŒ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hj�ih]”hŒs64 old”…”�”}”(hj’ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŽiubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mð hjŠiubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hj©ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¥ih´Mð hj¦iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŠiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¥ih´Mð hjNiubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hjÉih]”hŒs64 new”…”�”}”(hjËih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÇiubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mñ hjÃiubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjâih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÞih´Mñ hjßiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÃiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÞih´Mñ hjNiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj2iubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjjh]”hŒ Description”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mó hj2iubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj"jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjubhŒ == ”…”�”}”(hjjh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj4jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjubhŒ), atomically updates ”…”�”}”(hjjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjFjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjubhŒ to ”…”�”}”(hjjh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjXjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjubhŒ# with release ordering. Otherwise, ”…”�”}”(hjjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mò hj2iubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic64_cmpxchg_release() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic64_cmpxchg_release() there.”…”�”}”(hjƒjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mõ hj2iubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj”jh]”hŒReturn”…”�”}”(hj–jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’jubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M÷ hj2iubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjªjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj²jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªjubhŒ.”…”�”}”(hjªjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mø hj2iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic64_cmpxchg_relaxed (C function)”Œc.atomic64_cmpxchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>s64 atomic64_cmpxchg_relaxed (atomic64_t *v, s64 old, s64 new)”h]”hù)�”}”(hŒ=s64 atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjîjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jðjŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_cmpxchg_relaxed”sbŒc.atomic64_cmpxchg_relaxed”†”asbuh1hhjçjh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjçjh²hh³jkh´M ubhÿ)�”}”(hŒatomic64_cmpxchg_relaxed”h]”j)�”}”(hj kh]”hŒatomic64_cmpxchg_relaxed”…”�”}”(hj"kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjçjh²hh³jkh´M ubj4)�”}”(hŒ!(atomic64_t *v, s64 old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj@kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jBkŒmodname”NŒ classname”Njwjz)�”}”j}]”j kŒc.atomic64_cmpxchg_relaxed”†”asbuh1hhj9kubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9kubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjlkh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj9kubj)�”}”(hjph]”hŒv”…”�”}”(hjykh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj5kubj:)�”}”(hŒs64 old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj”kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j–kŒmodname”NŒ classname”Njwjz)�”}”j}]”j kŒc.atomic64_cmpxchg_relaxed”†”asbuh1hhj�kubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�kubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjÀkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj5kubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÜkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÞkŒmodname”NŒ classname”Njwjz)�”}”j}]”j kŒc.atomic64_cmpxchg_relaxed”†”asbuh1hhjÕkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÕkubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj5kubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjçjh²hh³jkh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjãjh²hh³jkh´M ubah}”(h]”jÞjah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jkh´M hjàjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with relaxed ordering”h]”hŒ1atomic compare and exchange with relaxed ordering”…”�”}”(hj2lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj/lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjàjh²hh³jkh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjJljHjJljI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 old`` s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic64_cmpxchg_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjTlh]”hŒ Parameters”…”�”}”(hjVlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRlubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjNlubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjslh]”hŒ atomic64_t *v”…”�”}”(hjulh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjqlubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjmlubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjŒlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jˆlh´M hj‰lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjmlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆlh´M hjjlubj©)�”}”(hŒ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hj¬lh]”hŒs64 old”…”�”}”(hj®lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjªlubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj¦lubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hjÅlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÁlh´M hjÂlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¦lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÁlh´M hjjlubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hjålh]”hŒs64 new”…”�”}”(hjçlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjãlubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjßlubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjþlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³júlh´M hjûlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjßlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³júlh´M hjjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjNlubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj mh]”hŒ Description”…”�”}”(hj"mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjNlubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj6mh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj>mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6mubhŒ == ”…”�”}”(hj6mh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjPmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6mubhŒ), atomically updates ”…”�”}”(hj6mh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjbmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6mubhŒ to ”…”�”}”(hj6mh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjtmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6mubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hj6mh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj†mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6mubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj6mh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjNlubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic64_cmpxchg_relaxed() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic64_cmpxchg_relaxed() there.”…”�”}”(hjŸmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjNlubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj°mh]”hŒReturn”…”�”}”(hj²mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®mubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjNlubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÆmh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÎmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆmubhŒ.”…”�”}”(hjÆmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjNlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!atomic64_try_cmpxchg (C function)”Œc.atomic64_try_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒyh]”hŒ Parameters”…”�”}”(hj@yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(†ubhŒ is negative, ”…”�”}”(hj(†h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjP†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(†ubhŒ otherwise.”…”�”}”(hj(†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mà hj …ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic64_add_negative_release (C function)”Œc.atomic64_add_negative_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9bool atomic64_add_negative_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8bool atomic64_add_negative_release(s64 i, atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj‰†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj…†h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÍ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—†h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…†h²hh³j–†h´MÍ ubhÿ)�”}”(hŒatomic64_add_negative_release”h]”j)�”}”(hŒatomic64_add_negative_release”h]”hŒatomic64_add_negative_release”…”�”}”(hj©†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥†ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj…†h²hh³j–†h´MÍ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjȆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjņubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jʆŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj«†sbŒc.atomic64_add_negative_release”†”asbuh1hhjÁ†ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè†h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁ†ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjö†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁ†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj½†ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‡Œmodname”NŒ classname”Njwjz)�”}”j}]”j䆌c.atomic64_add_negative_release”†”asbuh1hhj ‡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/‡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ‡ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj=‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ‡ubj)�”}”(hjph]”hŒv”…”�”}”(hjJ‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj½†ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj…†h²hh³j–†h´MÍ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�†h²hh³j–†h´MÍ ubah}”(h]”j|†ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j–†h´MÍ hj~†h²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with release ordering”h]”hŒ5atomic add and test if negative with release ordering”…”�”}”(hjs‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÍ hjp‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj~†h²hh³j–†h´MÍ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‹‡jHj‹‡jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXS**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic64_add_negative_release() there. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑ hj�‡ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj´‡h]”hŒs64 i”…”�”}”(hj¶‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÎ hj®‡ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj͇h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjí‡h]”hŒ atomic64_t *v”…”�”}”(hjï‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjë‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÏ hjç‡ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj�‡ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑ hj�‡ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj>ˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjFˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ˆubhŒ to (”…”�”}”(hj>ˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjXˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ˆubhŒ + ”…”�”}”(hj>ˆh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ˆubhŒ) with release ordering.”…”�”}”(hj>ˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐ hj�‡ubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic64_add_negative_release() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic64_add_negative_release() there.”…”�”}”(hjƒˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÒ hj�‡ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj”ˆh]”hŒReturn”…”�”}”(hj–ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÔ hj�‡ubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj®ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªˆubhŒ if the resulting value of ”…”�”}”(hjªˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÀˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªˆubhŒ is negative, ”…”�”}”(hjªˆh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjÒˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªˆubhŒ otherwise.”…”�”}”(hjªˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÕ hj�‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic64_add_negative_relaxed (C function)”Œc.atomic64_add_negative_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9bool atomic64_add_negative_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8bool atomic64_add_negative_relaxed(s64 i, atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‰h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mà ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰h²hh³j‰h´Mà ubhÿ)�”}”(hŒatomic64_add_negative_relaxed”h]”j)�”}”(hŒatomic64_add_negative_relaxed”h]”hŒatomic64_add_negative_relaxed”…”�”}”(hj+‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'‰ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‰h²hh³j‰h´Mà ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjJ‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjG‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jL‰Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj-‰sbŒc.atomic64_add_negative_relaxed”†”asbuh1hhjC‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjC‰ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjx‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjC‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?‰ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj“‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j•‰Œmodname”NŒ classname”Njwjz)�”}”j}]”jf‰Œc.atomic64_add_negative_relaxed”†”asbuh1hhjŒ‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŒ‰ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¿‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŒ‰ubj)�”}”(hjph]”hŒv”…”�”}”(hj̉h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒ‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?‰ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‰h²hh³j‰h´Mà ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‰h²hh³j‰h´Mà ubah}”(h]”jþˆah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‰h´Mà hj‰h²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with relaxed ordering”h]”hŒ5atomic add and test if negative with relaxed ordering”…”�”}”(hjõ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mà hjò‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‰h²hh³j‰h´Mà ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj ŠjHj ŠjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXS**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic64_add_negative_relaxed() there. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mä hjŠubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj6Šh]”hŒs64 i”…”�”}”(hj8Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Má hj0ŠubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hjOŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jKŠh´Má hjLŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jKŠh´Má hj-Šubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjoŠh]”hŒ atomic64_t *v”…”�”}”(hjqŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjmŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mâ hjiŠubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjˆŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j„Šh´Mâ hj…Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjiŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„Šh´Mâ hj-Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjŠubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mä hjŠubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÀŠh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÈŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀŠubhŒ to (”…”�”}”(hjÀŠh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÚŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀŠubhŒ + ”…”�”}”(hjÀŠh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjìŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀŠubhŒ) with relaxed ordering.”…”�”}”(hjÀŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mã hjŠubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic64_add_negative_relaxed() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic64_add_negative_relaxed() there.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Må hjŠubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj‹h]”hŒReturn”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mç hjŠubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj0‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,‹ubhŒ if the resulting value of ”…”�”}”(hj,‹h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjB‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,‹ubhŒ is negative, ”…”�”}”(hj,‹h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjT‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,‹ubhŒ otherwise.”…”�”}”(hj,‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mè hjŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic64_fetch_add_unless (C function)”Œc.atomic64_fetch_add_unless”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;s64 atomic64_fetch_add_unless (atomic64_t *v, s64 a, s64 u)”h]”hù)�”}”(hŒ:s64 atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj�‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j’‹Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_add_unless”sbŒc.atomic64_fetch_add_unless”†”asbuh1hhj‰‹h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mò ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²‹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰‹h²hh³j±‹h´Mò ubhÿ)�”}”(hŒatomic64_fetch_add_unless”h]”j)�”}”(hj®‹h]”hŒatomic64_fetch_add_unless”…”�”}”(hjÄ‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ‹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‰‹h²hh³j±‹h´Mò ubj4)�”}”(hŒ(atomic64_t *v, s64 a, s64 u)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjâ‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjß‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j䋌modname”NŒ classname”Njwjz)�”}”j}]”j¬‹Œc.atomic64_fetch_add_unless”†”asbuh1hhjÛ‹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛ‹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÛ‹ubj)�”}”(hjph]”hŒv”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛ‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj׋ubj:)�”}”(hŒs64 a”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj6Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j8ŒŒmodname”NŒ classname”Njwjz)�”}”j}]”j¬‹Œc.atomic64_fetch_add_unless”†”asbuh1hhj/ŒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTŒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/Œubj)�”}”(hj¯Ãh]”hŒa”…”�”}”(hjbŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj׋ubj:)�”}”(hŒs64 u”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj}Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒŒmodname”NŒ classname”Njwjz)�”}”j}]”j¬‹Œc.atomic64_fetch_add_unless”†”asbuh1hhjvŒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Œh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjvŒubj)�”}”(hj÷lh]”hŒu”…”�”}”(hj©Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj׋ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‰‹h²hh³j±‹h´Mò ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj…‹h²hh³j±‹h´Mò ubah}”(h]”j€‹ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j±‹h´Mò hj‚‹h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hjÒŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mò hjÏŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‚‹h²hh³j±‹h´Mò ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjêŒjHjêŒjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX�**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 a`` s64 value to add ``s64 u`` s64 value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic64_fetch_add_unless() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mö hjîŒubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj�h]”hŒ atomic64_t *v”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mó hj �ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``s64 a`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 a``”h]”jS)�”}”(hjL�h]”hŒs64 a”…”�”}”(hjN�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mô hjF�ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hje�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ja�h´Mô hjb�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjF�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ja�h´Mô hj �ubj©)�”}”(hŒ$``s64 u`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 u``”h]”jS)�”}”(hj…�h]”hŒs64 u”…”�”}”(hj‡�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mõ hj�ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjîŒubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”•h´M÷ hjîŒubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjÖ�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÞ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ�ubhŒ != ”…”�”}”(hjÖ�h²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hjð�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ�ubhŒ), atomically updates ”…”�”}”(hjÖ�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ�ubhŒ to (”…”�”}”(hjÖ�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ�ubhŒ + ”…”�”}”(hjÖ�h²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hj&Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ�ubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjÖ�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ�ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjÖ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mö hjîŒubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic64_fetch_add_unless() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic64_fetch_add_unless() there.”…”�”}”(hjQŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mù hjîŒubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjbŽh]”hŒReturn”…”�”}”(hjdŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mû hjîŒubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjxŽh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxŽubhŒ.”…”�”}”(hjxŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mü hjîŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic64_add_unless (C function)”Œc.atomic64_add_unless”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6bool atomic64_add_unless (atomic64_t *v, s64 a, s64 u)”h]”hù)�”}”(hŒ5bool atomic64_add_unless(atomic64_t *v, s64 a, s64 u)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj¹Žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµŽh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇŽh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµŽh²hh³jÆŽh´M ubhÿ)�”}”(hŒatomic64_add_unless”h]”j)�”}”(hŒatomic64_add_unless”h]”hŒatomic64_add_unless”…”�”}”(hjÙŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕŽubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjµŽh²hh³jÆŽh´M ubj4)�”}”(hŒ(atomic64_t *v, s64 a, s64 u)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjøŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”júŽŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÛŽsbŒc.atomic64_add_unless”†”asbuh1hhjñŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjñŽubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj&�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjñŽubj)�”}”(hjph]”hŒv”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjíŽubj:)�”}”(hŒs64 a”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjN�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jP�Œmodname”NŒ classname”Njwjz)�”}”j}]”j�Œc.atomic64_add_unless”†”asbuh1hhjG�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjG�ubj)�”}”(hj¯Ãh]”hŒa”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjG�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjíŽubj:)�”}”(hŒs64 u”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj•�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j—�Œmodname”NŒ classname”Njwjz)�”}”j}]”j�Œc.atomic64_add_unless”†”asbuh1hhjŽ�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽ�ubj)�”}”(hj÷lh]”hŒu”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjíŽubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjµŽh²hh³jÆŽh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj±Žh²hh³jÆŽh´M ubah}”(h]”j¬Žah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÆŽh´M hj®Žh²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjç�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj®Žh²hh³jÆŽh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�jHj�jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX®**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 a`` s64 value to add ``s64 u`` s64 value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic64_add_unless() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj�ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj+�h]”hŒ atomic64_t *v”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj)�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj%�ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjD�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@�h´M hjA�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j@�h´M hj"�ubj©)�”}”(hŒ``s64 a`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 a``”h]”jS)�”}”(hjd�h]”hŒs64 a”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjb�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj^�ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj}�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``s64 u`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 u``”h]”jS)�”}”(hj��h]”hŒs64 u”…”�”}”(hjŸ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj›�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj—�ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hj¶�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj�ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj�ubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjî�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjö�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjî�ubhŒ != ”…”�”}”(hjî�h²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjî�ubhŒ), atomically updates ”…”�”}”(hjî�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjî�ubhŒ to (”…”�”}”(hjî�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj,‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjî�ubhŒ + ”…”�”}”(hjî�h²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hj>‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjî�ubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjî�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjP‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjî�ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjî�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj�ubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic64_add_unless() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic64_add_unless() there.”…”�”}”(hji‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj�ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjz‘h]”hŒReturn”…”�”}”(hj|‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj�ubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj”‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�‘ubhŒ if ”…”�”}”(hj�‘h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¦‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�‘ubhŒ was updated, ”…”�”}”(hj�‘h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj¸‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�‘ubhŒ otherwise.”…”�”}”(hj�‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic64_inc_not_zero (C function)”Œc.atomic64_inc_not_zero”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*bool atomic64_inc_not_zero (atomic64_t *v)”h]”hù)�”}”(hŒ)bool atomic64_inc_not_zero(atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjñ‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjí‘h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjí‘h²hh³jþ‘h´M ubhÿ)�”}”(hŒatomic64_inc_not_zero”h]”j)�”}”(hŒatomic64_inc_not_zero”h]”hŒatomic64_inc_not_zero”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ’ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjí‘h²hh³jþ‘h´M ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj0’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j2’Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj’sbŒc.atomic64_inc_not_zero”†”asbuh1hhj)’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP’h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)’ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj^’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj)’ubj)�”}”(hjph]”hŒv”…”�”}”(hjk’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj%’ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjí‘h²hh³jþ‘h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjé‘h²hh³jþ‘h´M ubah}”(h]”jä‘ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jþ‘h´M hjæ‘h²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic increment unless zero with full ordering”h]”hŒ/atomic increment unless zero with full ordering”…”�”}”(hj”’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj‘’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjæ‘h²hh³jþ‘h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¬’jHj¬’jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXc**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic64_inc_not_zero() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj°’ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÕ’h]”hŒ atomic64_t *v”…”�”}”(hj×’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÓ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÏ’ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjî’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj°’ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj°’ubjM)�”}”(hŒ�If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj&“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj.“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&“ubhŒ != 0), atomically updates ”…”�”}”(hj&“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj@“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&“ubhŒ to (”…”�”}”(hj&“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjR“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&“ubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hj&“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjd“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&“ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj&“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj°’ubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic64_inc_not_zero() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic64_inc_not_zero() there.”…”�”}”(hj}“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M! hj°’ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjŽ“h]”hŒReturn”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŒ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M# hj°’ubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj¨“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤“ubhŒ if ”…”�”}”(hj¤“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjº“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤“ubhŒ was updated, ”…”�”}”(hj¤“h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjÌ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤“ubhŒ otherwise.”…”�”}”(hj¤“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M$ hj°’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)atomic64_inc_unless_negative (C function)”Œc.atomic64_inc_unless_negative”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool atomic64_inc_unless_negative (atomic64_t *v)”h]”hù)�”}”(hŒ0bool atomic64_inc_unless_negative(atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj”h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj”h²hh³j”h´M/ ubhÿ)�”}”(hŒatomic64_inc_unless_negative”h]”j)�”}”(hŒatomic64_inc_unless_negative”h]”hŒatomic64_inc_unless_negative”…”�”}”(hj%”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!”ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj”h²hh³j”h´M/ ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjD”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjA”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jF”Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj'”sbŒc.atomic64_inc_unless_negative”†”asbuh1hhj=”ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj=”ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjr”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj=”ubj)�”}”(hjph]”hŒv”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj9”ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj”h²hh³j”h´M/ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjý“h²hh³j”h´M/ ubah}”(h]”jø“ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j”h´M/ hjú“h²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic increment unless negative with full ordering”h]”hŒ3atomic increment unless negative with full ordering”…”�”}”(hj¨”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/ hj¥”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjú“h²hh³j”h´M/ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÀ”jHjÀ”jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXj**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic64_inc_unless_negative() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M3 hjÄ”ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjé”h]”hŒ atomic64_t *v”…”�”}”(hjë”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjç”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M0 hjã”ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jþ”h´M0 hjÿ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjã”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jþ”h´M0 hjà”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÄ”ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M2 hjÄ”ubjM)�”}”(hŒ�If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj:•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjB•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:•ubhŒ >= 0), atomically updates ”…”�”}”(hj:•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjT•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:•ubhŒ to (”…”�”}”(hj:•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjf•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:•ubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hj:•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjx•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:•ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj:•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1 hjÄ”ubjM)�”}”(hŒLUnsafe to use in noinstr code; use raw_atomic64_inc_unless_negative() there.”h]”hŒLUnsafe to use in noinstr code; use raw_atomic64_inc_unless_negative() there.”…”�”}”(hj‘•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M4 hjÄ”ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¢•h]”hŒReturn”…”�”}”(hj¤•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj •ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M6 hjÄ”ubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj¼•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸•ubhŒ if ”…”�”}”(hj¸•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjΕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸•ubhŒ was updated, ”…”�”}”(hj¸•h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjà•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸•ubhŒ otherwise.”…”�”}”(hj¸•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M7 hjÄ”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)atomic64_dec_unless_positive (C function)”Œc.atomic64_dec_unless_positive”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool atomic64_dec_unless_positive (atomic64_t *v)”h]”hù)�”}”(hŒ0bool atomic64_dec_unless_positive(atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj–h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MB ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj–h²hh³j&–h´MB ubhÿ)�”}”(hŒatomic64_dec_unless_positive”h]”j)�”}”(hŒatomic64_dec_unless_positive”h]”hŒatomic64_dec_unless_positive”…”�”}”(hj9–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj–h²hh³j&–h´MB ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjX–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjU–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jZ–Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj;–sbŒc.atomic64_dec_unless_positive”†”asbuh1hhjQ–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQ–ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj†–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjQ–ubj)�”}”(hjph]”hŒv”…”�”}”(hj“–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQ–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjM–ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj–h²hh³j&–h´MB ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj–h²hh³j&–h´MB ubah}”(h]”j –ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j&–h´MB hj–h²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic decrement unless positive with full ordering”h]”hŒ3atomic decrement unless positive with full ordering”…”�”}”(hj¼–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MB hj¹–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–h²hh³j&–h´MB ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÔ–jHjÔ–jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXj**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** If (**v** <= 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic64_dec_unless_positive() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MF hjØ–ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjý–h]”hŒ atomic64_t *v”…”�”}”(hjÿ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjû–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MC hj÷–ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j—h´MC hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj÷–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j—h´MC hjô–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjØ–ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj8—h]”hŒ Description”…”�”}”(hj:—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´ME hjØ–ubjM)�”}”(hŒ�If (**v** <= 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjN—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjV—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN—ubhŒ <= 0), atomically updates ”…”�”}”(hjN—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN—ubhŒ to (”…”�”}”(hjN—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjz—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN—ubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hjN—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN—ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjN—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MD hjØ–ubjM)�”}”(hŒLUnsafe to use in noinstr code; use raw_atomic64_dec_unless_positive() there.”h]”hŒLUnsafe to use in noinstr code; use raw_atomic64_dec_unless_positive() there.”…”�”}”(hj¥—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MG hjØ–ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¶—h]”hŒReturn”…”�”}”(hj¸—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MI hjØ–ubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjЗh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌ—ubhŒ if ”…”�”}”(hjÌ—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjâ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌ—ubhŒ was updated, ”…”�”}”(hjÌ—h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjô—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌ—ubhŒ otherwise.”…”�”}”(hjÌ—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MJ hjØ–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic64_dec_if_positive (C function)”Œc.atomic64_dec_if_positive”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,s64 atomic64_dec_if_positive (atomic64_t *v)”h]”hù)�”}”(hŒ+s64 atomic64_dec_if_positive(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj0˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j2˜Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_dec_if_positive”sbŒc.atomic64_dec_if_positive”†”asbuh1hhj)˜h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MU ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR˜h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)˜h²hh³jQ˜h´MU ubhÿ)�”}”(hŒatomic64_dec_if_positive”h]”j)�”}”(hjN˜h]”hŒatomic64_dec_if_positive”…”�”}”(hjd˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`˜ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj)˜h²hh³jQ˜h´MU ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj‚˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j„˜Œmodname”NŒ classname”Njwjz)�”}”j}]”jL˜Œc.atomic64_dec_if_positive”†”asbuh1hhj{˜ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ˜h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{˜ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj®˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj{˜ubj)�”}”(hjph]”hŒv”…”�”}”(hj»˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjw˜ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj)˜h²hh³jQ˜h´MU ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj%˜h²hh³jQ˜h´MU ubah}”(h]”j ˜ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jQ˜h´MU hj"˜h²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic decrement if positive with full ordering”h]”hŒ/atomic decrement if positive with full ordering”…”�”}”(hjä˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MU hjá˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj"˜h²hh³jQ˜h´MU ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjü˜jHjü˜jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXx**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** If (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic64_dec_if_positive() there. **Return** The old value of (**v** - 1), regardless of whether **v** was updated.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MY hj™ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj%™h]”hŒ atomic64_t *v”…”�”}”(hj'™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj#™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MV hj™ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj>™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j:™h´MV hj;™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j:™h´MV hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj™ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj`™h]”hŒ Description”…”�”}”(hjb™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MX hj™ubjM)�”}”(hŒŽIf (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjv™h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj~™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjv™ubhŒ > 0), atomically updates ”…”�”}”(hjv™h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjv™ubhŒ to (”…”�”}”(hjv™h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¢™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjv™ubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hjv™h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj´™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjv™ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjv™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MW hj™ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic64_dec_if_positive() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic64_dec_if_positive() there.”…”�”}”(hjÍ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MZ hj™ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÞ™h]”hŒReturn”…”�”}”(hjà™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M\ hj™ubjM)�”}”(hŒFThe old value of (**v** - 1), regardless of whether **v** was updated.”h]”(hŒThe old value of (”…”�”}”(hjô™h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjü™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjô™ubhŒ - 1), regardless of whether ”…”�”}”(hjô™h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjô™ubhŒ was updated.”…”�”}”(hjô™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M] hj™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_long_read (C function)”Œc.atomic_long_read”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.long atomic_long_read (const atomic_long_t *v)”h]”hù)�”}”(hŒ-long atomic_long_read(const atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjGšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjCšh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mh ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCšh²hh³jUšh´Mh ubhÿ)�”}”(hŒatomic_long_read”h]”j)�”}”(hŒatomic_long_read”h]”hŒatomic_long_read”…”�”}”(hjhšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdšubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjCšh²hh³jUšh´Mh ubj4)�”}”(hŒ(const atomic_long_t *v)”h]”j:)�”}”(hŒconst atomic_long_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj„šh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj€šubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘šh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€šubh)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj¢šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¤šŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjjšsbŒc.atomic_long_read”†”asbuh1hhj€šubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€šubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjКh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€šubj)�”}”(hjph]”hŒv”…”�”}”(hjÝšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj|šubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjCšh²hh³jUšh´Mh ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj?šh²hh³jUšh´Mh ubah}”(h]”j:šah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jUšh´Mh hj<šh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with relaxed ordering”h]”hŒ!atomic load with relaxed ordering”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mh hj›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj<šh²hh³jUšh´Mh ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj›jHj›jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒþ**Parameters** ``const atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically loads the value of **v** with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_read() there. **Return** The value loaded from **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Ml hj"›ubj¤)�”}”(hhh]”j©)�”}”(hŒ4``const atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``const atomic_long_t *v``”h]”jS)�”}”(hjG›h]”hŒconst atomic_long_t *v”…”�”}”(hjI›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjE›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mi hjA›ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj`›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j\›h´Mi hj]›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjA›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j\›h´Mi hj>›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj"›ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mk hj"›ubjM)�”}”(hŒ:Atomically loads the value of **v** with relaxed ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hj˜›h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˜›ubhŒ with relaxed ordering.”…”�”}”(hj˜›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mj hj"›ubjM)�”}”(hŒ@Unsafe to use in noinstr code; use raw_atomic_long_read() there.”h]”hŒ@Unsafe to use in noinstr code; use raw_atomic_long_read() there.”…”�”}”(hj¹›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Ml hj"›ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÊ›h]”hŒReturn”…”�”}”(hjÌ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mn hj"›ubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hjà›h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjè›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjà›ubhŒ.”…”�”}”(hjà›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mo hj"›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_long_read_acquire (C function)”Œc.atomic_long_read_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6long atomic_long_read_acquire (const atomic_long_t *v)”h]”hù)�”}”(hŒ5long atomic_long_read_acquire(const atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj!œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjœh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´My ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0œh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœh²hh³j/œh´My ubhÿ)�”}”(hŒatomic_long_read_acquire”h]”j)�”}”(hŒatomic_long_read_acquire”h]”hŒatomic_long_read_acquire”…”�”}”(hjBœh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>œubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjœh²hh³j/œh´My ubj4)�”}”(hŒ(const atomic_long_t *v)”h]”j:)�”}”(hŒconst atomic_long_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj^œh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjZœubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkœh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZœubh)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj|œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j~œŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjDœsbŒc.atomic_long_read_acquire”†”asbuh1hhjZœubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœœh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZœubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjªœh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjZœubj)�”}”(hjph]”hŒv”…”�”}”(hj·œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjVœubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjœh²hh³j/œh´My ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjœh²hh³j/œh´My ubah}”(h]”jœah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j/œh´My hjœh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with acquire ordering”h]”hŒ!atomic load with acquire ordering”…”�”}”(hjàœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´My hjÝœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjœh²hh³j/œh´My ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjøœjHjøœjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``const atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically loads the value of **v** with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_read_acquire() there. **Return** The value loaded from **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M} hjüœubj¤)�”}”(hhh]”j©)�”}”(hŒ4``const atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``const atomic_long_t *v``”h]”jS)�”}”(hj!�h]”hŒconst atomic_long_t *v”…”�”}”(hj#�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mz hj�ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj:�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6�h´Mz hj7�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6�h´Mz hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjüœubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj\�h]”hŒ Description”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M| hjüœubjM)�”}”(hŒ:Atomically loads the value of **v** with acquire ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hjr�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjr�ubhŒ with acquire ordering.”…”�”}”(hjr�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M{ hjüœubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_long_read_acquire() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_long_read_acquire() there.”…”�”}”(hj“�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M} hjüœubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¤�h]”hŒReturn”…”�”}”(hj¦�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjüœubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hjº�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÂ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjº�ubhŒ.”…”�”}”(hjº�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M€ hjüœubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_long_set (C function)”Œc.atomic_long_set”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void atomic_long_set (atomic_long_t *v, long i)”h]”hù)�”}”(hŒ.void atomic_long_set(atomic_long_t *v, long i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjû�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj÷�h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷�h²hh³j žh´MŠ ubhÿ)�”}”(hŒatomic_long_set”h]”j)�”}”(hŒatomic_long_set”h]”hŒatomic_long_set”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj÷�h²hh³j žh´MŠ ubj4)�”}”(hŒ(atomic_long_t *v, long i)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj;žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j=žŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjžsbŒc.atomic_long_set”†”asbuh1hhj4žubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4žubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjižh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj4žubj)�”}”(hjph]”hŒv”…”�”}”(hjvžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0žubj:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjŽžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŠžubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœžh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠžubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjªžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0žubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj÷�h²hh³j žh´MŠ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjó�h²hh³j žh´MŠ ubah}”(h]”jî�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j žh´MŠ hjð�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with relaxed ordering”h]”hŒ atomic set with relaxed ordering”…”�”}”(hjÓžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠ hjОh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjð�h²hh³j žh´MŠ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjëžjHjëžjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long i`` long value to assign **Description** Atomically sets **v** to **i** with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_set() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽ hjïžubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjŸh]”hŒatomic_long_t *v”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‹ hjŸubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj-Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``long i`` long value to assign ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjMŸh]”hŒlong i”…”�”}”(hjOŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŒ hjGŸubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjfŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jbŸh´MŒ hjcŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbŸh´MŒ hj Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjïžubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽ hjïžubjM)�”}”(hŒ5Atomically sets **v** to **i** with relaxed ordering.”h]”(hŒAtomically sets ”…”�”}”(hjžŸh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¦Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžŸubhŒ to ”…”�”}”(hjžŸh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¸Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžŸubhŒ with relaxed ordering.”…”�”}”(hjžŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hjïžubjM)�”}”(hŒ?Unsafe to use in noinstr code; use raw_atomic_long_set() there.”h]”hŒ?Unsafe to use in noinstr code; use raw_atomic_long_set() there.”…”�”}”(hjÑŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hjïžubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjâŸh]”hŒReturn”…”�”}”(hjäŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjàŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‘ hjïžubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjøŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M’ hjïžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$atomic_long_set_release (C function)”Œc.atomic_long_set_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7void atomic_long_set_release (atomic_long_t *v, long i)”h]”hù)�”}”(hŒ6void atomic_long_set_release(atomic_long_t *v, long i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj# h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mœ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj# h²hh³j5 h´Mœ ubhÿ)�”}”(hŒatomic_long_set_release”h]”j)�”}”(hŒatomic_long_set_release”h]”hŒatomic_long_set_release”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjD ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj# h²hh³j5 h´Mœ ubj4)�”}”(hŒ(atomic_long_t *v, long i)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”ji Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjJ sbŒc.atomic_long_set_release”†”asbuh1hhj` ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj` ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj` ubj)�”}”(hjph]”hŒv”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj` ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj\ ubj:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¶ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¶ ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj\ ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj# h²hh³j5 h´Mœ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj h²hh³j5 h´Mœ ubah}”(h]”j ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j5 h´Mœ hj h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with release ordering”h]”hŒ atomic set with release ordering”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mœ hjü h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj h²hh³j5 h´Mœ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¡jHj¡jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long i`` long value to assign **Description** Atomically sets **v** to **i** with release ordering. Unsafe to use in noinstr code; use raw_atomic_long_set_release() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M  hj¡ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj@¡h]”hŒatomic_long_t *v”…”�”}”(hjB¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj>¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hj:¡ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjY¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jU¡h´M� hjV¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jU¡h´M� hj7¡ubj©)�”}”(hŒ ``long i`` long value to assign ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjy¡h]”hŒlong i”…”�”}”(hj{¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjw¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mž hjs¡ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hj’¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŽ¡h´Mž hj�¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjs¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŽ¡h´Mž hj7¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¡ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M  hj¡ubjM)�”}”(hŒ5Atomically sets **v** to **i** with release ordering.”h]”(hŒAtomically sets ”…”�”}”(hjÊ¡h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÒ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊ¡ubhŒ to ”…”�”}”(hjÊ¡h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjä¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊ¡ubhŒ with release ordering.”…”�”}”(hjÊ¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸ hj¡ubjM)�”}”(hŒGUnsafe to use in noinstr code; use raw_atomic_long_set_release() there.”h]”hŒGUnsafe to use in noinstr code; use raw_atomic_long_set_release() there.”…”�”}”(hjý¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¡ hj¡ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¢h]”hŒReturn”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M£ hj¡ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj$¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¤ hj¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_long_add (C function)”Œc.atomic_long_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void atomic_long_add (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ.void atomic_long_add(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjS¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjO¢h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¯ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjO¢h²hh³ja¢h´M¯ ubhÿ)�”}”(hŒatomic_long_add”h]”j)�”}”(hŒatomic_long_add”h]”hŒatomic_long_add”…”�”}”(hjt¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp¢ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjO¢h²hh³ja¢h´M¯ ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj�¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŒ¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŒ¢ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¬¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒ¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjˆ¢ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÇ¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄ¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÉ¢Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjv¢sbŒc.atomic_long_add”†”asbuh1hhjÀ¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÀ¢ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjõ¢h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÀ¢ubj)�”}”(hjph]”hŒv”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjˆ¢ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjO¢h²hh³ja¢h´M¯ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjK¢h²hh³ja¢h´M¯ ubah}”(h]”jF¢ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³ja¢h´M¯ hjH¢h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj+£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¯ hj(£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjH¢h²hh³ja¢h´M¯ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjC£jHjC£jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_add() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjM£h•]”hŒ Parameters”…”�”}”(hjO£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³ hjG£ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjl£h]”hŒlong i”…”�”}”(hjn£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M° hjf£ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj…£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�£h´M° hj‚£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjf£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�£h´M° hjc£ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj¥£h]”hŒatomic_long_t *v”…”�”}”(hj§£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj££ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M± hjŸ£ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj¾£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jº£h´M± hj»£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŸ£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jº£h´M± hjc£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjG£ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³ hjG£ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjö£h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjþ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö£ubhŒ to (”…”�”}”(hjö£h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö£ubhŒ + ”…”�”}”(hjö£h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj"¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö£ubhŒ) with relaxed ordering.”…”�”}”(hjö£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M² hjG£ubjM)�”}”(hŒ?Unsafe to use in noinstr code; use raw_atomic_long_add() there.”h]”hŒ?Unsafe to use in noinstr code; use raw_atomic_long_add() there.”…”�”}”(hj;¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´ hjG£ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjL¤h]”hŒReturn”…”�”}”(hjN¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¶ hjG£ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjb¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M· hjG£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#atomic_long_add_return (C function)”Œc.atomic_long_add_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6long atomic_long_add_return (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ5long atomic_long_add_return(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj‘¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�¤h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÁ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�¤h²hh³jŸ¤h´MÁ ubhÿ)�”}”(hŒatomic_long_add_return”h]”j)�”}”(hŒatomic_long_add_return”h]”hŒatomic_long_add_return”…”�”}”(hj²¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®¤ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�¤h²hh³jŸ¤h´MÁ ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjΤh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjʤubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjܤh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjʤubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjê¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjʤubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƤubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¥Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj´¤sbŒc.atomic_long_add_return”†”asbuh1hhjþ¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%¥h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþ¤ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj3¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjþ¤ubj)�”}”(hjph]”hŒv”…”�”}”(hj@¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƤubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�¤h²hh³jŸ¤h´MÁ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‰¤h²hh³jŸ¤h´MÁ ubah}”(h]”j„¤ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŸ¤h´MÁ hj†¤h²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hji¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÁ hjf¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj†¤h²hh³jŸ¤h´MÁ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�¥jHj�¥jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_add_return() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÅ hj…¥ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjª¥h]”hŒlong i”…”�”}”(hj¬¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¨¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj¤¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjÃ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjã¥h]”hŒatomic_long_t *v”…”�”}”(hjå¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjá¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mà hjÝ¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjü¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj…¥ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÅ hj…¥ubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj4¦h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj<¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4¦ubhŒ to (”…”�”}”(hj4¦h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjN¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4¦ubhŒ + ”…”�”}”(hj4¦h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj`¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4¦ubhŒ) with full ordering.”…”�”}”(hj4¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÄ hj…¥ubjM)�”}”(hŒFUnsafe to use in noinstr code; use raw_atomic_long_add_return() there.”h]”hŒFUnsafe to use in noinstr code; use raw_atomic_long_add_return() there.”…”�”}”(hjy¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÆ hj…¥ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjЦh]”hŒReturn”…”�”}”(hjŒ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÈ hj…¥ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj ¦h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¨¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ¦ubhŒ.”…”�”}”(hj ¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÉ hj…¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_add_return_acquire (C function)”Œ c.atomic_long_add_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>long atomic_long_add_return_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ=long atomic_long_add_return_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjá¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjݦh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÔ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjݦh²hh³jï¦h´MÔ ubhÿ)�”}”(hŒatomic_long_add_return_acquire”h]”j)�”}”(hŒatomic_long_add_return_acquire”h]”hŒatomic_long_add_return_acquire”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ¦ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjݦh²hh³jï¦h´MÔ ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj§ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj:§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj§ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjU§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjR§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jW§Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj§sbŒ c.atomic_long_add_return_acquire”†”asbuh1hhjN§ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjN§ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjƒ§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjN§ubj)�”}”(hjph]”hŒv”…”�”}”(hj�§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjN§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj§ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjݦh²hh³jï¦h´MÔ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÙ¦h²hh³jï¦h´MÔ ubah}”(h]”jÔ¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jï¦h´MÔ hjÖ¦h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hj¹§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÔ hj¶§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÖ¦h²hh³jï¦h´MÔ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjѧjHjѧjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX-**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_add_return_acquire() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MØ hjÕ§ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjú§h]”hŒlong i”…”�”}”(hjü§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjø§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÕ hjô§ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj3¨h]”hŒatomic_long_t *v”…”�”}”(hj5¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÖ hj-¨ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjL¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jH¨h´MÖ hjI¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj-¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jH¨h´MÖ hjñ§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÕ§ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjn¨h]”hŒ Description”…”�”}”(hjp¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MØ hjÕ§ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj„¨h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„¨ubhŒ to (”…”�”}”(hj„¨h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjž¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„¨ubhŒ + ”…”�”}”(hj„¨h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj°¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„¨ubhŒ) with acquire ordering.”…”�”}”(hj„¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M× hjÕ§ubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_add_return_acquire() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_add_return_acquire() there.”…”�”}”(hjɨh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÙ hjÕ§ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÚ¨h]”hŒReturn”…”�”}”(hjܨh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjبubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÛ hjÕ§ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjð¨h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjø¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð¨ubhŒ.”…”�”}”(hjð¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÜ hjÕ§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_add_return_release (C function)”Œ c.atomic_long_add_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>long atomic_long_add_return_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ=long atomic_long_add_return_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj1©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj-©h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mæ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj-©h²hh³j?©h´Mæ ubhÿ)�”}”(hŒatomic_long_add_return_release”h]”j)�”}”(hŒatomic_long_add_return_release”h]”hŒatomic_long_add_return_release”…”�”}”(hjR©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjN©ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj-©h²hh³j?©h´Mæ ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjn©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjj©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjj©ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjŠ©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjf©ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj¥©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j§©Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjT©sbŒ c.atomic_long_add_return_release”†”asbuh1hhjž©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjž©ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÓ©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjž©ubj)�”}”(hjph]”hŒv”…”�”}”(hjà©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjž©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjf©ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj-©h²hh³j?©h´Mæ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj)©h²hh³j?©h´Mæ ubah}”(h]”j$©ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j?©h´Mæ hj&©h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hj ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mæ hjªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj&©h²hh³j?©h´Mæ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj!ªjHj!ªjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX-**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_long_add_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mê hj%ªubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjJªh]”hŒlong i”…”�”}”(hjLªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjHªubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mç hjDªubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjcªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j_ªh´Mç hj`ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjDªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j_ªh´Mç hjAªubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjƒªh]”hŒatomic_long_t *v”…”�”}”(hj…ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�ªubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mè hj}ªubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjœªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j˜ªh´Mè hj™ªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj}ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j˜ªh´Mè hjAªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj%ªubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mê hj%ªubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÔªh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjܪh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔªubhŒ to (”…”�”}”(hjÔªh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjîªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔªubhŒ + ”…”�”}”(hjÔªh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔªubhŒ) with release ordering.”…”�”}”(hjÔªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mé hj%ªubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_add_return_release() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_add_return_release() there.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Më hj%ªubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj*«h]”hŒReturn”…”�”}”(hj,«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mí hj%ªubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj@«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjH«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@«ubhŒ.”…”�”}”(hj@«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mî hj%ªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_add_return_relaxed (C function)”Œ c.atomic_long_add_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>long atomic_long_add_return_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ=long atomic_long_add_return_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj}«h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mù ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}«h²hh³j�«h´Mù ubhÿ)�”}”(hŒatomic_long_add_return_relaxed”h]”j)�”}”(hŒatomic_long_add_return_relaxed”h]”hŒatomic_long_add_return_relaxed”…”�”}”(hj¢«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjž«ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj}«h²hh³j�«h´Mù ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¾«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjº«ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ«h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjº«ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÚ«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjº«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¶«ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjõ«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j÷«Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¤«sbŒ c.atomic_long_add_return_relaxed”†”asbuh1hhjî«ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî«ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj#¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjî«ubj)�”}”(hjph]”hŒv”…”�”}”(hj0¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¶«ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj}«h²hh³j�«h´Mù ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjy«h²hh³j�«h´Mù ubah}”(h]”jt«ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�«h´Mù hjv«h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hjY¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mù hjV¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjv«h²hh³j�«h´Mù ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjq¬jHjq¬jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX-**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_add_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj{¬h]”hŒ Parameters”…”�”}”(hj}¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mý hju¬ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjš¬h]”hŒlong i”…”�”}”(hjœ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj˜¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mú hj”¬ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj³¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjÓ¬h]”hŒatomic_long_t *v”…”�”}”(hjÕ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjѬubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mû hjͬubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjì¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hju¬ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mý hju¬ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj$­h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj,­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$­ubhŒ to (”…”�”}”(hj$­h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj>­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$­ubhŒ + ”…”�”}”(hj$­h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjP­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$­ubhŒ) with relaxed ordering.”…”�”}”(hj$­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mü hju¬ubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_add_return_relaxed() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_add_return_relaxed() there.”…”�”}”(hji­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mþ hju¬ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjz­h]”hŒReturn”…”�”}”(hj|­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hju¬ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj�­h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj˜­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�­ubhŒ.”…”�”}”(hj�­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hju¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic_long_fetch_add (C function)”Œc.atomic_long_fetch_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5long atomic_long_fetch_add (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ4long atomic_long_fetch_add(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÑ­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÍ­h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍ­h²hh³jß­h´M ubhÿ)�”}”(hŒatomic_long_fetch_add”h]”j)�”}”(hŒatomic_long_fetch_add”h]”hŒatomic_long_fetch_add”…”�”}”(hjò­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî­ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÍ­h²hh³jß­h´M ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj ®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ®ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj*®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjE®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jG®Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjô­sbŒc.atomic_long_fetch_add”†”asbuh1hhj>®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>®ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjs®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj>®ubj)�”}”(hjph]”hŒv”…”�”}”(hj€®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÍ­h²hh³jß­h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÉ­h²hh³jß­h´M ubah}”(h]”jÄ­ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jß­h´M hjÆ­h²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hj©®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj¦®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÆ­h²hh³jß­h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÁ®jHjÁ®jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_add() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÅ®ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjê®h]”hŒlong i”…”�”}”(hjì®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjè®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjä®ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj#¯h]”hŒatomic_long_t *v”…”�”}”(hj%¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj<¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j8¯h´M hj9¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j8¯h´M hjá®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÅ®ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÅ®ubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjt¯h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt¯ubhŒ to (”…”�”}”(hjt¯h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjޝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt¯ubhŒ + ”…”�”}”(hjt¯h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt¯ubhŒ) with full ordering.”…”�”}”(hjt¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÅ®ubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_add() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_add() there.”…”�”}”(hj¹¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÅ®ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjʯh]”hŒReturn”…”�”}”(hj̯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjȯubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÅ®ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjà¯h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjè¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjà¯ubhŒ.”…”�”}”(hjà¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÅ®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_add_acquire (C function)”Œc.atomic_long_fetch_add_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=long atomic_long_fetch_add_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ°ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj°h²hh³j/°h´M ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj^°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjZ°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZ°ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjz°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjV°ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj•°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j—°Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjD°sbŒc.atomic_long_fetch_add_acquire”†”asbuh1hhjްubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjްubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjްubj)�”}”(hjph]”hŒv”…”�”}”(hjаh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjްubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjV°ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj°h²hh³j/°h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj°h²hh³j/°h´M ubah}”(h]”j°ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j/°h´M hj°h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hjù°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjö°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj°h²hh³j/°h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj±jHj±jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX-**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_add_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M" hj±ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj:±h]”hŒlong i”…”�”}”(hj<±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj4±ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjS±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jO±h´M hjP±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj4±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jO±h´M hj1±ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjs±h]”hŒatomic_long_t *v”…”�”}”(hju±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjq±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjm±ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjŒ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jˆ±h´M hj‰±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjm±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆ±h´M hj1±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj±ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M" hj±ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjıh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj̱h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjıubhŒ to (”…”�”}”(hjıh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÞ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjıubhŒ + ”…”�”}”(hjıh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjð±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjıubhŒ) with acquire ordering.”…”�”}”(hjıh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M! hj±ubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_add_acquire() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_add_acquire() there.”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M# hj±ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj²h]”hŒReturn”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M% hj±ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj0²h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0²ubhŒ.”…”�”}”(hj0²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M& hj±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_add_release (C function)”Œc.atomic_long_fetch_add_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=long atomic_long_fetch_add_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒlong atomic_long_sub_return_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ=long atomic_long_sub_return_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjŸ»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj›»h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mz ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›»h²hh³j­»h´Mz ubhÿ)�”}”(hŒatomic_long_sub_return_acquire”h]”j)�”}”(hŒatomic_long_sub_return_acquire”h]”hŒatomic_long_sub_return_acquire”…”�”}”(hjÀ»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼»ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj›»h²hh³j­»h´Mz ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÜ»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjØ»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjØ»ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjø»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÔ»ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¼Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj»sbŒ c.atomic_long_sub_return_acquire”†”asbuh1hhj ¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3¼h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ¼ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjA¼h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ¼ubj)�”}”(hjph]”hŒv”…”�”}”(hjN¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÔ»ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj›»h²hh³j­»h´Mz ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj—»h²hh³j­»h´Mz ubah}”(h]”j’»ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j­»h´Mz hj”»h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hjw¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mz hjt¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj”»h²hh³j­»h´Mz ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�¼jHj�¼jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX2**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_sub_return_acquire() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M~ hj“¼ubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj¸¼h]”hŒlong i”…”�”}”(hjº¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¶¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M{ hj²¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjѼh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjñ¼h]”hŒatomic_long_t *v”…”�”}”(hjó¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjï¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M| hjë¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj“¼ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M~ hj“¼ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjB½h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjB½ubhŒ to (”…”�”}”(hjB½h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj\½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjB½ubhŒ - ”…”�”}”(hjB½h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjn½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjB½ubhŒ) with acquire ordering.”…”�”}”(hjB½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M} hj“¼ubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_sub_return_acquire() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_sub_return_acquire() there.”…”�”}”(hj‡½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj“¼ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj˜½h]”hŒReturn”…”�”}”(hjš½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hj“¼ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj®½h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¶½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®½ubhŒ.”…”�”}”(hj®½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‚ hj“¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_sub_return_release (C function)”Œ c.atomic_long_sub_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>long atomic_long_sub_return_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ=long atomic_long_sub_return_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjï½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjë½h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŒ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjë½h²hh³jý½h´MŒ ubhÿ)�”}”(hŒatomic_long_sub_return_release”h]”j)�”}”(hŒatomic_long_sub_return_release”h]”hŒatomic_long_sub_return_release”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ¾ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjë½h²hh³jý½h´MŒ ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj,¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj(¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj(¾ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjH¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj$¾ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjc¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”je¾Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¾sbŒ c.atomic_long_sub_return_release”†”asbuh1hhj\¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\¾ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‘¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj\¾ubj)�”}”(hjph]”hŒv”…”�”}”(hjž¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj$¾ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjë½h²hh³jý½h´MŒ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjç½h²hh³jý½h´MŒ ubah}”(h]”jâ½ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jý½h´MŒ hjä½h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hjǾh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŒ hjľh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjä½h²hh³jý½h´MŒ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjß¾jHjß¾jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX2**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_long_sub_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hjã¾ubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj¿h]”hŒlong i”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hj¿ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hj!¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjA¿h]”hŒatomic_long_t *v”…”�”}”(hjC¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj?¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽ hj;¿ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjZ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jV¿h´MŽ hjW¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj;¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jV¿h´MŽ hjÿ¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjã¾ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj|¿h]”hŒ Description”…”�”}”(hj~¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjz¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hjã¾ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj’¿h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjš¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’¿ubhŒ to (”…”�”}”(hj’¿h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¬¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’¿ubhŒ - ”…”�”}”(hj’¿h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¾¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’¿ubhŒ) with release ordering.”…”�”}”(hj’¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hjã¾ubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_sub_return_release() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_sub_return_release() there.”…”�”}”(hj׿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‘ hjã¾ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjè¿h]”hŒReturn”…”�”}”(hjê¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M“ hjã¾ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjþ¿h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþ¿ubhŒ.”…”�”}”(hjþ¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M” hjã¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_sub_return_relaxed (C function)”Œ c.atomic_long_sub_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>long atomic_long_sub_return_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ=long atomic_long_sub_return_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj?Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj;Àh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;Àh²hh³jMÀh´MŸ ubhÿ)�”}”(hŒatomic_long_sub_return_relaxed”h]”j)�”}”(hŒatomic_long_sub_return_relaxed”h]”hŒatomic_long_sub_return_relaxed”…”�”}”(hj`Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\Àubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj;Àh²hh³jMÀh´MŸ ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj|Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjxÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjxÀubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj˜Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjxÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjtÀubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj³Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°Àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jµÀŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjbÀsbŒ c.atomic_long_sub_return_relaxed”†”asbuh1hhj¬ÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¬Àubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjáÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¬Àubj)�”}”(hjph]”hŒv”…”�”}”(hjîÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjtÀubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj;Àh²hh³jMÀh´MŸ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj7Àh²hh³jMÀh´MŸ ubah}”(h]”j2Àah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jMÀh´MŸ hj4Àh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸ hjÁh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj4Àh²hh³jMÀh´MŸ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj/ÁjHj/ÁjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX2**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_sub_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj9Áh]”hŒ Parameters”…”�”}”(hj;Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M£ hj3Áubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjXÁh]”hŒlong i”…”�”}”(hjZÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjVÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M  hjRÁubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjqÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmÁh´M  hjnÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmÁh´M  hjOÁubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj‘Áh]”hŒatomic_long_t *v”…”�”}”(hj“Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¡ hj‹ÁubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjªÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¦Áh´M¡ hj§Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‹Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¦Áh´M¡ hjOÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj3ÁubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M£ hj3ÁubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjâÁh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjêÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâÁubhŒ to (”…”�”}”(hjâÁh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjüÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâÁubhŒ - ”…”�”}”(hjâÁh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâÁubhŒ) with relaxed ordering.”…”�”}”(hjâÁh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¢ hj3ÁubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_sub_return_relaxed() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_sub_return_relaxed() there.”…”�”}”(hj'Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¤ hj3ÁubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj8Âh]”hŒReturn”…”�”}”(hj:Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¦ hj3ÁubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjNÂh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjVÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNÂubhŒ.”…”�”}”(hjNÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M§ hj3Áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic_long_fetch_sub (C function)”Œc.atomic_long_fetch_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5long atomic_long_fetch_sub (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ4long atomic_long_fetch_sub(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‹Âh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M± ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžÂh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‹Âh²hh³j�Âh´M± ubhÿ)�”}”(hŒatomic_long_fetch_sub”h]”j)�”}”(hŒatomic_long_fetch_sub”h]”hŒatomic_long_fetch_sub”…”�”}”(hj°Âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬Âubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‹Âh²hh³j�Âh´M± ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÌÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÈÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚÂh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÈÂubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjèÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÄÂubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÃŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj²ÂsbŒc.atomic_long_fetch_sub”†”asbuh1hhjüÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjüÂubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj1Ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjüÂubj)�”}”(hjph]”hŒv”…”�”}”(hj>Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÄÂubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‹Âh²hh³j�Âh´M± ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‡Âh²hh³j�Âh´M± ubah}”(h]”j‚Âah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�Âh´M± hj„Âh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(hjgÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M± hjdÃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj„Âh²hh³j�Âh´M± ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÃjHjÃjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_sub() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mµ hjƒÃubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj¨Ãh]”hŒlong i”…”�”}”(hjªÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¦Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M² hj¢ÃubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjÁÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjáÃh]”hŒatomic_long_t *v”…”�”}”(hjãÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjßÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³ hjÛÃubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjúÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjƒÃubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mµ hjƒÃubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj2Äh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj:Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ÄubhŒ to (”…”�”}”(hj2Äh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjLÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ÄubhŒ - ”…”�”}”(hj2Äh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj^Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ÄubhŒ) with full ordering.”…”�”}”(hj2Äh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´ hjƒÃubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_sub() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_sub() there.”…”�”}”(hjwÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¶ hjƒÃubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjˆÄh]”hŒReturn”…”�”}”(hjŠÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸ hjƒÃubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjžÄh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¦Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžÄubhŒ.”…”�”}”(hjžÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¹ hjƒÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_sub_acquire (C function)”Œc.atomic_long_fetch_sub_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=long atomic_long_fetch_sub_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+Çh²hh³j=Çh´MÖ ubhÿ)�”}”(hŒatomic_long_fetch_sub_release”h]”j)�”}”(hŒatomic_long_fetch_sub_release”h]”hŒatomic_long_fetch_sub_release”…”�”}”(hjPÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLÇubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj+Çh²hh³j=Çh´MÖ ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjlÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjhÇubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjhÇubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjˆÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjdÇubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj£Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¥ÇŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjRÇsbŒc.atomic_long_fetch_sub_release”†”asbuh1hhjœÇubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœÇubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÑÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjœÇubj)�”}”(hjph]”hŒv”…”�”}”(hjÞÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjdÇubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj+Çh²hh³j=Çh´MÖ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj'Çh²hh³j=Çh´MÖ ubah}”(h]”j"Çah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j=Çh´MÖ hj$Çh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÖ hjÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj$Çh²hh³j=Çh´MÖ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÈjHjÈjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX2**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_sub_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÚ hj#Èubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjHÈh]”hŒlong i”…”�”}”(hjJÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjFÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M× hjBÈubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjaÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j]Èh´M× hj^Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjBÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j]Èh´M× hj?Èubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj�Èh]”hŒatomic_long_t *v”…”�”}”(hjƒÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MØ hj{ÈubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjšÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj#ÈubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÚ hj#ÈubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÒÈh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÚÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒÈubhŒ to (”…”�”}”(hjÒÈh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjìÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒÈubhŒ - ”…”�”}”(hjÒÈh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjþÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒÈubhŒ) with release ordering.”…”�”}”(hjÒÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÙ hj#ÈubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_sub_release() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_sub_release() there.”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÛ hj#ÈubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj(Éh]”hŒReturn”…”�”}”(hj*Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝ hj#ÈubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj>Éh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjFÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ÉubhŒ.”…”�”}”(hj>Éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞ hj#Èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_sub_relaxed (C function)”Œc.atomic_long_fetch_sub_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=long atomic_long_fetch_sub_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒAtomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÍh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍubhŒ to (”…”�”}”(hjÍh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍubhŒ + 1) with relaxed ordering.”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mý hj�ÌubjM)�”}”(hŒ?Unsafe to use in noinstr code; use raw_atomic_long_inc() there.”h]”hŒ?Unsafe to use in noinstr code; use raw_atomic_long_inc() there.”…”�”}”(hj8Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mÿ hj�ÌubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjIÍh]”hŒReturn”…”�”}”(hjKÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj�ÌubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj_Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj�Ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#atomic_long_inc_return (C function)”Œc.atomic_long_inc_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.long atomic_long_inc_return (atomic_long_t *v)”h]”hù)�”}”(hŒ-long atomic_long_inc_return(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjŽÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŠÍh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Íh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠÍh²hh³jœÍh´M ubhÿ)�”}”(hŒatomic_long_inc_return”h]”j)�”}”(hŒatomic_long_inc_return”h]”hŒatomic_long_inc_return”…”�”}”(hj¯Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«Íubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŠÍh²hh³jœÍh´M ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÎÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjËÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÐÍŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj±ÍsbŒc.atomic_long_inc_return”†”asbuh1hhjÇÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîÍh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇÍubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjüÍh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÇÍubj)�”}”(hjph]”hŒv”…”�”}”(hj Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÃÍubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŠÍh²hh³jœÍh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj†Íh²hh³jœÍh´M ubah}”(h]”j�Íah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jœÍh´M hjƒÍh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hj2Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj/Îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjƒÍh²hh³jœÍh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjJÎjHjJÎjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒþ**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_inc_return() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjTÎh]”hŒ Parameters”…”�”}”(hjVÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjNÎubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjsÎh]”hŒatomic_long_t *v”…”�”}”(hjuÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjqÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjmÎubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjŒÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jˆÎh´M hj‰Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjmÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆÎh´M hjjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjNÎubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjNÎubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”•h]”(hŒAtomically updates ”…”�”}”(hjÄÎh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÌÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄÎubhŒ to (”…”�”}”(hjÄÎh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÞÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄÎubhŒ + 1) with full ordering.”…”�”}”(hjÄÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjNÎubjM)�”}”(hŒFUnsafe to use in noinstr code; use raw_atomic_long_inc_return() there.”h]”hŒFUnsafe to use in noinstr code; use raw_atomic_long_inc_return() there.”…”�”}”(hj÷Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjNÎubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÏh]”hŒReturn”…”�”}”(hj Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjNÎubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÏh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj&Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏubhŒ.”…”�”}”(hjÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjNÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_inc_return_acquire (C function)”Œ c.atomic_long_inc_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6long atomic_long_inc_return_acquire (atomic_long_t *v)”h]”hù)�”}”(hŒ5long atomic_long_inc_return_acquire(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj_Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj[Ïh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnÏh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[Ïh²hh³jmÏh´Mubhÿ)�”}”(hŒatomic_long_inc_return_acquire”h]”j)�”}”(hŒatomic_long_inc_return_acquire”h]”hŒatomic_long_inc_return_acquire”…”�”}”(hj€Ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|Ïubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj[Ïh²hh³jmÏh´Mubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjŸÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¡ÏŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‚ÏsbŒ c.atomic_long_inc_return_acquire”†”asbuh1hhj˜ÏubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Ïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj˜Ïubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÍÏh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj˜Ïubj)�”}”(hjph]”hŒv”…”�”}”(hjÚÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜Ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj”Ïubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj[Ïh²hh³jmÏh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjWÏh²hh³jmÏh´Mubah}”(h]”jRÏah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jmÏh´MhjTÏh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjTÏh²hh³jmÏh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÐjHjÐjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_inc_return_acquire() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M"hjÐubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjDÐh]”hŒatomic_long_t *v”…”�”}”(hjFÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj>ÐubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj]Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jYÐh´MhjZÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj>Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jYÐh´Mhj;Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÐubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M!hjÐubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj•Ðh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•ÐubhŒ to (”…”�”}”(hj•Ðh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¯Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•ÐubhŒ + 1) with acquire ordering.”…”�”}”(hj•Ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjÐubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_inc_return_acquire() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_inc_return_acquire() there.”…”�”}”(hjÈÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M"hjÐubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÙÐh]”hŒReturn”…”�”}”(hjÛÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M$hjÐubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjïÐh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj÷Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjïÐubhŒ.”…”�”}”(hjïÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M%hjÐubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_inc_return_release (C function)”Œ c.atomic_long_inc_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6long atomic_long_inc_return_release (atomic_long_t *v)”h]”hù)�”}”(hŒ5long atomic_long_inc_return_release(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj0Ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj,Ñh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?Ñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj,Ñh²hh³j>Ñh´M/ubhÿ)�”}”(hŒatomic_long_inc_return_release”h]”j)�”}”(hŒatomic_long_inc_return_release”h]”hŒatomic_long_inc_return_release”…”�”}”(hjQÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMÑubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj,Ñh²hh³j>Ñh´M/ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjpÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jrÑŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjSÑsbŒ c.atomic_long_inc_return_release”†”asbuh1hhjiÑubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjiÑubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjžÑh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjiÑubj)�”}”(hjph]”hŒv”…”�”}”(hj«Ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjeÑubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj,Ñh²hh³j>Ñh´M/ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj(Ñh²hh³j>Ñh´M/ubah}”(h]”j#Ñah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j>Ñh´M/hj%Ñh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hjÔÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/hjÑÑh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj%Ñh²hh³j>Ñh´M/ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjìÑjHjìÑjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic_long_inc_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M3hjðÑubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjÒh]”hŒatomic_long_t *v”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M0hjÒubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj.Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j*Òh´M0hj+Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j*Òh´M0hj Òubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjðÑubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjPÒh]”hŒ Description”…”�”}”(hjRÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M2hjðÑubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjfÒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjnÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfÒubhŒ to (”…”�”}”(hjfÒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfÒubhŒ + 1) with release ordering.”…”�”}”(hjfÒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1hjðÑubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_inc_return_release() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_inc_return_release() there.”…”�”}”(hj™Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M3hjðÑubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjªÒh]”hŒReturn”…”�”}”(hj¬Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M5hjðÑubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÀÒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÈÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀÒubhŒ.”…”�”}”(hjÀÒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M6hjðÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_inc_return_relaxed (C function)”Œ c.atomic_long_inc_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6long atomic_long_inc_return_relaxed (atomic_long_t *v)”h]”hù)�”}”(hŒ5long atomic_long_inc_return_relaxed(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjýÒh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjýÒh²hh³jÓh´MAubhÿ)�”}”(hŒatomic_long_inc_return_relaxed”h]”j)�”}”(hŒatomic_long_inc_return_relaxed”h]”hŒatomic_long_inc_return_relaxed”…”�”}”(hj"Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjýÒh²hh³jÓh´MAubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjAÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>Óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCÓŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj$ÓsbŒ c.atomic_long_inc_return_relaxed”†”asbuh1hhj:ÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:Óubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjoÓh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj:Óubj)�”}”(hjph]”hŒv”…”�”}”(hj|Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:Óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj6Óubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjýÒh²hh³jÓh´MAubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjùÒh²hh³jÓh´MAubah}”(h]”jôÒah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÓh´MAhjöÒh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hj¥Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MAhj¢Óh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjöÒh²hh³jÓh´MAubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj½ÓjHj½ÓjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_inc_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MEhjÁÓubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjæÓh]”hŒatomic_long_t *v”…”�”}”(hjèÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjäÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MBhjàÓubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÿÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jûÓh´MBhjüÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjàÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jûÓh´MBhjÝÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÁÓubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MDhjÁÓubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj7Ôh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj?Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7ÔubhŒ to (”…”�”}”(hj7Ôh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjQÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7ÔubhŒ + 1) with relaxed ordering.”…”�”}”(hj7Ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MChjÁÓubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_inc_return_relaxed() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_inc_return_relaxed() there.”…”�”}”(hjjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MEhjÁÓubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj{Ôh]”hŒReturn”…”�”}”(hj}Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MGhjÁÓubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj‘Ôh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘ÔubhŒ.”…”�”}”(hj‘Ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MHhjÁÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic_long_fetch_inc (C function)”Œc.atomic_long_fetch_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-long atomic_long_fetch_inc (atomic_long_t *v)”h]”hù)�”}”(hŒ,long atomic_long_fetch_inc(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÒÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÎÔh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáÔh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÎÔh²hh³jàÔh´MRubhÿ)�”}”(hŒatomic_long_fetch_inc”h]”j)�”}”(hŒatomic_long_fetch_inc”h]”hŒatomic_long_fetch_inc”…”�”}”(hjóÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïÔubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÎÔh²hh³jàÔh´MRubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÕŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjõÔsbŒc.atomic_long_fetch_inc”†”asbuh1hhj ÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Õubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj@Õh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj Õubj)�”}”(hjph]”hŒv”…”�”}”(hjMÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÕubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÎÔh²hh³jàÔh´MRubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÊÔh²hh³jàÔh´MRubah}”(h]”jÅÔah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jàÔh´MRhjÇÔh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hjvÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MRhjsÕh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÇÔh²hh³jàÔh´MRubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŽÕjHjŽÕjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒþ**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_inc() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MVhj’Õubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj·Õh]”hŒatomic_long_t *v”…”�”}”(hj¹Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjµÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MShj±ÕubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÐÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÌÕh´MShjÍÕ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’ÕubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MUhj’ÕubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÖh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖubhŒ to (”…”�”}”(hjÖh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj"Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖubhŒ + 1) with full ordering.”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MThj’ÕubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_inc() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_inc() there.”…”�”}”(hj;Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MVhj’ÕubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjLÖh]”hŒReturn”…”�”}”(hjNÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MXhj’ÕubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjbÖh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbÖubhŒ.”…”�”}”(hjbÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MYhj’Õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_inc_acquire (C function)”Œc.atomic_long_fetch_inc_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5long atomic_long_fetch_inc_acquire (atomic_long_t *v)”h]”hù)�”}”(hŒ4long atomic_long_fetch_inc_acquire(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj£Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŸÖh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Öh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŸÖh²hh³j±Öh´Mdubhÿ)�”}”(hŒatomic_long_fetch_inc_acquire”h]”j)�”}”(hŒatomic_long_fetch_inc_acquire”h]”hŒatomic_long_fetch_inc_acquire”…”�”}”(hjÄÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀÖubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŸÖh²hh³j±Öh´Mdubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjãÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jåÖŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÆÖsbŒc.atomic_long_fetch_inc_acquire”†”asbuh1hhjÜÖubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜÖubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÜÖubj)�”}”(hjph]”hŒv”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjØÖubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŸÖh²hh³j±Öh´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj›Öh²hh³j±Öh´Mdubah}”(h]”j–Öah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j±Öh´Mdhj˜Öh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hjG×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MdhjD×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj˜Öh²hh³j±Öh´Mdubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj_×jHj_×jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_inc_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hji×h]”hŒ Parameters”…”�”}”(hjk×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjg×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhhjc×ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjˆ×h]”hŒatomic_long_t *v”…”�”}”(hjŠ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj†×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mehj‚×ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj¡×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�×h´Mehjž×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‚×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�×h´Mehj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjc×ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mghjc×ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÙ×h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjá×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙ×ubhŒ to (”…”�”}”(hjÙ×h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjó×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙ×ubhŒ + 1) with acquire ordering.”…”�”}”(hjÙ×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mfhjc×ubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_inc_acquire() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_inc_acquire() there.”…”�”}”(hj Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhhjc×ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjØh]”hŒReturn”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mjhjc×ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj3Øh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj;Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3ØubhŒ.”…”�”}”(hj3Øh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mkhjc×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_inc_release (C function)”Œc.atomic_long_fetch_inc_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5long atomic_long_fetch_inc_release (atomic_long_t *v)”h]”hù)�”}”(hŒ4long atomic_long_fetch_inc_release(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjtØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjpØh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MuubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒØh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjpØh²hh³j‚Øh´Muubhÿ)�”}”(hŒatomic_long_fetch_inc_release”h]”j)�”}”(hŒatomic_long_fetch_inc_release”h]”hŒatomic_long_fetch_inc_release”…”�”}”(hj•Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘Øubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjpØh²hh³j‚Øh´Muubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj´Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±Øubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¶ØŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj—ØsbŒc.atomic_long_fetch_inc_release”†”asbuh1hhj­ØubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔØh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­Øubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjâØh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj­Øubj)�”}”(hjph]”hŒv”…”�”}”(hjïØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj©Øubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjpØh²hh³j‚Øh´Muubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjlØh²hh³j‚Øh´Muubah}”(h]”jgØah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‚Øh´MuhjiØh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MuhjÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjiØh²hh³j‚Øh´Muubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj0ÙjHj0ÙjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_inc_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj:Ùh]”hŒ Parameters”…”�”}”(hj<Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Myhj4Ùubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjYÙh]”hŒatomic_long_t *v”…”�”}”(hj[Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjWÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MvhjSÙubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjrÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jnÙh´MvhjoÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjSÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jnÙh´MvhjPÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj4ÙubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mxhj4ÙubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjªÙh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj²Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªÙubhŒ to (”…”�”}”(hjªÙh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÄÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªÙubhŒ + 1) with release ordering.”…”�”}”(hjªÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mwhj4ÙubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_inc_release() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_inc_release() there.”…”�”}”(hjÝÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Myhj4ÙubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjîÙh]”hŒReturn”…”�”}”(hjðÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjìÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M{hj4ÙubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÚh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚubhŒ.”…”�”}”(hjÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M|hj4Ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_inc_relaxed (C function)”Œc.atomic_long_fetch_inc_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5long atomic_long_fetch_inc_relaxed (atomic_long_t *v)”h]”hù)�”}”(hŒ4long atomic_long_fetch_inc_relaxed(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjEÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjAÚh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTÚh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjAÚh²hh³jSÚh´M‡ubhÿ)�”}”(hŒatomic_long_fetch_inc_relaxed”h]”j)�”}”(hŒatomic_long_fetch_inc_relaxed”h]”hŒatomic_long_fetch_inc_relaxed”…”�”}”(hjfÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbÚubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjAÚh²hh³jSÚh´M‡ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj…Úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚Úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‡ÚŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjhÚsbŒc.atomic_long_fetch_inc_relaxed”†”asbuh1hhj~ÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Úh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~Úubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj³Úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj~Úubj)�”}”(hjph]”hŒv”…”�”}”(hjÀÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~Úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjzÚubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjAÚh²hh³jSÚh´M‡ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj=Úh²hh³jSÚh´M‡ubah}”(h]”j8Úah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jSÚh´M‡hj:Úh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjéÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‡hjæÚh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj:Úh²hh³jSÚh´M‡ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÛjHjÛjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_inc_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‹hjÛubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj*Ûh]”hŒatomic_long_t *v”…”�”}”(hj,Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj(Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mˆhj$ÛubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjCÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÛubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjeÛh]”hŒ Description”…”�”}”(hjgÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjcÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠhjÛubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj{Ûh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjƒÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj{ÛubhŒ to (”…”�”}”(hj{Ûh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj•Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj{ÛubhŒ + 1) with relaxed ordering.”…”�”}”(hj{Ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‰hjÛubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_inc_relaxed() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_inc_relaxed() there.”…”�”}”(hj®Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‹hjÛubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¿Ûh]”hŒReturn”…”�”}”(hjÁÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj½Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjÛubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÕÛh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÝÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÕÛubhŒ.”…”�”}”(hjÕÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽhjÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_long_dec (C function)”Œc.atomic_long_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'void atomic_long_dec (atomic_long_t *v)”h]”hù)�”}”(hŒ&void atomic_long_dec(atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÜh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M˜ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Üh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜh²hh³j$Üh´M˜ubhÿ)�”}”(hŒatomic_long_dec”h]”j)�”}”(hŒatomic_long_dec”h]”hŒatomic_long_dec”…”�”}”(hj7Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3Üubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÜh²hh³j$Üh´M˜ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjVÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jXÜŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj9ÜsbŒc.atomic_long_dec”†”asbuh1hhjOÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÜh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjOÜubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj„Üh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjOÜubj)�”}”(hjph]”hŒv”…”�”}”(hj‘Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjKÜubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÜh²hh³j$Üh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÜh²hh³j$Üh´M˜ubah}”(h]”j Üah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j$Üh´M˜hj Üh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hjºÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M˜hj·Üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj Üh²hh³j$Üh´M˜ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÒÜjHjÒÜjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒç**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_dec() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MœhjÖÜubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjûÜh]”hŒatomic_long_t *v”…”�”}”(hjýÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjùÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M™hjõÜubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÖÜubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj6Ýh]”hŒ Description”…”�”}”(hj8Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M›hjÖÜubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjLÝh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjTÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLÝubhŒ to (”…”�”}”(hjLÝh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjfÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLÝubhŒ - 1) with relaxed ordering.”…”�”}”(hjLÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MšhjÖÜubjM)�”}”(hŒ?Unsafe to use in noinstr code; use raw_atomic_long_dec() there.”h]”hŒ?Unsafe to use in noinstr code; use raw_atomic_long_dec() there.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MœhjÖÜubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�Ýh]”hŒReturn”…”�”}”(hj’Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MžhjÖÜubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj¦Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŸhjÖÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#atomic_long_dec_return (C function)”Œc.atomic_long_dec_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.long atomic_long_dec_return (atomic_long_t *v)”h]”hù)�”}”(hŒ-long atomic_long_dec_return(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÕÝh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÑÝh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäÝh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÑÝh²hh³jãÝh´M©ubhÿ)�”}”(hŒatomic_long_dec_return”h]”j)�”}”(hŒatomic_long_dec_return”h]”hŒatomic_long_dec_return”…”�”}”(hjöÝh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòÝubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÑÝh²hh³jãÝh´M©ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÞŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjøÝsbŒc.atomic_long_dec_return”†”asbuh1hhjÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Þh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÞubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjCÞh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÞubj)�”}”(hjph]”hŒv”…”�”}”(hjPÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj Þubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÑÝh²hh³jãÝh´M©ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÍÝh²hh³jãÝh´M©ubah}”(h]”jÈÝah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jãÝh´M©hjÊÝh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hjyÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M©hjvÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÊÝh²hh³jãÝh´M©ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‘ÞjHj‘ÞjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒþ**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_dec_return() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M­hj•Þubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjºÞh]”hŒatomic_long_t *v”…”�”}”(hj¼Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¸Þubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mªhj´ÞubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÓÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj•ÞubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¬hj•ÞubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ßubhŒ to (”…”�”}”(hj ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj%ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ßubhŒ - 1) with full ordering.”…”�”}”(hj ßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M«hj•ÞubjM)�”}”(hŒFUnsafe to use in noinstr code; use raw_atomic_long_dec_return() there.”h]”hŒFUnsafe to use in noinstr code; use raw_atomic_long_dec_return() there.”…”�”}”(hj>ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M­hj•ÞubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjOßh]”hŒReturn”…”�”}”(hjQßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMßubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¯hj•ÞubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjeßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjmßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeßubhŒ.”…”�”}”(hjeßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M°hj•Þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_dec_return_acquire (C function)”Œ c.atomic_long_dec_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6long atomic_long_dec_return_acquire (atomic_long_t *v)”h]”hù)�”}”(hŒ5long atomic_long_dec_return_acquire(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¦ßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¢ßh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµßh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¢ßh²hh³j´ßh´M»ubhÿ)�”}”(hŒatomic_long_dec_return_acquire”h]”j)�”}”(hŒatomic_long_dec_return_acquire”h]”hŒatomic_long_dec_return_acquire”…”�”}”(hjÇßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃßubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¢ßh²hh³j´ßh´M»ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjæßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjãßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jèߌmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÉßsbŒ c.atomic_long_dec_return_acquire”†”asbuh1hhjßßubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjßßubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjßßubj)�”}”(hjph]”hŒv”…”�”}”(hj!àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjßßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÛßubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¢ßh²hh³j´ßh´M»ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjžßh²hh³j´ßh´M»ubah}”(h]”j™ßah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j´ßh´M»hj›ßh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hjJàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M»hjGàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj›ßh²hh³j´ßh´M»ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjbàjHjbàjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_dec_return_acquire() there. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjlàh]”hŒ Parameters”…”�”}”(hjnàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¿hjfàubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj‹àh]”hŒatomic_long_t *v”…”�”}”(hj�àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‰àubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¼hj…àubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj¤àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjfàubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¾hjfàubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÜàh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjäàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜàubhŒ to (”…”�”}”(hjÜàh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjöàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜàubhŒ - 1) with acquire ordering.”…”�”}”(hjÜàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M½hjfàubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_dec_return_acquire() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_dec_return_acquire() there.”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¿hjfàubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj áh]”hŒReturn”…”�”}”(hj"áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÁhjfàubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj6áh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj>áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6áubhŒ.”…”�”}”(hj6áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÂhjfàubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_dec_return_release (C function)”Œ c.atomic_long_dec_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6long atomic_long_dec_return_release (atomic_long_t *v)”h]”hù)�”}”(hŒ5long atomic_long_dec_return_release(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjwáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjsáh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjsáh²hh³j…áh´MÌubhÿ)�”}”(hŒatomic_long_dec_return_release”h]”j)�”}”(hŒatomic_long_dec_return_release”h]”hŒatomic_long_dec_return_release”…”�”}”(hj˜áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”áubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjsáh²hh³j…áh´MÌubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj·áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¹áŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjšásbŒ c.atomic_long_dec_return_release”†”asbuh1hhj°áubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°áubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjåáh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj°áubj)�”}”(hjph]”hŒv”…”�”}”(hjòáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¬áubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjsáh²hh³j…áh´MÌubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjoáh²hh³j…áh´MÌubah}”(h]”jjáah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j…áh´MÌhjláh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌhjâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjláh²hh³j…áh´MÌubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj3âjHj3âjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic_long_dec_return_release() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐhj7âubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj\âh]”hŒatomic_long_t *v”…”�”}”(hj^âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjZâubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÍhjVâubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjuâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jqâh´MÍhjrâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjVâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jqâh´MÍhjSâubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj7âubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÏhj7âubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj­âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjµâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj­âubhŒ to (”…”�”}”(hj­âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÇâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj­âubhŒ - 1) with release ordering.”…”�”}”(hj­âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÎhj7âubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_dec_return_release() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_dec_return_release() there.”…”�”}”(hjàâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐhj7âubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjñâh]”hŒReturn”…”�”}”(hjóâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjïâubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÒhj7âubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjãh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãubhŒ.”…”�”}”(hjãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÓhj7âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+atomic_long_dec_return_relaxed (C function)”Œ c.atomic_long_dec_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6long atomic_long_dec_return_relaxed (atomic_long_t *v)”h]”hù)�”}”(hŒ5long atomic_long_dec_return_relaxed(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjHãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjDãh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjDãh²hh³jVãh´MÞubhÿ)�”}”(hŒatomic_long_dec_return_relaxed”h]”j)�”}”(hŒatomic_long_dec_return_relaxed”h]”hŒatomic_long_dec_return_relaxed”…”�”•}”(hjiãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeãubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjDãh²hh³jVãh´MÞubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjˆãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŠãŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjkãsbŒ c.atomic_long_dec_return_relaxed”†”asbuh1hhj�ãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�ãubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¶ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�ãubj)�”}”(hjph]”hŒv”…”�”}”(hjÃãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj}ãubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjDãh²hh³jVãh´MÞubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj@ãh²hh³jVãh´MÞubah}”(h]”j;ãah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jVãh´MÞhj=ãh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hjìãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞhjéãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj=ãh²hh³jVãh´MÞubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjäjHjäjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_dec_return_relaxed() there. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mâhjäubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj-äh]”hŒatomic_long_t *v”…”�”}”(hj/äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj+äubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mßhj'äubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjFäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jBäh´MßhjCäubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj'äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jBäh´Mßhj$äubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjäubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjhäh]”hŒ Description”…”�”}”(hjjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfäubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MáhjäubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj~äh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj†äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~äubhŒ to (”…”�”}”(hj~äh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj˜äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~äubhŒ - 1) with relaxed ordering.”…”�”}”(hj~äh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MàhjäubjM)�”}”(hŒNUnsafe to use in noinstr code; use raw_atomic_long_dec_return_relaxed() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_dec_return_relaxed() there.”…”�”}”(hj±äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MâhjäubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÂäh]”hŒReturn”…”�”}”(hjÄäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀäubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MähjäubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjØäh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjàäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØäubhŒ.”…”�”}”(hjØäh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Måhjäubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic_long_fetch_dec (C function)”Œc.atomic_long_fetch_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-long atomic_long_fetch_dec (atomic_long_t *v)”h]”hù)�”}”(hŒ,long atomic_long_fetch_dec(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjåh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(åh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjåh²hh³j'åh´Mïubhÿ)�”}”(hŒatomic_long_fetch_dec”h]”j)�”}”(hŒatomic_long_fetch_dec”h]”hŒatomic_long_fetch_dec”…”�”}”(hj:åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6åubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjåh²hh³j'åh´Mïubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjYåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j[åŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj<åsbŒc.atomic_long_fetch_dec”†”asbuh1hhjRåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyåh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRåubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‡åh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRåubj)�”}”(hjph]”hŒv”…”�”}”(hj”åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjNåubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjåh²hh³j'åh´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjåh²hh³j'åh´Mïubah}”(h]”j åah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j'åh´Mïhjåh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hj½åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mïhjºåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjåh²hh³j'åh´Mïubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÕåjHjÕåjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒþ**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_dec() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MóhjÙåubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjþåh]”hŒatomic_long_t *v”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjüåubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MðhjøåubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÙåubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj9æh]”hŒ Description”…”�”}”(hj;æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7æubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MòhjÙåubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjOæh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjWæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOæubhŒ to (”…”�”}”(hjOæh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjiæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOæubhŒ - 1) with full ordering.”…”�”}”(hjOæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MñhjÙåubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_dec() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_dec() there.”…”�”}”(hj‚æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MóhjÙåubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj“æh]”hŒReturn”…”�”}”(hj•æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘æubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MõhjÙåubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj©æh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj±æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj©æubhŒ.”…”�”}”(hj©æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MöhjÙåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_dec_acquire (C function)”Œc.atomic_long_fetch_dec_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5long atomic_long_fetch_dec_acquire (atomic_long_t *v)”h]”hù)�”}”(hŒ4long atomic_long_fetch_dec_acquire(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjêæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjææh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùæh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjææh²hh³jøæh´Mubhÿ)�”}”(hŒatomic_long_fetch_dec_acquire”h]”j)�”}”(hŒatomic_long_fetch_dec_acquire”h]”hŒatomic_long_fetch_dec_acquire”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjææh²hh³jøæh´Mubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj*çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j,çŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj çsbŒc.atomic_long_fetch_dec_acquire”†”asbuh1hhj#çubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJçh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#çubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjXçh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj#çubj)�”}”(hjph]”hŒv”…”�”}”(hjeçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjçubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjææh²hh³jøæh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjâæh²hh³jøæh´Mubah}”(h]”jÝæah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jøæh´Mhjßæh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hjŽçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj‹çh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjßæh²hh³jøæh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¦çjHj¦çjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_dec_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjªçubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjÏçh]”hŒatomic_long_t *v”…”�”}”(hjÑçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÍçubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÉçubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjèçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jäçh´Mhjåçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÉçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jäçh´MhjÆçubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjªçubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjªçubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj èh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj(èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj èubhŒ to (”…”�”}”(hj èh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj:èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj èubhŒ - 1) with acquire ordering.”…”�”}”(hj èh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjªçubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_dec_acquire() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_dec_acquire() there.”…”�”}”(hjSèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjªçubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjdèh]”hŒReturn”…”�”}”(hjfèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbèubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjªçubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjzèh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‚èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzèubhŒ.”…”�”}”(hjzèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjªçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_dec_release (C function)”Œc.atomic_long_fetch_dec_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5long atomic_long_fetch_dec_release (atomic_long_t *v)”h]”hù)�”}”(hŒ4long atomic_long_fetch_dec_release(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj»èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj·èh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊèh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·èh²hh³jÉèh´Mubhÿ)�”}”(hŒatomic_long_fetch_dec_release”h]”j)�”}”(hŒatomic_long_fetch_dec_release”h]”hŒatomic_long_fetch_dec_release”…”�”}”(hjÜèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØèubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj·èh²hh³jÉèh´Mubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjûèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jýèŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÞèsbŒc.atomic_long_fetch_dec_release”†”asbuh1hhjôèubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôèubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj)éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjôèubj)�”}”(hjph]”hŒv”…”�”}”(hj6éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjðèubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj·èh²hh³jÉèh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj³èh²hh³jÉèh´Mubah}”(h]”j®èah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÉèh´Mhj°èh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hj_éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj\éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj°èh²hh³jÉèh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjwéjHjwéjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_dec_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj{éubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj éh]”hŒatomic_long_t *v”…”�”}”(hj¢éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjžéubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjšéubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj¹éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jµéh´Mhj¶éubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjšéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jµéh´Mhj—éubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj{éubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj{éubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjñéh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjùéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñéubhŒ to (”…”�”}”(hjñéh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñéubhŒ - 1) with release ordering.”…”�”}”(hjñéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj{éubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_dec_release() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_dec_release() there.”…”�”}”(hj$êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj{éubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj5êh]”hŒReturn”…”�”}”(hj7êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3êubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj{éubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjKêh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjSêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKêubhŒ.”…”�”}”(hjKêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj{éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_dec_relaxed (C function)”Œc.atomic_long_fetch_dec_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5long atomic_long_fetch_dec_relaxed (atomic_long_t *v)”h]”hù)�”}”(hŒ4long atomic_long_fetch_dec_relaxed(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjŒêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjˆêh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›êh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjˆêh²hh³jšêh´M$ubhÿ)�”}”(hŒatomic_long_fetch_dec_relaxed”h]”j)�”}”(hŒatomic_long_fetch_dec_relaxed”h]”hŒatomic_long_fetch_dec_relaxed”…”�”}”(hj­êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©êubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjˆêh²hh³jšêh´M$ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÌêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÎêŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¯êsbŒc.atomic_long_fetch_dec_relaxed”†”asbuh1hhjÅêubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìêh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅêubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjúêh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÅêubj)�”}”(hjph]”hŒv”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁêubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjˆêh²hh³jšêh´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj„êh²hh³jšêh´M$ubah}”(h]”jêah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jšêh´M$hj�êh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj0ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M$hj-ëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�êh²hh³jšêh´M$ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjHëjHjHëjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_dec_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M(hjLëubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjqëh]”hŒatomic_long_t *v”…”�”}”(hjsëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoëubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M%hjkëubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjŠëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j†ëh´M%hj‡ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjkëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j†ëh´M%hjhëubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjLëubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M'hjLëubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÂëh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÊëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂëubhŒ to (”…”�”}”(hjÂëh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÜëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂëubhŒ - 1) with relaxed ordering.”…”�”}”(hjÂëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M&hjLëubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_dec_relaxed() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_dec_relaxed() there.”…”�”}”(hjõëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M(hjLëubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjìh]”hŒReturn”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M*hjLëubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjìh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj$ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjìubhŒ.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M+hjLëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_long_and (C function)”Œc.atomic_long_and”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void atomic_long_and (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ.void atomic_long_and(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj]ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjYìh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjYìh²hh³jkìh´M5ubhÿ)�”}”(hŒatomic_long_and”h]”j)�”}”(hŒatomic_long_and”h]”hŒatomic_long_and”…”�”}”(hj~ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzìubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjYìh²hh³jkìh´M5ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjšìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj–ìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj–ìubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¶ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj’ìubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÑìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÓìŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj€ìsbŒc.atomic_long_and”†”asbuh1hhjÊìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÊìubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÿìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÊìubj)�”}”(hjph]”hŒv”…”�”}”(hj íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj’ìubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjYìh²hh³jkìh´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjUìh²hh³jkìh´M5ubah}”(h]”jPìah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jkìh´M5hjRìh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hj5íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M5hj2íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjRìh²hh³jkìh´M5ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjMíjHjMíjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_and() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjWíh]”hŒ Parameters”…”�”}”(hjYíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjUíubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M9hjQíubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjvíh]”hŒlong i”…”�”}”(hjxíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjtíubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M6hjpíubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj�íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‹íh´M6hjŒíubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjpíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‹íh´M6hjmíubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj¯íh]”hŒatomic_long_t *v”…”�”}”(hj±íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj­íubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M7hj©íubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÈíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÄíh´M7hjÅíubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj©íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÄíh´M7hjmíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjQíubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M9hjQíubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjîh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîubhŒ to (”…”�”}”(hjîh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîubhŒ & ”…”�”}”(hjîh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj,îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîubhŒ) with relaxed ordering.”…”�”}”(hjîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M8hjQíubjM)�”}”(hŒ?Unsafe to use in noinstr code; use raw_atomic_long_and() there.”h]”hŒ?Unsafe to use in noinstr code; use raw_atomic_long_and() there.”…”�”}”(hjEîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M:hjQíubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjVîh]”hŒReturn”…”�”}”(hjXîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTîubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M<hjQíubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjlîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M=hjQíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic_long_fetch_and (C function)”Œc.atomic_long_fetch_and”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5long atomic_long_fetch_and (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ4long atomic_long_fetch_and(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj›îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj—îh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MGubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj—îh²hh³j©îh´MGubhÿ)�”}”(hŒatomic_long_fetch_and”h]”j)�”}”(hŒatomic_long_fetch_and”h]”hŒatomic_long_fetch_and”…”�”}”(hj¼îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸îubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj—îh²hh³j©îh´MGubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjØîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÔîubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔîubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjôîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÐîubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jïŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¾îsbŒc.atomic_long_fetch_and”†”asbuh1hhjïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/ïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjïubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj=ïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjïubj)�”}”(hjph]”hŒv”…”�”}”(hjJïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÐîubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj—îh²hh³j©îh´MGubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj“îh²hh³j©îh´MGubah}”(h]”jŽîah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j©îh´MGhj�îh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic bitwise AND with full ordering”h]”hŒ%atomic bitwise AND with full ordering”…”�”}”(hjsïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MGhjpïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�îh²hh³j©îh´MGubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‹ïjHj‹ïjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_and() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKhj�ïubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj´ïh]”hŒlong i”…”�”}”(hj¶ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MHhj®ïubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjÍïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÉïh´MHhjÊïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj®ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÉïh´MHhj«ïubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjíïh]”hŒatomic_long_t *v”…”�”}”(hjïïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjëïubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MIhjçïubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jðh´MIhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjçïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jðh´MIhj«ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�ïubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKhj�ïubjM)�”}”(hŒ?Atomically updates **v** to (**v** & **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj>ðh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjFðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ðubhŒ to (”…”�”}”(hj>ðh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjXðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ðubhŒ & ”…”�”}”(hj>ðh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>ðubhŒ) with full ordering.”…”�”}”(hj>ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MJhj�ïubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_and() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_and() there.”…”�”}”(hjƒðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MLhj�ïubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj”ðh]”hŒReturn”…”�”}”(hj–ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MNhj�ïubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjªðh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj²ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªðubhŒ.”…”�”}”(hjªðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MOhj�ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_and_acquire (C function)”Œc.atomic_long_fetch_and_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=long atomic_long_fetch_and_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ}”(hj×øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓøubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M•hjÏøubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjôøh]”hŒlong i”…”�”}”(hjöøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjòøubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M’hjîøubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj-ùh]”hŒatomic_long_t *v”…”�”}”(hj/ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj+ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M“hj'ùubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjFùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jBùh´M“hjCùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj'ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jBùh´M“hjëøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÏøubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjhùh]”hŒ Description”…”�”}”(hjjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfùubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M•hjÏøubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj~ùh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj†ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ùubhŒ to (”…”�”}”(hj~ùh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj˜ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ùubhŒ & ”…”�”}”(hj~ùh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjªùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ùubhŒ) with relaxed ordering.”…”�”}”(hj~ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M”hjÏøubjM)�”}”(hŒBUnsafe to use in noinstr code; use raw_atomic_long_andnot() there.”h]”hŒBUnsafe to use in noinstr code; use raw_atomic_long_andnot() there.”…”�”}”(hjÃùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M–hjÏøubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÔùh]”hŒReturn”…”�”}”(hjÖùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒùubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M˜hjÏøubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjêùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M™hjÏøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_long_fetch_andnot (C function)”Œc.atomic_long_fetch_andnot”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8long atomic_long_fetch_andnot (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ7long atomic_long_fetch_andnot(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjúh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(úh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjúh²hh³j'úh´M£ubhÿ)�”}”(hŒatomic_long_fetch_andnot”h]”j)�”}”(hŒatomic_long_fetch_andnot”h]”hŒatomic_long_fetch_andnot”…”�”}”(hj:úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6úubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjúh²hh³j'úh´M£ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjVúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjRúubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdúh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRúubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjrúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjNúubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj�úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�úŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj<úsbŒc.atomic_long_fetch_andnot”†”asbuh1hhj†úubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­úh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†úubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj»úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj†úubj)�”}”(hjph]”hŒv”…”�”}”(hjÈúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjNúubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjúh²hh³j'úh´M£ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjúh²hh³j'úh´M£ubah}”(h]”j úah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j'úh´M£hjúh²hubj4)�”}”(hhh]”jM)�”}”(hŒ)atomic bitwise AND NOT with full ordering”h]”hŒ)atomic bitwise AND NOT with full ordering”…”�”}”(hjñúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M£hjîúh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjúh²hh³j'úh´M£ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj ûjHj ûjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **~i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_andnot() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M§hj ûubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj2ûh]”hŒlong i”…”�”}”(hj4ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¤hj,ûubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjKûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jGûh´M¤hjHûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jGûh´M¤hj)ûubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjkûh]”hŒatomic_long_t *v”…”�”}”(hjmûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjiûubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¥hjeûubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj„ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€ûh´M¥hj�ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjeûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€ûh´M¥hj)ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ûubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M§hj ûubjM)�”}”(hŒ@Atomically updates **v** to (**v** & **~i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¼ûh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÄûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼ûubhŒ to (”…”�”}”(hj¼ûh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÖûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼ûubhŒ & ”…”�”}”(hj¼ûh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjèûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼ûubhŒ) with full ordering.”…”�”}”(hj¼ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¦hj ûubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_long_fetch_andnot() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_long_fetch_andnot() there.”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¨hj ûubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjüh]”hŒReturn”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mªhj ûubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj(üh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj0üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(üubhŒ.”…”�”}”(hj(üh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M«hj ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-atomic_long_fetch_andnot_acquire (C function)”Œ"c.atomic_long_fetch_andnot_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@long atomic_long_fetch_andnot_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ?long atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjiüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjeüh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjeüh²hh³jwüh´M¶ubhÿ)�”}”(hŒ atomic_long_fetch_andnot_acquire”h]”j)�”}”(hŒ atomic_long_fetch_andnot_acquire”h]”hŒ atomic_long_fetch_andnot_acquire”…”�”}”(hjŠüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†üubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjeüh²hh³jwüh´M¶ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¦üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¢üubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´üh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¢üubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÂüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjžüubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÝüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jßüŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŒüsbŒ"c.atomic_long_fetch_andnot_acquire”†”asbuh1hhjÖüubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖüubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÖüubj)�”}”(hjph]”hŒv”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjžüubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjeüh²hh³jwüh´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjaüh²hh³jwüh´M¶ubah}”(h]”j\üah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jwüh´M¶hj^üh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with acquire ordering”h]”hŒ,atomic bitwise AND NOT with acquire ordering”…”�”}”(hjAýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¶hj>ýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj^üh²hh³jwüh´M¶ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjYýjHjYýjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX***Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **~i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_andnot_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjcýh]”hŒ Parameters”…”�”}”(hjeýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaýubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mºhj]ýubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj‚ýh]”hŒlong i”…”�”}”(hj„ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj€ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M·hj|ýubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj›ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j—ýh´M·hj˜ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj|ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j—ýh´M·hjyýubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj»ýh]”hŒatomic_long_t *v”…”�”}”(hj½ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¹ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸hjµýubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÔýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÐýh´M¸hjÑýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjµýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÐýh´M¸hjyýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj]ýubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mºhj]ýubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj þh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj þubhŒ to (”…”�”}”(hj þh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj&þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj þubhŒ & ”…”�”}”(hj þh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hj8þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj þubhŒ) with acquire ordering.”…”�”}”(hj þh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¹hj]ýubjM)�”}”(hŒPUnsafe to use in noinstr code; use raw_atomic_long_fetch_andnot_acquire() there.”h]”hŒPUnsafe to use in noinstr code; use raw_atomic_long_fetch_andnot_acquire() there.”…”�”}”(hjQþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M»hj]ýubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjbþh]”hŒReturn”…”�”}”(hjdþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`þubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M½hj]ýubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjxþh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxþubhŒ.”…”�”}”(hjxþh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¾hj]ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-atomic_long_fetch_andnot_release (C function)”Œ"c.atomic_long_fetch_andnot_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@long atomic_long_fetch_andnot_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ?long atomic_long_fetch_andnot_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¹þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµþh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÈubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµþh²hh³jÇþh´MÈubhÿ)�”}”(hŒ atomic_long_fetch_andnot_release”h]”j)�”}”(hŒ atomic_long_fetch_andnot_release”h]”hŒ atomic_long_fetch_andnot_release”…”�”}”(hjÚþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖþubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjµþh²hh³jÇþh´MÈubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjöþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjòþubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòþubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîþubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj-ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j/ÿŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÜþsbŒ"c.atomic_long_fetch_andnot_release”†”asbuh1hhj&ÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj&ÿubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj[ÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj&ÿubj)�”}”(hjph]”hŒv”…”�”}”(hjhÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîþubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjµþh²hh³jÇþh´MÈubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj±þh²hh³jÇþh´MÈubah}”(h]”j¬þah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÇþh´MÈhj®þh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with release ordering”h]”hŒ,atomic bitwise AND NOT with release ordering”…”�”}”(hj‘ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÈhjŽÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj®þh²hh³jÇþh´MÈubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj©ÿjHj©ÿjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX***Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **~i**) with release ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_andnot_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌhj­ÿubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjÒÿh]”hŒlong i”…”�”}”(hjÔÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÐÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÉhjÌÿubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjëÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj h]”hŒatomic_long_t *v”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÊhjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j h´MÊhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j h´MÊhjÉÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj­ÿubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjFh]”hŒ Description”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌhj­ÿubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ to (”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ & ”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ) with release ordering.”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MËhj­ÿubjM)�”}”(hŒPUnsafe to use in noinstr code; use raw_atomic_long_fetch_andnot_release() there.”h]”hŒPUnsafe to use in noinstr code; use raw_atomic_long_fetch_andnot_release() there.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÍhj­ÿubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj²h]”hŒReturn”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÏhj­ÿubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÈh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈubhŒ.”…”�”}”(hjÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐhj­ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-atomic_long_fetch_andnot_relaxed (C function)”Œ"c.atomic_long_fetch_andnot_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@long atomic_long_fetch_andnot_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ?long atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÛubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³jh´MÛubhÿ)�”}”(hŒ atomic_long_fetch_andnot_relaxed”h]”j)�”}”(hŒ atomic_long_fetch_andnot_relaxed”h]”hŒ atomic_long_fetch_andnot_relaxed”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³jh´MÛubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjBubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjBubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj,sbŒ"c.atomic_long_fetch_andnot_relaxed”†”asbuh1hhjvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjvubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjvubj)�”}”(hjph]”hŒv”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³jh´MÛubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³jh´MÛubah}”(h]”jüah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´MÛhjþh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed ordering”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÛhjÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjþh²hh³jh´MÛubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjùjHjùjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX***Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **~i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_andnot_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mßhjýubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj"h]”hŒlong i”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÜhjubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j7h´MÜhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j7h´MÜhjubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj[h]”hŒatomic_long_t *v”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝhjUubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jph´MÝhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jph´MÝhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjýubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MßhjýubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¬h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬ubhŒ to (”…”�”}”(hj¬h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬ubhŒ & ”…”�”}”(hj¬h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬ubhŒ) with relaxed ordering.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞhjýubjM)�”}”(hŒPUnsafe to use in noinstr code; use raw_atomic_long_fetch_andnot_relaxed() there.”h]”hŒPUnsafe to use in noinstr code; use raw_atomic_long_fetch_andnot_relaxed() there.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MàhjýubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MâhjýubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mãhjýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_long_or (C function)”Œc.atomic_long_or”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.void atomic_long_or (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ-void atomic_long_or(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjUh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjUh²hh³jgh´Míubhÿ)�”}”(hŒatomic_long_or”h]”j)�”}”(hŒatomic_long_or”h]”hŒatomic_long_or”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjUh²hh³jgh´Míubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj’ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÏŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj|sbŒc.atomic_long_or”†”asbuh1hhjÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÆubj)�”}”(hjph]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjUh²hh³jgh´Míubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjQh²hh³jgh´Míubah}”(h]”jLah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jgh´MíhjNh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with relaxed ordering”h]”hŒ'atomic bitwise OR with relaxed ordering”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Míhj.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjNh²hh³jgh´Míubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjIjHjIjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** | **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_or() there. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjSh]”hŒ Parameters”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MñhjMubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjrh]”hŒlong i”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MîhjlubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‡h´Mîhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‡h´Mîhjiubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj«h]”hŒatomic_long_t *v”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mïhj¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÀh´MïhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÀh´Mïhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjMubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MñhjMubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjüh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüubhŒ to (”…”�”}”(hjüh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüubhŒ | ”…”�”}”(hjüh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüubhŒ) with relaxed ordering.”…”�”}”(hjüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MðhjMubjM)�”}”(hŒ>Unsafe to use in noinstr code; use raw_atomic_long_or() there.”h]”hŒ>Unsafe to use in noinstr code; use raw_atomic_long_or() there.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MòhjMubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjRh]”hŒReturn”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MôhjMubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MõhjMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!atomic_long_fetch_or (C function)”Œc.atomic_long_fetch_or”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4long atomic_long_fetch_or (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ3long atomic_long_fetch_or(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj“h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“h²hh³j¥h´Mÿubhÿ)�”}”(hŒatomic_long_fetch_or”h]”j)�”}”(hŒatomic_long_fetch_or”h]”hŒatomic_long_fetch_or”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj“h²hh³j¥h´Mÿubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÐubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÐubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÌubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjºsbŒc.atomic_long_fetch_or”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hjph]”hŒv”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÌubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj“h²hh³j¥h´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�h²hh³j¥h´Mÿubah}”(h]”jŠah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¥h´MÿhjŒh²hubj4)�”}”(hhh]”jM)�”}”(hŒ$atomic bitwise OR with full ordering”h]”hŒ$atomic bitwise OR with full ordering”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mÿhjlh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŒh²hh³j¥h´Mÿubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‡jHj‡jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** | **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_or() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj‹ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj°h]”hŒlong i”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjªubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÅh´MhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÅh´Mhj§ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjéh]”hŒatomic_long_t *v”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjãubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jþh´Mhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jþh´Mhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‹ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj‹ubjM)�”}”(hŒ?Atomically updates **v** to (**v** | **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:ubhŒ to (”…”�”}”(hj:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:ubhŒ | ”…”�”}”(hj:h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:ubhŒ) with full ordering.”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj‹ubjM)�”}”(hŒDUnsafe to use in noinstr code; use raw_atomic_long_fetch_or() there.”h]”hŒDUnsafe to use in noinstr code; use raw_atomic_long_fetch_or() there.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj‹ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�h]”hŒReturn”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj‹ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¦h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦ubhŒ.”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)atomic_long_fetch_or_acquire (C function)”Œc.atomic_long_fetch_or_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒhj{ ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj–h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–ubhŒ.”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”•'h´M?hj{ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_long_xor (C function)”Œc.atomic_long_xor”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void atomic_long_xor (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ.void atomic_long_xor(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÓh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MIubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÓh²hh³jåh´MIubhÿ)�”}”(hŒatomic_long_xor”h]”j)�”}”(hŒatomic_long_xor”h]”hŒatomic_long_xor”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÓh²hh³jåh´MIubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jMŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjúsbŒc.atomic_long_xor”†”asbuh1hhjDubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjDubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjDubj)�”}”(hjph]”hŒv”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÓh²hh³jåh´MIubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÏh²hh³jåh´MIubah}”(h]”jÊah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jåh´MIhjÌh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MIhj¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÌh²hh³jåh´MIubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÇjHjÇjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** ^ **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_xor() there. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MMhjËubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjðh]”hŒlong i”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MJhjêubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´MJhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´MJhjçubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj)h]”hŒatomic_long_t *v”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKhj#ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j>h´MKhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j>h´MKhjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjËubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjdh]”hŒ Description”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MMhjËubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjzh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzubhŒ to (”…”�”}”(hjzh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzubhŒ ^ ”…”�”}”(hjzh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzubhŒ) with relaxed ordering.”…”�”}”(hjzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MLhjËubjM)�”}”(hŒ?Unsafe to use in noinstr code; use raw_atomic_long_xor() there.”h]”hŒ?Unsafe to use in noinstr code; use raw_atomic_long_xor() there.”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MNhjËubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÐh]”hŒReturn”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MPhjËubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MQhjËubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic_long_fetch_xor (C function)”Œc.atomic_long_fetch_xor”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5long atomic_long_fetch_xor (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ4long atomic_long_fetch_xor(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M[ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j#h´M[ubhÿ)�”}”(hŒatomic_long_fetch_xor”h]”j)�”}”(hŒatomic_long_fetch_xor”h]”hŒatomic_long_fetch_xor”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j#h´M[ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjNubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjNubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjJubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‹Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj8sbŒc.atomic_long_fetch_xor”†”asbuh1hhj‚ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‚ubj)�”}”(hjph]”hŒv”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjJubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³j#h´M[ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj h²hh³j#h´M[ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j#h´M[hj h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic bitwise XOR with full ordering”h]”hŒ%atomic bitwise XOR with full ordering”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M[hjêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj h²hh³j#h´M[ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** ^ **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_xor() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M_hj ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj.h]”hŒlong i”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M\hj(ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jCh´M\hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jCh´M\hj%ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjgh]”hŒatomic_long_t *v”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M]hjaubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j|h´M]hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j|h´M]hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M_hj ubjM)�”}”(hŒ?Atomically updates **v** to (**v** ^ **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸ubhŒ to (”…”�”}”(hj¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸ubhŒ ^ ”…”�”}”(hj¸h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸ubhŒ) with full ordering.”…”�”}”(hj¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M^hj ubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_xor() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic_long_fetch_xor() there.”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M`hj ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mbhj ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj$h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$ubhŒ.”…”�”}”(hj$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mchj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*atomic_long_fetch_xor_acquire (C function)”Œc.atomic_long_fetch_xor_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=long atomic_long_fetch_xor_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j{Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj(sbŒc.atomic_long_fetch_xor_relaxed”†”asbuh1hhjrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjrubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjrubj)�”}”(hjph]”hŒv”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³jh´M“ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjýh²hh³jh´M“ubah}”(h]”jøah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´M“hjúh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M“hjÚh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjúh²hh³jh´M“ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjõjHjõjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX&**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** ^ **i**) with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_fetch_xor_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÿh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M—hjùubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjh]”hŒlong i”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M”hjubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j3h´M”hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j3h´M”hjubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjWh]”hŒatomic_long_t *v”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M•hjQubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jlh´M•hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jlh´M•hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjùubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M—hjùubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¨h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨ubhŒ to (”…”�”}”(hj¨h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨ubhŒ ^ ”…”�”}”(hj¨h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨ubhŒ) with relaxed ordering.”…”�”}”(hj¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M–hjùubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_xor_relaxed() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_xor_relaxed() there.”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M˜hjùubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjþh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MšhjùubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M›hjùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic_long_xchg (C function)”Œc.atomic_long_xchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2long atomic_long_xchg (atomic_long_t *v, long new)”h]”hù)�”}”(hŒ1long atomic_long_xchg(atomic_long_t *v, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjQh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¥ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQh²hh³jch´M¥ubhÿ)�”}”(hŒatomic_long_xchg”h]”j)�”}”(hŒatomic_long_xchg”h]”hŒatomic_long_xchg”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjQh²hh³jch´M¥ubj4)�”}”(hŒ(atomic_long_t *v, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j—Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjxsbŒc.atomic_long_xchg”†”asbuh1hhjŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŽubj)�”}”(hjph]”hŒv”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŠubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjäubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjäubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŠubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjQh²hh³jch´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjMh²hh³jch´M¥ubah}”(h]”jHah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jch´M¥hjJh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic exchange with full ordering”h]”hŒ"atomic exchange with full ordering”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¥hj+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjJh²hh³jch´M¥ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjFjHjFjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long new`` long value to assign **Description** Atomically updates **v** to **new** with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_xchg() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjPh]”hŒ Parameters”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M©hjJubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjoh]”hŒatomic_long_t *v”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¦hjiubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j„h´M¦hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„h´M¦hjfubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj¨h]”hŒlong new”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M§hj¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j½h´M§hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j½h´M§hjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjJubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M©hjJubjM)�”}”(hŒ7Atomically updates **v** to **new** with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjùh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùubhŒ to ”…”�”}”(hjùh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùubhŒ with full ordering.”…”�”}”(hjùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¨hjJubjM)�”}”(hŒ@Unsafe to use in noinstr code; use raw_atomic_long_xchg() there.”h]”hŒ@Unsafe to use in noinstr code; use raw_atomic_long_xchg() there.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MªhjJubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj=h]”hŒReturn”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¬hjJubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjSh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSubhŒ.”…”�”}”(hjSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M­hjJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_long_xchg_acquire (C function)”Œc.atomic_long_xchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long atomic_long_xchg_acquire (atomic_long_t *v, long new)”h]”hù)�”}”(hŒ9long atomic_long_xchg_acquire(atomic_long_t *v, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�h²hh³j¢h´M¸ubhÿ)�”}”(hŒatomic_long_xchg_acquire”h]”j)�”}”(hŒatomic_long_xchg_acquire”h]”hŒatomic_long_xchg_acquire”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�h²hh³j¢h´M¸ubj4)�”}”(hŒ(atomic_long_t *v, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÖŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj·sbŒc.atomic_long_xchg_acquire”†”asbuh1hhjÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍubj)�”}”(hjph]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÉubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÉubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�h²hh³j¢h´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŒh²hh³j¢h´M¸ubah}”(h]”j‡ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¢h´M¸hj‰h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with acquire ordering”h]”hŒ%atomic exchange with acquire ordering”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¸hjjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‰h²hh³j¢h´M¸ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj…jHj…jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX%**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long new`` long value to assign **Description** Atomically updates **v** to **new** with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_xchg_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¼hj‰ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj®h]”hŒatomic_long_t *v”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¹hj¨ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hjçh]”hŒlong new”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MºhjáubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj‰ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¼hj‰ubjM)�”}”(hŒ:Atomically updates **v** to **new** with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ to ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ with acquire ordering.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M»hj‰ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_long_xchg_acquire() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_long_xchg_acquire() there.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M½hj‰ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj|h]”hŒReturn”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¿hj‰ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj’h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ubhŒ.”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÀhj‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_long_xchg_release (C function)”Œc.atomic_long_xchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long atomic_long_xchg_release (atomic_long_t *v, long new)”h]”hù)�”}”(hŒ9long atomic_long_xchg_release(atomic_long_t *v, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÏh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÊubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÏh²hh³jáh´MÊubhÿ)�”}”(hŒatomic_long_xchg_release”h]”j)�”}”(hŒatomic_long_xchg_release”h]”hŒatomic_long_xchg_release”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÏh²hh³jáh´MÊubj4)�”}”(hŒ(atomic_long_t *v, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjösbŒc.atomic_long_xchg_release”†”asbuh1hhj ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ubj)�”}”(hjph]”hŒv”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjbubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÏh²hh³jáh´MÊubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjËh²hh³jáh´MÊubah}”(h]”jÆah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jáh´MÊhjÈh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with release ordering”h]”hŒ%atomic exchange with release ordering”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÊhj©h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÈh²hh³jáh´MÊubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÄjHjÄjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX%**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long new`` long value to assign **Description** Atomically updates **v** to **new** with release ordering. Unsafe to use in noinstr code; use raw_atomic_long_xchg_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÎhjÈubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjíh]”hŒatomic_long_t *v”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MËhjçubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj& h]”hŒlong new”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌhj ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÈubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hja h]”hŒ Description”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÎhjÈubjM)�”}”(hŒ:Atomically updates **v** to **new** with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjw h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw ubhŒ to ”…”�”}”(hjw h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw ubhŒ with release ordering.”…”�”}”(hjw h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÍhjÈubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_long_xchg_release() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_long_xchg_release() there.”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÏhjÈubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj» h]”hŒReturn”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑhjÈubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÑ h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑ ubhŒ.”…”�”}”(hjÑ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÒhjÈubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_long_xchg_relaxed (C function)”Œc.atomic_long_xchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long atomic_long_xchg_relaxed (atomic_long_t *v, long new)”h]”hù)�”}”(hŒ9long atomic_long_xchg_relaxed(atomic_long_t *v, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj!h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!h²hh³j !h´MÝubhÿ)�”}”(hŒatomic_long_xchg_relaxed”h]”j)�”}”(hŒatomic_long_xchg_relaxed”h]”hŒatomic_long_xchg_relaxed”…”�”}”(hj3!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/!ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj!h²hh³j !h´MÝubj4)�”}”(hŒ(atomic_long_t *v, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjR!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jT!Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj5!sbŒc.atomic_long_xchg_relaxed”†”asbuh1hhjK!ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjK!ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj€!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjK!ubj)�”}”(hjph]”hŒv”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjG!ubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¥!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¡!ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡!ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjÁ!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjG!ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj!h²hh³j !h´MÝubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj !h²hh³j !h´MÝubah}”(h]”j!ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j !h´MÝhj!h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with relaxed ordering”h]”hŒ%atomic exchange with relaxed ordering”…”�”}”(hjë!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÝhjè!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj!h²hh³j !h´MÝubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj"jHj"jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX%**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long new`` long value to assign **Description** Atomically updates **v** to **new** with relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_xchg_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Máhj"ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj,"h]”hŒatomic_long_t *v”…”�”}”(hj."h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj*"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞhj&"ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjE"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jA"h´MÞhjB"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj&"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jA"h´MÞhj#"ubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hje"h]”hŒlong new”…”�”}”(hjg"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjc"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mßhj_"ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hj~"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jz"h´Mßhj{"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj_"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jz"h´Mßhj#"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj"ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Máhj"ubjM)�”}”(hŒ:Atomically updates **v** to **new** with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¶"h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¾"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶"ubhŒ to ”…”�”}”(hj¶"h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjÐ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶"ubhŒ with relaxed ordering.”…”�”}”(hj¶"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Màhj"ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_long_xchg_relaxed() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_long_xchg_relaxed() there.”…”�”}”(hjé"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mâhj"ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjú"h]”hŒReturn”…”�”}”(hjü"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjø"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mähj"ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj#h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#ubhŒ.”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Måhj"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_long_cmpxchg (C function)”Œc.atomic_long_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ?long atomic_long_cmpxchg (atomic_long_t *v, long old, long new)”h]”hù)�”}”(hŒ>long atomic_long_cmpxchg(atomic_long_t *v, long old, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjQ#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjM#h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjM#h²hh³j_#h´Mïubhÿ)�”}”(hŒatomic_long_cmpxchg”h]”j)�”}”(hŒatomic_long_cmpxchg”h]”hŒatomic_long_cmpxchg”…”�”}”(hjr#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn#ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjM#h²hh³j_#h´Mïubj4)�”}”(hŒ&(atomic_long_t *v, long old, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj‘#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j“#Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjt#sbŒc.atomic_long_cmpxchg”†”asbuh1hhjŠ#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠ#ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¿#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŠ#ubj)�”}”(hjph]”hŒv”…”�”}”(hjÌ#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj†#ubj:)�”}”(hŒlong old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjä#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjà#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjà#ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjà#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj†#ubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj5$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj†#ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjM#h²hh³j_#h´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjI#h²hh³j_#h´Mïubah}”(h]”jD#ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j_#h´MïhjF#h²hubj4)�”}”(hhh]”jM)�”}”(hŒ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hj_$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mïhj\$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjF#h²hh³j_#h´Mïubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjw$jHjw$jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX¢**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long old`` long value to compare with ``long new`` long value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_cmpxchg() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”•h´Móhj{$ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj $h]”hŒatomic_long_t *v”…”�”}”(hj¢$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjž$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mðhjš$ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj¹$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``long old`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long old``”h]”jS)�”}”(hjÙ$h]”hŒlong old”…”�”}”(hjÛ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj×$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MñhjÓ$ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hjò$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj%h]”hŒlong new”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mòhj %ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hj+%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj{$ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjM%h]”hŒ Description”…”�”}”(hjO%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Môhj{$ubjM)�”}”(hŒ‘If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjc%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjk%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc%ubhŒ == ”…”�”}”(hjc%h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj}%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc%ubhŒ), atomically updates ”…”�”}”(hjc%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc%ubhŒ to ”…”�”}”(hjc%h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj¡%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc%ubhŒ with full ordering. Otherwise, ”…”�”}”(hjc%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj³%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc%ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjc%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Móhj{$ubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_long_cmpxchg() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_long_cmpxchg() there.”…”�”}”(hjÌ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Möhj{$ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÝ%h]”hŒReturn”…”�”}”(hjß%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Møhj{$ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjó%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjû%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjó%ubhŒ.”…”�”}”(hjó%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mùhj{$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic_long_cmpxchg_acquire (C function)”Œc.atomic_long_cmpxchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒGlong atomic_long_cmpxchg_acquire (atomic_long_t *v, long old, long new)”h]”hù)�”}”(hŒFlong atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj4&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj0&h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0&h²hh³jB&h´Mubhÿ)�”}”(hŒatomic_long_cmpxchg_acquire”h]”j)�”}”(hŒatomic_long_cmpxchg_acquire”h]”hŒatomic_long_cmpxchg_acquire”…”�”}”(hjU&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQ&ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0&h²hh³jB&h´Mubj4)�”}”(hŒ&(atomic_long_t *v, long old, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjt&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jv&Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjW&sbŒc.atomic_long_cmpxchg_acquire”†”asbuh1hhjm&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjm&ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¢&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjm&ubj)�”}”(hjph]”hŒv”…”�”}”(hj¯&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjm&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hji&ubj:)�”}”(hŒlong old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÇ&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÃ&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÃ&ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjã&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃ&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hji&ubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjü&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjø&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjø&ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjø&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hji&ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj0&h²hh³jB&h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,&h²hh³jB&h´Mubah}”(h]”j'&ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jB&h´Mhj)&h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(hjB'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj?'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj)&h²hh³jB&h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjZ'jHjZ'jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX­**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long old`` long value to compare with ``long new`` long value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_cmpxchg_acquire() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjd'h]”hŒ Parameters”…”�”}”(hjf'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjb'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj^'ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjƒ'h]”hŒatomic_long_t *v”…”�”}”(hj…'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj}'ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjœ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j˜'h´Mhj™'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj}'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j˜'h´Mhjz'ubj©)�”}”(hŒ(``long old`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long old``”h]”jS)�”}”(hj¼'h]”hŒlong old”…”�”}”(hj¾'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjº'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj¶'ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hjÕ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÑ'h´MhjÒ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¶'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÑ'h´Mhjz'ubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hjõ'h]”hŒlong new”…”�”}”(hj÷'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjó'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhjï'ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j (h´Mhj (ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjï'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j (h´Mhjz'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj^'ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj0(h]”hŒ Description”…”�”}”(hj2(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj^'ubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjF(h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjN(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF(ubhŒ == ”…”�”}”(hjF(h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj`(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF(ubhŒ), atomically updates ”…”�”}”(hjF(h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjr(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF(ubhŒ to ”…”�”}”(hjF(h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj„(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF(ubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hjF(h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj–(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF(ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjF(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj^'ubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic_long_cmpxchg_acquire() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic_long_cmpxchg_acquire() there.”…”�”}”(hj¯(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj^'ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÀ(h]”hŒReturn”…”�”}”(hjÂ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¾(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj^'ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÖ(h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÞ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ(ubhŒ.”…”�”}”(hjÖ(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj^'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic_long_cmpxchg_release (C function)”Œc.atomic_long_cmpxchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒGlong atomic_long_cmpxchg_release (atomic_long_t *v, long old, long new)”h]”hù)�”}”(hŒFlong atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj)h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)h²hh³j%)h´Mubhÿ)�”}”(hŒatomic_long_cmpxchg_release”h]”j)�”}”(hŒatomic_long_cmpxchg_release”h]”hŒatomic_long_cmpxchg_release”…”�”}”(hj8)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4)ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj)h²hh³j%)h´Mubj4)�”}”(hŒ&(atomic_long_t *v, long old, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjW)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjT)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jY)Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj:)sbŒc.atomic_long_cmpxchg_release”†”asbuh1hhjP)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjP)ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj…)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjP)ubj)�”}”(hjph]”hŒv”…”�”}”(hj’)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjL)ubj:)�”}”(hŒlong old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjª)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¦)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¦)ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjÆ)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjL)ubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjß)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÛ)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛ)ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjû)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjL)ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj)h²hh³j%)h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj)h²hh³j%)h´Mubah}”(h]”j )ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j%)h´Mhj )h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release ordering”…”�”}”(hj%*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj"*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj )h²hh³j%)h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj=*jHj=*jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX­**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long old`` long value to compare with ``long new`` long value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_cmpxchg_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjG*h]”hŒ Parameters”…”�”}”(hjI*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjE*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjA*ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjf*h]”hŒatomic_long_t *v”…”�”}”(hjh*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjd*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj`*ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j{*h´Mhj|*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj`*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j{*h´Mhj]*ubj©)�”}”(hŒ(``long old`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long old``”h]”jS)�”}”(hjŸ*h]”hŒlong old”…”�”}”(hj¡*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj™*ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hj¸*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j´*h´Mhjµ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj™*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j´*h´Mhj]*ubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hjØ*h]”hŒlong new”…”�”}”(hjÚ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÖ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÒ*ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjñ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jí*h´Mhjî*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÒ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jí*h´Mhj]*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjA*ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjA*ubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj)+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj1+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)+ubhŒ == ”…”�”}”(hj)+h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjC+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)+ubhŒ), atomically updates ”…”�”}”(hj)+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjU+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)+ubhŒ to ”…”�”}”(hj)+h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjg+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)+ubhŒ# with release ordering. Otherwise, ”…”�”}”(hj)+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjy+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)+ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj)+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjA*ubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic_long_cmpxchg_release() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic_long_cmpxchg_release() there.”…”�”}”(hj’+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjA*ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj£+h]”hŒReturn”…”�”}”(hj¥+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M!hjA*ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¹+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÁ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹+ubhŒ.”…”�”}”(hj¹+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M"hjA*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic_long_cmpxchg_relaxed (C function)”Œc.atomic_long_cmpxchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒGlong atomic_long_cmpxchg_relaxed (atomic_long_t *v, long old, long new)”h]”hù)�”}”(hŒFlong atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjú+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjö+h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M-ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjö+h²hh³j,h´M-ubhÿ)�”}”(hŒatomic_long_cmpxchg_relaxed”h]”j)�”}”(hŒatomic_long_cmpxchg_relaxed”h]”hŒatomic_long_cmpxchg_relaxed”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjö+h²hh³j,h´M-ubj4)�”}”(hŒ&(atomic_long_t *v, long old, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj:,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j<,Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj,sbŒc.atomic_long_cmpxchg_relaxed”†”asbuh1hhj3,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3,ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj3,ubj)�”}”(hjph]”hŒv”…”�”}”(hju,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj/,ubj:)�”}”(hŒlong old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‰,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰,ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj©,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj/,ubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÂ,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¾,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¾,ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjÞ,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj/,ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjö+h²hh³j,h´M-ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjò+h²hh³j,h´M-ubah}”(h]”jí+ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j,h´M-hjï+h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with relaxed ordering”h]”hŒ1atomic compare and exchange with relaxed ordering”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M-hj-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjï+h²hh³j,h´M-ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj -jHj -jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX­**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long old`` long value to compare with ``long new`` long value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_cmpxchg_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1hj$-ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjI-h]”hŒatomic_long_t *v”…”�”}”(hjK-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjG-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M.hjC-ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjb-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j^-h´M.hj_-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjC-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j^-h´M.hj@-ubj©)�”}”(hŒ(``long old`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long old``”h]”jS)�”}”(hj‚-h]”hŒlong old”…”�”}”(hj„-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj€-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M/hj|-ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hj›-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj»-h]”hŒlong new”…”�”}”(hj½-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¹-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M0hjµ-ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjÔ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÐ-h´M0hjÑ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjµ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÐ-h´M0hj@-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj$-ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M2hj$-ubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj .h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj .ubhŒ == ”…”�”}”(hj .h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj&.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj .ubhŒ), atomically updates ”…”�”}”(hj .h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj .ubhŒ to ”…”�”}”(hj .h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjJ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj .ubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hj .h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj\.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj .ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj .h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1hj$-ubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic_long_cmpxchg_relaxed() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic_long_cmpxchg_relaxed() there.”…”�”}”(hju.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M4hj$-ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj†.h]”hŒReturn”…”�”}”(hjˆ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M6hj$-ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjœ.h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¤.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœ.ubhŒ.”…”�”}”(hjœ.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M7hj$-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$atomic_long_try_cmpxchg (C function)”Œc.atomic_long_try_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDbool atomic_long_try_cmpxchg (atomic_long_t *v, long *old, long new)”h]”hù)�”}”(hŒCbool atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjÝ.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÙ.h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÙ.h²hh³jê.h´MAubhÿ)�”}”(hŒatomic_long_try_cmpxchg”h]”j)�”}”(hŒatomic_long_try_cmpxchg”h]”hŒatomic_long_try_cmpxchg”…”�”}”(hjý.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjù.ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÙ.h²hh³jê.h´MAubj4)�”}”(hŒ'(atomic_long_t *v, long *old, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j/Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÿ.sbŒc.atomic_long_try_cmpxchg”†”asbuh1hhj/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj >ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j>Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjò=sbŒc.atomic_long_dec_and_test”†”asbuh1hhj>ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/>h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj=>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj>ubj)�”}”(hjph]”hŒv”…”�”}”(hjJ>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÌ=h²hh³jÝ=h´M®ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÈ=h²hh³jÝ=h´M®ubah}”(h]”jÃ=ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÝ=h´M®hjÅ=h²hubj4)�”}”(hhh]”jM)�”}”(hŒ4atomic decrement and test if zero with full ordering”h]”hŒ4atomic decrement and test if zero with full ordering”…”�”}”(hjs>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M®hjp>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÅ=h²hh³jÝ=h´M®ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‹>jHj‹>jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX+**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_dec_and_test() there. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M²hj�>ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj´>h]”hŒatomic_long_t *v”…”�”}”(hj¶>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¯hj®>ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÍ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj�>ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M±hj�>ubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubhŒ to (”…”�”}”(hj?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubhŒ - 1) with full ordering.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M°hj�>ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_long_dec_and_test() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_long_dec_and_test() there.”…”�”}”(hj8?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M²hj�>ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjI?h]”hŒReturn”…”�”}”(hjK?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjG?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M´hj�>ubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjc?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_?ubhŒ if the resulting value of ”…”�”}”(hj_?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hju?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_?ubhŒ is zero, ”…”�”}”(hj_?h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj‡?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_?ubhŒ otherwise.”…”�”}”(hj_?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mµhj�>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_long_inc_and_test (C function)”Œc.atomic_long_inc_and_test”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0bool atomic_long_inc_and_test (atomic_long_t *v)”h]”hù)�”}”(hŒ/bool atomic_long_inc_and_test(atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjÀ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¼?h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¼?h²hh³jÍ?h´MÀubhÿ)�”}”(hŒatomic_long_inc_and_test”h]”j)�”}”(hŒatomic_long_inc_and_test”h]”hŒatomic_long_inc_and_test”…”�”}”(hjà?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜ?ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¼?h²hh³jÍ?h´MÀubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÿ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j@Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjâ?sbŒc.atomic_long_inc_and_test”†”asbuh1hhjø?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjø?ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj-@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjø?ubj)�”}”(hjph]”hŒv”…”�”}”(hj:@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjø?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjô?ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¼?h²hh³jÍ?h´MÀubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¸?h²hh³jÍ?h´MÀubah}”(h]”j³?ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÍ?h´MÀhjµ?h²hubj4)�”}”(hhh]”jM)�”}”(hŒ4atomic increment and test if zero with full ordering”h]”hŒ4atomic increment and test if zero with full ordering”…”�”}”(hjc@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÀhj`@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjµ?h²hh³jÍ?h´MÀubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj{@jHj{@jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX+**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_inc_and_test() there. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÄhj@ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj¤@h]”hŒatomic_long_t *v”…”�”}”(hj¦@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¢@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÁhjž@ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj½@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj@ubjM)�”}”(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&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÃhj@ubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjõ@h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjý@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõ@ubhŒ to (”…”�”}”(hjõ@h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõ@ubhŒ + 1) with full ordering.”…”�”}”(hjõ@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÂhj@ubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_long_inc_and_test() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_long_inc_and_test() there.”…”�”}”(hj(Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÄhj@ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj9Ah]”hŒReturn”…”�”}”(hj;Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÆhj@ubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjSAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOAubhŒ if the resulting value of ”…”�”}”(hjOAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjeAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOAubhŒ is zero, ”…”�”}”(hjOAh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjwAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOAubhŒ otherwise.”…”�”}”(hjOAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÇhj@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_long_add_negative (C function)”Œc.atomic_long_add_negative”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8bool atomic_long_add_negative (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ7bool atomic_long_add_negative(long i, atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj°Ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¬Ah²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Ah²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¬Ah²hh³j½Ah´MÒubhÿ)�”}”(hŒatomic_long_add_negative”h]”j)�”}”(hŒatomic_long_add_negative”h]”hŒatomic_long_add_negative”…”�”}”(hjÐAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌAubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¬Ah²hh³j½Ah´MÒubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjìAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjèAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúAh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjèAubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjäAubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj#Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j%BŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÒAsbŒc.atomic_long_add_negative”†”asbuh1hhjBubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCBh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjBubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjQBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjBubj)�”}”(hjph]”hŒv”…”�”}”(hj^Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjäAubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¬Ah²hh³j½Ah´MÒubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¨Ah²hh³j½Ah´MÒubah}”(h]”j£Aah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j½Ah´MÒhj¥Ah²hubj4)�”}”(hhh]”jM)�”}”(hŒ2atomic add and test if negative with full ordering”h]”hŒ2atomic add and test if negative with full ordering”…”�”}”(hj‡Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÒhj„Bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¥Ah²hh³j½Ah´MÒubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŸBjHjŸBjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXS**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Unsafe to use in noinstr code; use raw_atomic_long_add_negative() there. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj©Bh]”hŒ Parameters”…”�”}”(hj«Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÖhj£Bubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjÈBh]”hŒlong i”…”�”}”(hjÊBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆBubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÓhjÂBubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjáBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÝBh´MÓhjÞBubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÂBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÝBh´MÓhj¿Bubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjCh]”hŒatomic_long_t *v”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÿBubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÔhjûBubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jCh´MÔhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjûBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jCh´MÔhj¿Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj£BubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÖhj£BubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjRCh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRCubhŒ to (”…”�”}”(hjRCh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjlCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRCubhŒ + ”…”�”}”(hjRCh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj~Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRCubhŒ) with full ordering.”…”�”}”(hjRCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÕhj£BubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_long_add_negative() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_long_add_negative() there.”…”�”}”(hj—Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M×hj£BubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¨Ch]”hŒReturn”…”�”}”(hjªCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÙhj£BubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjÂCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¾CubhŒ if the resulting value of ”…”�”}”(hj¾Ch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÔCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¾CubhŒ is negative, ”…”�”}”(hj¾Ch²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjæCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¾CubhŒ otherwise.”…”�”}”(hj¾Ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÚhj£Bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-atomic_long_add_negative_acquire (C function)”Œ"c.atomic_long_add_negative_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@bool atomic_long_add_negative_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ?bool atomic_long_add_negative_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjDh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjDh²hh³j,Dh´Måubhÿ)�”}”(hŒ atomic_long_add_negative_acquire”h]”j)�”}”(hŒ atomic_long_add_negative_acquire”h]”hŒ atomic_long_add_negative_acquire”…”�”}”(hj?Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;Dubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjDh²hh³j,Dh´Måubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj[Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjWDubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiDh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjWDubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjwDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjSDubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj’Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j”DŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjADsbŒ"c.atomic_long_add_negative_acquire”†”asbuh1hhj‹DubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‹Dubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÀDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‹Dubj)�”}”(hjph]”hŒv”…”�”}”(hjÍDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjSDubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjDh²hh³j,Dh´Måubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjDh²hh³j,Dh´Måubah}”(h]”jDah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j,Dh´MåhjDh²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with acquire ordering”h]”hŒ5atomic add and test if negative with acquire ordering”…”�”}”(hjöDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MåhjóDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjDh²hh³j,Dh´Måubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjEjHjEjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX^**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Unsafe to use in noinstr code; use raw_atomic_long_add_negative_acquire() there. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjEh]”hŒ Parameters”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MéhjEubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj7Eh]”hŒlong i”…”�”}”(hj9Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mæhj1EubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjPEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jLEh´MæhjMEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jLEh´Mæhj.Eubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjpEh]”hŒatomic_long_t *v”…”�”}”(hjrEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjnEubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MçhjjEubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj‰Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j…Eh´Mçhj†Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…Eh´Mçhj.Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjEubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj«Eh]”hŒ Description”…”�”}”(hj­Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj©Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MéhjEubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÁEh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÉEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÁEubhŒ to (”…”�”}”(hjÁEh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÛEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÁEubhŒ + ”…”�”}”(hjÁEh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjíEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÁEubhŒ) with acquire ordering.”…”�”}”(hjÁEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MèhjEubjM)�”}”(hŒPUnsafe to use in noinstr code; use raw_atomic_long_add_negative_acquire() there.”h]”hŒPUnsafe to use in noinstr code; use raw_atomic_long_add_negative_acquire() there.”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MêhjEubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjFh]”hŒReturn”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MìhjEubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj1Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-FubhŒ if the resulting value of ”…”�”}”(hj-Fh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjCFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-FubhŒ is negative, ”…”�”}”(hj-Fh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjUFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-FubhŒ otherwise.”…”�”}”(hj-Fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MíhjEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-atomic_long_add_negative_release (C function)”Œ"c.atomic_long_add_negative_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@bool atomic_long_add_negative_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ?bool atomic_long_add_negative_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjŽFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŠFh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠFh²hh³j›Fh´M÷ubhÿ)�”}”(hŒ atomic_long_add_negative_release”h]”j)�”}”(hŒ atomic_long_add_negative_release”h]”hŒ atomic_long_add_negative_release”…”�”}”(hj®Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjªFubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŠFh²hh³j›Fh´M÷ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÊFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÆFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆFubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjæFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÂFubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jGŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj°FsbŒ"c.atomic_long_add_negative_release”†”asbuh1hhjúFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Gh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjúFubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj/Gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjúFubj)�”}”(hjph]”hŒv”…”�”}”(hjbool atomic_long_add_unless (atomic_long_t *v, long a, long u)”h]”hù)�”}”(hŒ=bool atomic_long_add_unless(atomic_long_t *v, long a, long u)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj_Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj[Nh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[Nh²hh³jlNh´M1ubhÿ)�”}”(hŒatomic_long_add_unless”h]”j)�”}”(hŒatomic_long_add_unless”h]”hŒatomic_long_add_unless”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{Nubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj[Nh²hh³jlNh´M1ubj4)�”}”(hŒ"(atomic_long_t *v, long a, long u)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjžNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j NŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj�NsbŒc.atomic_long_add_unless”†”asbuh1hhj—NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Nh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj—Nubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÌNh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj—Nubj)�”}”(hjph]”hŒv”…”�”}”(hjÙNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj“Nubj:)�”}”(hŒlong a”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjñNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjíNubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjíNubj)�”}”(hj¯Ãh]”hŒa”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj“Nubj:)�”}”(hŒlong u”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj%Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj!OubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Oh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!Oubj)�”}”(hj÷lh]”hŒu”…”�”}”(hjAOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj“Nubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj[Nh²hh³jlNh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjWNh²hh³jlNh´M1ubah}”(h]”jRNah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jlNh´M1hjTNh²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hjjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1hjgOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjTNh²hh³jlNh´M1ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‚OjHj‚OjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX»**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long a`` long value to add ``long u`` long value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_add_unless() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjŒOh]”hŒ Parameters”…”�”}”(hjŽOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŠOubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M5hj†Oubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj«Oh]”hŒatomic_long_t *v”…”�”}”(hj­Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj©Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M2hj¥OubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÄOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÀOh´M2hjÁOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¥Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÀOh´M2hj¢Oubj©)�”}”(hŒ``long a`` long value to add ”h]”(j¯)�”}”(hŒ ``long a``”h]”jS)�”}”(hjäOh]”hŒlong a”…”�”}”(hjæOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjâOubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M3hjÞOubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjýOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jùOh´M3hjúOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÞOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jùOh´M3hj¢Oubj©)�”}”(hŒ&``long u`` long value to compare with ”•h]”(j¯)�”}”(hŒ ``long u``”h]”jS)�”}”(hjPh]”hŒlong u”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M4hjPubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hj6Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j2Ph´M4hj3Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j2Ph´M4hj¢Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj†OubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjXPh]”hŒ Description”…”�”}”(hjZPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVPubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M6hj†OubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjnPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjvPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnPubhŒ != ”…”�”}”(hjnPh²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hjˆPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnPubhŒ), atomically updates ”…”�”}”(hjnPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjšPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnPubhŒ to (”…”�”}”(hjnPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¬Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnPubhŒ + ”…”�”}”(hjnPh²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hj¾Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnPubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjnPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÐPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnPubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjnPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M5hj†OubjM)�”}”(hŒFUnsafe to use in noinstr code; use raw_atomic_long_add_unless() there.”h]”hŒFUnsafe to use in noinstr code; use raw_atomic_long_add_unless() there.”…”�”}”(hjéPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M8hj†OubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjúPh]”hŒReturn”…”�”}”(hjüPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjøPubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M:hj†OubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQubhŒ if ”…”�”}”(hjQh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj&Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQubhŒ was updated, ”…”�”}”(hjQh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj8Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQubhŒ otherwise.”…”�”}”(hjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M;hj†Oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_long_inc_not_zero (C function)”Œc.atomic_long_inc_not_zero”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0bool atomic_long_inc_not_zero (atomic_long_t *v)”h]”hù)�”}”(hŒ/bool atomic_long_inc_not_zero(atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjqQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjmQh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmQh²hh³j~Qh´MFubhÿ)�”}”(hŒatomic_long_inc_not_zero”h]”j)�”}”(hŒatomic_long_inc_not_zero”h]”hŒatomic_long_inc_not_zero”…”�”}”(hj‘Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Qubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjmQh²hh³j~Qh´MFubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj°Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j²QŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj“QsbŒc.atomic_long_inc_not_zero”†”asbuh1hhj©QubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐQh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj©Qubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÞQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj©Qubj)�”}”(hjph]”hŒv”…”�”}”(hjëQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¥Qubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjmQh²hh³j~Qh´MFubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjiQh²hh³j~Qh´MFubah}”(h]”jdQah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j~Qh´MFhjfQh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic increment unless zero with full ordering”h]”hŒ/atomic increment unless zero with full ordering”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MFhjRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjfQh²hh³j~Qh´MFubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj,RjHj,RjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXl**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_inc_not_zero() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj6Rh]”hŒ Parameters”…”�”}”(hj8Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MJhj0Rubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjURh]”hŒatomic_long_t *v”…”�”}”(hjWRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjSRubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MGhjORubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjnRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jjRh´MGhjkRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjORubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jjRh´MGhjLRubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj0RubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj�Rh]”hŒ Description”…”�”}”(hj’Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽRubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MIhj0RubjM)�”}”(hŒ�If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj¦Rh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj®Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦RubhŒ != 0), atomically updates ”…”�”}”(hj¦Rh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÀRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦RubhŒ to (”…”�”}”(hj¦Rh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÒRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦RubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hj¦Rh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjäRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦RubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj¦Rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MHhj0RubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_long_inc_not_zero() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_long_inc_not_zero() there.”…”�”}”(hjýRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKhj0RubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjSh]”hŒReturn”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Subah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MMhj0RubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj(Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$SubhŒ if ”…”�”}”(hj$Sh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj:Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$SubhŒ was updated, ”…”�”}”(hj$Sh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjLSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$SubhŒ otherwise.”…”�”}”(hj$Sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MNhj0Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,atomic_long_inc_unless_negative (C function)”Œ!c.atomic_long_inc_unless_negative”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7bool atomic_long_inc_unless_negative (atomic_long_t *v)”h]”hù)�”}”(hŒ6bool atomic_long_inc_unless_negative(atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj…Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�Sh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MYubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Sh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Sh²hh³j’Sh´MYubhÿ)�”}”(hŒatomic_long_inc_unless_negative”h]”j)�”}”(hŒatomic_long_inc_unless_negative”h]”hŒatomic_long_inc_unless_negative”…”�”}”(hj¥Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Subah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�Sh²hh³j’Sh´MYubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÄSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÆSŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj§SsbŒ!c.atomic_long_inc_unless_negative”†”asbuh1hhj½SubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäSh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½Subj”)�”}”(hj—h]”hŒ*”…”�”}”(hjòSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj½Subj)�”}”(hjph]”hŒv”…”�”}”(hjÿSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¹Subah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�Sh²hh³j’Sh´MYubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj}Sh²hh³j’Sh´MYubah}”(h]”jxSah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j’Sh´MYhjzSh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic increment unless negative with full ordering”h]”hŒ3atomic increment unless negative with full ordering”…”�”}”(hj(Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MYhj%Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjzSh²hh³j’Sh´MYubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj@TjHj@TjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXs**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_inc_unless_negative() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjJTh]”hŒ Parameters”…”�”}”(hjLTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHTubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M]hjDTubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjiTh]”hŒatomic_long_t *v”…”�”}”(hjkTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgTubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MZhjcTubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj‚Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~Th´MZhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~Th´MZhj`Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjDTubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj¤Th]”hŒ Description”…”�”}”(hj¦Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M\hjDTubjM)�”}”(hŒ�If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjºTh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÂTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºTubhŒ >= 0), atomically updates ”…”�”}”(hjºTh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÔTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºTubhŒ to (”…”�”}”(hjºTh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjæTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºTubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hjºTh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjøTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºTubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjºTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M[hjDTubjM)�”}”(hŒOUnsafe to use in noinstr code; use raw_atomic_long_inc_unless_negative() there.”h]”hŒOUnsafe to use in noinstr code; use raw_atomic_long_inc_unless_negative() there.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M^hjDTubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj"Uh]”hŒReturn”…”�”}”(hj$Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M`hjDTubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_dec_if_positive() there. **Return** The old value of (**v** - 1), regardless of whether **v** was updated.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjsXh]”hŒ Parameters”…”�”}”(hjuXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqXubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MƒhjmXubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj’Xh]”hŒatomic_long_t *v”…”�”}”(hj”Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M€hjŒXubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj«Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j§Xh´M€hj¨Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŒXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j§Xh´M€hj‰Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjmXubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÍXh]”hŒ Description”…”�”}”(hjÏXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËXubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‚hjmXubjM)�”}”(hŒŽIf (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjãXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjëXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãXubhŒ > 0), atomically updates ”…”�”}”(hjãXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjýXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãXubhŒ to (”…”�”}”(hjãXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãXubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hjãXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj!Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãXubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjãXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hjmXubjM)�”}”(hŒKUnsafe to use in noinstr code; use raw_atomic_long_dec_if_positive() there.”h]”hŒKUnsafe to use in noinstr code; use raw_atomic_long_dec_if_positive() there.”…”�”}”(hj:Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M„hjmXubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjKYh]”hŒReturn”…”�”}”(hjMYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIYubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M†hjmXubjM)�”}”(hŒFThe old value of (**v** - 1), regardless of whether **v** was updated.”h]”(hŒThe old value of (”…”�”}”(hjaYh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjiYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaYubhŒ - 1), regardless of whether ”…”�”}”(hjaYh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj{Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaYubhŒ was updated.”…”�”}”(hjaYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‡hjmXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_read (C function)”Œc.raw_atomic_read”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'int raw_atomic_read (const atomic_t *v)”h]”hù)�”}”(hŒ&int raw_atomic_read(const atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj´Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj°Yh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M½ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃYh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°Yh²hh³jÂYh´M½ubhÿ)�”}”(hŒraw_atomic_read”h]”j)�”}”(hŒraw_atomic_read”h]”hŒraw_atomic_read”…”�”}”(hjÕYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑYubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj°Yh²hh³jÂYh´M½ubj4)�”}”(hŒ(const atomic_t *v)”h]”j:)�”}”(hŒconst atomic_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjñYh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjíYubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþYh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjíYubh)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jZŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj×YsbŒc.raw_atomic_read”†”asbuh1hhjíYubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Zh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjíYubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj=Zh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjíYubj)�”}”(hjph]”hŒv”…”�”}”(hjJZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjéYubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj°Yh²hh³jÂYh´M½ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¬Yh²hh³jÂYh´M½ubah}”(h]”j§Yah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÂYh´M½hj©Yh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with relaxed ordering”h]”hŒ!atomic load with relaxed ordering”…”�”}”(hjsZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M½hjpZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj©Yh²hh³jÂYh´M½ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‹ZjHj‹ZjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒð**Parameters** ``const atomic_t *v`` pointer to atomic_t **Description** Atomically loads the value of **v** with relaxed ordering. Safe to use in noinstr code; prefer atomic_read() elsewhere. **Return** The value loaded from **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj•Zh]”hŒ Parameters”…”�”}”(hj—Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÁhj�Zubj¤)�”}”(hhh]”j©)�”}”(hŒ*``const atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``const atomic_t *v``”h]”jS)�”}”(hj´Zh]”hŒconst atomic_t *v”…”�”}”(hj¶Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¾hj®ZubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÍZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÉZh´M¾hjÊZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj®Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÉZh´M¾hj«Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�ZubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjïZh]”hŒ Description”…”�”}”(hjñZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjíZubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÀhj�ZubjM)�”}”(hŒ:Atomically loads the value of **v** with relaxed ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hj[h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[ubhŒ with relaxed ordering.”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¿hj�ZubjM)�”}”(hŒhjÇ[ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ[h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇ[ubh)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjé[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæ[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jë[Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj±[sbŒc.raw_atomic_read_acquire”†”asbuh1hhjÇ[ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj \h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇ[ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÇ[ubj)�”}”(hjph]”hŒv”…”�”}”(hj$\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇ[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÃ[ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŠ[h²hh³jœ[h´MÍubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj†[h²hh³jœ[h´MÍubah}”(h]”j�[ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jœ[h´MÍhjƒ[h²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with acquire ordering”h]”hŒ!atomic load with acquire ordering”…”�”}”(hjM\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÍhjJ\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjƒ[h²hh³jœ[h´MÍubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGje\jHje\jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒø**Parameters** ``const atomic_t *v`` pointer to atomic_t **Description** Atomically loads the value of **v** with acquire ordering. Safe to use in noinstr code; prefer atomic_read_acquire() elsewhere. **Return** The value loaded from **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjo\h]”hŒ Parameters”…”�”}”(hjq\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÑhji\ubj¤)�”}”(hhh]”j©)�”}”(hŒ*``const atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``const atomic_t *v``”h]”jS)�”}”(hjŽ\h]”hŒconst atomic_t *v”…”�”}”(hj�\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÎhjˆ\ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj§\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hji\ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÐhji\ubjM)�”}”(hŒ:Atomically loads the value of **v** with acquire ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hjß\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjç\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjß\ubhŒ with acquire ordering.”…”�”}”(hjß\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÏhji\ubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_read_acquire() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_read_acquire() elsewhere.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÑhji\ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj]h]”hŒReturn”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÓhji\ubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hj']h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj/]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj']ubhŒ.”…”�”}”(hj']h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÔhji\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_set (C function)”Œc.raw_atomic_set”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void raw_atomic_set (atomic_t *v, int i)”h]”hù)�”}”(hŒ'void raw_atomic_set(atomic_t *v, int i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjd]h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MêubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjd]h²hh³jv]h´Mêubhÿ)�”}”(hŒraw_atomic_set”h]”j)�”}”(hŒraw_atomic_set”h]”hŒraw_atomic_set”…”�”}”(hj‰]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…]ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjd]h²hh³jv]h´Mêubj4)�”}”(hŒ(atomic_t *v, int i)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj¨]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jª]Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‹]sbŒc.raw_atomic_set”†”asbuh1hhj¡]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡]ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÖ]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¡]ubj)�”}”(hjph]”hŒv”…”�”}”(hjã]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�]ubj:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjû]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj÷]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷]ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�]ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjd]h²hh³jv]h´Mêubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj`]h²hh³jv]h´Mêubah}”(h]”j[]ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jv]h´Mêhj]]h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with relaxed ordering”h]”hŒ atomic set with relaxed ordering”…”�”}”(hj@^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mêhj=^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj]]h²hh³jv]h´Mêubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjX^jHjX^jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒñ**Parameters** ``atomic_t *v`` pointer to atomic_t ``int i`` int value to assign **Description** Atomically sets **v** to **i** with relaxed ordering. Safe to use in noinstr code; prefer atomic_set() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjb^h]”hŒ Parameters”…”�”}”(hjd^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mîhj\^ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj�^h]”hŒ atomic_t *v”…”�”}”(hjƒ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mëhj{^ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjš^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j–^h´Mëhj—^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj{^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j–^h´Mëhjx^ubj©)�”}”(hŒ``int i`` int value to assign ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjº^h]”hŒint i”…”�”}”(hj¼^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¸^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mìhj´^ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjÓ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÏ^h´MìhjÐ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj´^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÏ^h´Mìhjx^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj\^ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mîhj\^ubjM)�”}”(hŒ5Atomically sets **v** to **i** with relaxed ordering.”h]”(hŒAtomically sets ”…”�”}”(hj _h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj _ubhŒ to ”…”�”}”(hj _h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj%_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj _ubhŒ with relaxed ordering.”…”�”}”(hj _h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Míhj\^ubjM)�”}”(hŒ;Safe to use in noinstr code; prefer atomic_set() elsewhere.”h]”hŒ;Safe to use in noinstr code; prefer atomic_set() elsewhere.”…”�”}”(hj>_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mïhj\^ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjO_h]”hŒReturn”…”�”}”(hjQ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mñhj\^ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hje_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mòhj\^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#raw_atomic_set_release (C function)”Œc.raw_atomic_set_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0void raw_atomic_set_release (atomic_t *v, int i)”h]”hù)�”}”(hŒ/void raw_atomic_set_release(atomic_t *v, int i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj”_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�_h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�_h²hh³j¢_h´Mûubhÿ)�”}”(hŒraw_atomic_set_release”h]”j)�”}”(hŒraw_atomic_set_release”h]”hŒraw_atomic_set_release”…”�”}”(hjµ_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±_ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�_h²hh³j¢_h´Mûubj4)�”}”(hŒ(atomic_t *v, int i)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÔ_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑ_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÖ_Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj·_sbŒc.raw_atomic_set_release”†”asbuh1hhjÍ_ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍ_ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍ_ubj)�”}”(hjph]”hŒv”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍ_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÉ_ubj:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj'`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj#`ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#`ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjC`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÉ_ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�_h²hh³j¢_h´Mûubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŒ_h²hh³j¢_h´Mûubah}”(h]”j‡_ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¢_h´Mûhj‰_h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with release ordering”h]”hŒ atomic set with release ordering”…”�”}”(hjl`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mûhji`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‰_h²hh³j¢_h´Mûubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj„`jHj„`jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒù**Parameters** ``atomic_t *v`` pointer to atomic_t ``int i`` int value to assign **Description** Atomically sets **v** to **i** with release ordering. Safe to use in noinstr code; prefer atomic_set_release() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mÿhjˆ`ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj­`h]”hŒ atomic_t *v”…”�”}”(hj¯`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj«`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mühj§`ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÆ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``int i`` int value to assign ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjæ`h]”hŒint i”…”�”}”(hjè`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjä`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mýhjà`ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjÿ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjˆ`ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj!ah]”hŒ Description”…”�”}”(hj#ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mÿhjˆ`ubjM)�”}”(hŒ5Atomically sets **v** to **i** with release ordering.”h]”(hŒAtomically sets ”…”�”}”(hj7ah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj?ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7aubhŒ to ”…”�”}”(hj7ah²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjQah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7aubhŒ with release ordering.”…”�”}”(hj7ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mþhjˆ`ubjM)�”}”(hŒCSafe to use in noinstr code; prefer atomic_set_release() elsewhere.”h]”hŒCSafe to use in noinstr code; prefer atomic_set_release() elsewhere.”…”�”}”(hjjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjˆ`ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj{ah]”hŒReturn”…”�”}”(hj}ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjˆ`ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj‘ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjˆ`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_add (C function)”Œc.raw_atomic_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void raw_atomic_add (int i, atomic_t *v)”h]”hù)�”}”(hŒ'void raw_atomic_add(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¼ah²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏah²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¼ah²hh³jÎah´Mubhÿ)�”}”(hŒraw_atomic_add”h]”j)�”}”(hŒraw_atomic_add”h]”hŒraw_atomic_add”…”�”}”(hjáah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝaubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¼ah²hh³jÎah´Mubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjýah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjùaubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùaubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjõaubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj4bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j6bŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjãasbŒc.raw_atomic_add”†”asbuh1hhj-bubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTbh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj-bubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjbbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj-bubj)�”}”(hjph]”hŒv”…”�”}”(hjobh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjõaubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¼ah²hh³jÎah´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¸ah²hh³jÎah´Mubah}”(h]”j³aah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÎah´Mhjµah²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj˜bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj•bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjµah²hh³jÎah´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj°bjHj°bjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_add() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjºbh]”hŒ Parameters”…”�”}”(hj¼bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸bubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj´bubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjÙbh]”hŒint i”…”�”}”(hjÛbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj×bubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÓbubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjòbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jîbh´Mhjïbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÓbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jîbh´MhjÐbubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjch]”hŒ atomic_t *v”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj cubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj+ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j'ch´Mhj(cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j'ch´MhjÐbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj´bubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjMch]”hŒ Description”…”�”}”(hjOch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKcubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj´bubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjcch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjkch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjccubhŒ to (”…”�”}”(hjcch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj}ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjccubhŒ + ”…”�”}”(hjcch²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjccubhŒ) with relaxed ordering.”…”�”}”(hjcch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj´bubjM)�”}”(hŒ;Safe to use in noinstr code; prefer atomic_add() elsewhere.”h]”hŒ;Safe to use in noinstr code; prefer atomic_add() elsewhere.”…”�”}”(hj¨ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj´bubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¹ch]”hŒReturn”…”�”}”(hj»ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj·cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj´bubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjÏch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj´bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"raw_atomic_add_return (C function)”Œc.raw_atomic_add_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int raw_atomic_add_return (int i, atomic_t *v)”h]”hù)�”}”(hŒ-int raw_atomic_add_return(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjþch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjúch²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjúch²hh³j dh´M&ubhÿ)�”}”(hŒraw_atomic_add_return”h]”j)�”}”(hŒraw_atomic_add_return”h]”hŒraw_atomic_add_return”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjúch²hh³j dh´M&ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj;dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj7dubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7dubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjWdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3dubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjrdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjodubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jtdŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj!dsbŒc.raw_atomic_add_return”†”asbuh1hhjkdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjkdubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjkdubj)�”}”(hjph]”hŒv”…”�”}”(hj­dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3dubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjúch²hh³j dh´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjöch²hh³j dh´M&ubah}”(h]”jñcah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j dh´M&hjóch²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hjÖdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M&hjÓdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjóch²hh³j dh´M&ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjîdjHjîdjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Safe to use in noinstr code; prefer atomic_add_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjødh]”hŒ Parameters”…”�”}”(hjúdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjödubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M*hjòdubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjeh]”hŒint i”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M'hjeubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj0eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j,eh´M'hj-eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j,eh´M'hjeubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjPeh]”hŒ atomic_t *v”…”�”}”(hjReh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjNeubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M(hjJeubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjieh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jeeh´M(hjfeubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jeeh´M(hjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjòdubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj‹eh]”hŒ Description”…”�”}”(hj�eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‰eubah}”(h]”h ]”h"•]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M*hjòdubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¡eh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj©eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡eubhŒ to (”…”�”}”(hj¡eh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj»eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡eubhŒ + ”…”�”}”(hj¡eh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÍeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡eubhŒ) with full ordering.”…”�”}”(hj¡eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M)hjòdubjM)�”}”(hŒBSafe to use in noinstr code; prefer atomic_add_return() elsewhere.”h]”hŒBSafe to use in noinstr code; prefer atomic_add_return() elsewhere.”…”�”}”(hjæeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M+hjòdubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj÷eh]”hŒReturn”…”�”}”(hjùeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M-hjòdubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj fh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj fubhŒ.”…”�”}”(hj fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M.hjòdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_add_return_acquire (C function)”Œc.raw_atomic_add_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6int raw_atomic_add_return_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ5int raw_atomic_add_return_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjNfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjJfh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]fh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJfh²hh³j\fh´MAubhÿ)�”}”(hŒraw_atomic_add_return_acquire”h]”j)�”}”(hŒraw_atomic_add_return_acquire”h]”hŒraw_atomic_add_return_acquire”…”�”}”(hjofh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkfubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjJfh²hh³j\fh´MAubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj‹fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‡fubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™fh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡fubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj§fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƒfubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÂfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÄfŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjqfsbŒc.raw_atomic_add_return_acquire”†”asbuh1hhj»fubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâfh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj»fubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjðfh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj»fubj)�”}”(hjph]”hŒv”…”�”}”(hjýfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƒfubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjJfh²hh³j\fh´MAubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjFfh²hh³j\fh´MAubah}”(h]”jAfah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j\fh´MAhjCfh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hj&gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MAhj#gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjCfh²hh³j\fh´MAubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj>gjHj>gjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_add_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjHgh]”hŒ Parameters”…”�”}”(hjJgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFgubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MEhjBgubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjggh]”hŒint i”…”�”}”(hjigh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjegubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MBhjagubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj€gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j|gh´MBhj}gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjagubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j|gh´MBhj^gubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj gh]”hŒ atomic_t *v”…”�”}”(hj¢gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjžgubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MChjšgubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj¹gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jµgh´MChj¶gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjšgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jµgh´MChj^gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjBgubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÛgh]”hŒ Description”…”�”}”(hjÝgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙgubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MEhjBgubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjñgh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjùgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñgubhŒ to (”…”�”}”(hjñgh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñgubhŒ + ”…”�”}”(hjñgh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñgubhŒ) with acquire ordering.”…”�”}”(hjñgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MDhjBgubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_add_return_acquire() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_add_return_acquire() elsewhere.”…”�”}”(hj6hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MFhjBgubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjGhh]”hŒReturn”…”�”}”(hjIhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEhubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MHhjBgubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj]hh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjehh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj]hubhŒ.”…”�”}”(hj]hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MIhjBgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_add_return_release (C function)”Œc.raw_atomic_add_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6int raw_atomic_add_return_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ5int raw_atomic_add_return_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjžhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjšhh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M\ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjšhh²hh³j¬hh´M\ubhÿ)�”}”(hŒraw_atomic_add_return_release”h]”j)�”}”(hŒraw_atomic_add_return_release”h]”hŒraw_atomic_add_return_release”…”�”}”(hj¿hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»hubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjšhh²hh³j¬hh´M\ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÛhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj×hubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj×hubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj÷hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÓhubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jiŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÁhsbŒc.raw_atomic_add_return_release”†”asbuh1hhj iubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj iubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj@ih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj iubj)�”}”(hjph]”hŒv”…”�”}”(hjMih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÓhubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjšhh²hh³j¬hh´M\ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj–hh²hh³j¬hh´M\ubah}”(h]”j‘hah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¬hh´M\hj“hh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hjvih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M\hjsih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj“hh²hh³j¬hh´M\ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŽijHjŽijI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Safe to use in noinstr code; prefer atomic_add_return_release() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj˜ih]”hŒ Parameters”…”�”}”(hjših²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–iubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M`hj’iubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj·ih]”hŒint i”…”�”}”(hj¹ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjµiubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M]hj±iubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjÐih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÌih´M]hjÍiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj±iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÌih´M]hj®iubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjðih]”hŒ atomic_t *v”…”�”}”(hjòih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjîiubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M^hjêiubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jjh´M^hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjêiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jjh´M^hj®iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj’iubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj+jh]”hŒ Description”…”�”}”(hj-jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)jubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M`hj’iubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjAjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjIjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAjubhŒ to (”…”�”}”(hjAjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj[jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAjubhŒ + ”…”�”}”(hjAjh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjmjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAjubhŒ) with release ordering.”…”�”}”(hjAjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M_hj’iubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_add_return_release() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_add_return_release() elsewhere.”…”�”}”(hj†jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mahj’iubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj—jh]”hŒReturn”…”�”}”(hj™jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•jubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mchj’iubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj­jh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjµjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj­jubhŒ.”…”�”}”(hj­jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mdhj’iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_add_return_relaxed (C function)”Œc.raw_atomic_add_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6int raw_atomic_add_return_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ5int raw_atomic_add_return_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjîjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjêjh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjêjh²hh³jüjh´Mvubhÿ)�”}”(hŒraw_atomic_add_return_relaxed”h]”j)�”}”(hŒraw_atomic_add_return_relaxed”h]”hŒraw_atomic_add_return_relaxed”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj kubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjêjh²hh³jüjh´Mvubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj+kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj'kubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'kubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjGkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj#kubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjbkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jdkŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjksbŒc.raw_atomic_add_return_relaxed”†”asbuh1hhj[kubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[kubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj[kubj)�”}”(hjph]”hŒv”…”�”}”(hj�kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj#kubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjêjh²hh³jüjh´Mvubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjæjh²hh³jüjh´Mvubah}”(h]”jájah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jüjh´Mvhjãjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hjÆkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MvhjÃkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjãjh²hh³jüjh´Mvubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÞkjHjÞkjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_add_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjèkh]”hŒ Parameters”…”�”}”(hjêkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjækubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mzhjâkubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjlh]”hŒint i”…”�”}”(hj lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MwhjlubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jlh´Mwhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jlh´Mwhjþkubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj@lh]”hŒ atomic_t *v”…”�”}”(hjBlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj>lubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mxhj:lubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjYlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jUlh´MxhjVlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jUlh´Mxhjþkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjâkubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj{lh]”hŒ Description”…”�”}”(hj}lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjylubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MzhjâkubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj‘lh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘lubhŒ to (”…”�”}”(hj‘lh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj«lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘lubhŒ + ”…”�”}”(hj‘lh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj½lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘lubhŒ) with relaxed ordering.”…”�”}”(hj‘lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MyhjâkubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_add_return_relaxed() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_add_return_relaxed() elsewhere.”…”�”}”(hjÖlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M{hjâkubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjçlh]”hŒReturn”…”�”}”(hjélh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjålubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M}hjâkubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjýlh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjýlubhŒ.”…”�”}”(hjýlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M~hjâkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!raw_atomic_fetch_add (C function)”Œc.raw_atomic_fetch_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-int raw_atomic_fetch_add (int i, atomic_t *v)”h]”hù)�”}”(hŒ,int raw_atomic_fetch_add(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj>mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj:mh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:mh²hh³jLmh´M�ubhÿ)�”}”(hŒraw_atomic_fetch_add”h]”j)�”}”(hŒraw_atomic_fetch_add”h]”hŒraw_atomic_fetch_add”…”�”}”(hj_mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[mubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj:mh²hh³jLmh´M�ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj{mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjwmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjwmubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj—mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjsmubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj²mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j´mŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjamsbŒc.raw_atomic_fetch_add”†”asbuh1hhj«mubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj«mubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjàmh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj«mubj)�”}”(hjph]”hŒv”…”�”}”(hjímh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjsmubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj:mh²hh³jLmh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj6mh²hh³jLmh´M�ubah}”(h]”j1mah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jLmh´M�hj3mh²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hjnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj3mh²hh³jLmh´M�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj.njHj.njI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Safe to use in noinstr code; prefer atomic_fetch_add() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj8nh]”hŒ Parameters”…”�”}”(hj:nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‘hj2nubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjWnh]”hŒint i”…”�”}”(hjYnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjUnubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŽhjQnubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjpnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jlnh´MŽhjmnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jlnh´MŽhjNnubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj�nh]”hŒ atomic_t *v”…”�”}”(hj’nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŽnubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hjŠnubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj©nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¥nh´M�hj¦nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŠnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¥nh´M�hjNnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj2nubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjËnh]”hŒ Description”…”�”}”(hjÍnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉnubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‘hj2nubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjánh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjénh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjánubhŒ to (”…”�”}”(hjánh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjûnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjánubhŒ + ”…”�”}”(hjánh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjánubhŒ) with full ordering.”…”�”}”(hjánh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hj2nubjM)�”}”(hŒASafe to use in noinstr code; prefer atomic_fetch_add() elsewhere.”h]”hŒASafe to use in noinstr code; prefer atomic_fetch_add() elsewhere.”…”�”}”(hj&oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M’hj2nubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj7oh]”hŒReturn”…”�”}”(hj9oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5oubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M”hj2nubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjMoh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjUoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMoubhŒ.”…”�”}”(hjMoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M•hj2nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_add_acquire (C function)”Œc.raw_atomic_fetch_add_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_add_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_add_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjŽoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŠoh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¨ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�oh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠoh²hh³jœoh´M¨ubhÿ)�”}”(hŒraw_atomic_fetch_add_acquire”h]”j)�”}”(hŒraw_atomic_fetch_add_acquire”h]”hŒraw_atomic_fetch_add_acquire”…”�”}”(hj¯oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«oubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŠoh²hh³jœoh´M¨ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjËoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÇoubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙoh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇoubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjçoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÃoubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jpŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj±osbŒc.raw_atomic_fetch_add_acquire”†”asbuh1hhjûoubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"ph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûoubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj0ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjûoubj)�”}”(hjph]”hŒv”…”�”}”(hj=ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÃoubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŠoh²hh³jœoh´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj†oh²hh³jœoh´M¨ubah}”(h]”j�oah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jœoh´M¨hjƒoh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hjfph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¨hjcph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjƒoh²hh³jœoh´M¨ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj~pjHj~pjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_fetch_add_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjˆph]”hŒ Parameters”…”�”}”(hjŠph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†pubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¬hj‚pubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj§ph]”hŒint i”…”�”}”(hj©ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¥pubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M©hj¡pubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjÀph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¼ph´M©hj½pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¡pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¼ph´M©hjžpubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjàph]”hŒ atomic_t *v”…”�”}”(hjâph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÞpubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MªhjÚpubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjùph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jõph´Mªhjöpubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÚpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jõph´Mªhjžpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‚pubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjqh]”hŒ Description”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¬hj‚pubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj1qh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj9qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1qubhŒ to (”…”�”}”(hj1qh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjKqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1qubhŒ + ”…”�”}”(hj1qh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj]qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1qubhŒ) with acquire ordering.”…”�”}”(hj1qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M«hj‚pubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_add_acquire() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_add_acquire() elsewhere.”…”�”}”(hjvqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M­hj‚pubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj‡qh]”hŒReturn”…”�”}”(hj‰qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj…qubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¯hj‚pubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj�qh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¥qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�qubhŒ.”…”�”}”(hj�qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M°hj‚pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_add_release (C function)”Œc.raw_atomic_fetch_add_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_add_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_add_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÚqh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÃubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíqh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚqh²hh³jìqh´MÃubhÿ)�”}”(hŒraw_atomic_fetch_add_release”h]”j)�”}”(hŒraw_atomic_fetch_add_release”h]”hŒraw_atomic_fetch_add_release”…”�”}”(hjÿqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûqubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÚqh²hh³jìqh´MÃubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)rh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjrubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj7rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjrubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjRrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jTrŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjrsbŒc.raw_atomic_fetch_add_release”†”asbuh1hhjKrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrrh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjKrubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj€rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjKrubj)�”}”(hjph]”hŒv”…”�”}”(hj�rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjrubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÚqh²hh³jìqh´MÃubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÖqh²hh³jìqh´MÃubah}”(h]”jÑqah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jìqh´MÃhjÓqh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hj¶rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÃhj³rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÓqh²hh³jìqh´MÃubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÎrjHjÎrjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Safe to use in noinstr code; prefer atomic_fetch_add_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjØrh]”hŒ Parameters”…”�”}”(hjÚrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖrubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÇhjÒrubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj÷rh]”hŒint i”…”�”}”(hjùrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjõrubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÄhjñrubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j sh´MÄhj subah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjñrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j sh´MÄhjîrubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj0sh]”hŒ atomic_t *v”…”�”}”(hj2sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj.subah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÅhj*subjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjIsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jEsh´MÅhjFsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*subeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jEsh´MÅhjîrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÒrubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjksh]”hŒ Description”…”�”}”(hjmsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjisubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÇhjÒrubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj�sh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‰sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�subhŒ to (”…”�”}”(hj�sh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj›sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�subhŒ + ”…”�”}”(hj�sh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj­sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�subhŒ) with release ordering.”…”�”}”(hj�sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÆhjÒrubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_add_release() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_add_release() elsewhere.”…”�”}”(hjÆsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÈhjÒrubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj×sh]”hŒReturn”…”�”}”(hjÙsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÕsubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÊhjÒrubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjísh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjõsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjísubhŒ.”…”�”}”(hjísh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MËhjÒrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_add_relaxed (C function)”Œc.raw_atomic_fetch_add_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_add_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_add_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj.th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj*th²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*th²hh³juubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj€uh]”hŒ atomic_t *v”…”�”}”(hj‚uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj~uubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MßhjzuubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj™uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j•uh´Mßhj–uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjzuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j•uh´Mßhj>uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj"uubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj»uh]”hŒ Description”…”�”}”(hj½uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹uubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Máhj"uubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÑuh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÙuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑuubhŒ to (”…”�”}”(hjÑuh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjëuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑuubhŒ + ”…”�”}”(hjÑuh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjýuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑuubhŒ) with relaxed ordering.”…”�”}”(hjÑuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Màhj"uubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_add_relaxed() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_add_relaxed() elsewhere.”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mâhj"uubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj'vh]”hŒReturn”…”�”}”(hj)vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%vubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mähj"uubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj=vh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjEvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=vubhŒ.”…”�”}”(hj=vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Måhj"uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_sub (C function)”Œc.raw_atomic_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void raw_atomic_sub (int i, atomic_t *v)”h]”hù)�”}”(hŒ'void raw_atomic_sub(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj~vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjzvh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MôubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjzvh²hh³jŒvh´Môubhÿ)�”}”(hŒraw_atomic_sub”h]”j)�”}”(hŒraw_atomic_sub”h]”hŒraw_atomic_sub”…”�”}”(hjŸvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›vubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjzvh²hh³jŒvh´Môubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj»vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj·vubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉvh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·vubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj×vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj³vubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjòvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jôvŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¡vsbŒc.raw_atomic_sub”†”asbuh1hhjëvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjëvubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjëvubj)�”}”(hjph]”hŒv”…”�”}”(hj-wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj³vubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjzvh²hh³jŒvh´Môubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjvvh²hh³jŒvh´Môubah}”(h]”jqvah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŒvh´Môhjsvh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hjVwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MôhjSwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjsvh²hh³jŒvh´Môubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjnwjHjnwjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_sub() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjxwh]”hŒ Parameters”…”�”}”(hjzwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvwubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Møhjrwubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj—wh]”hŒint i”…”�”}”(hj™wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj•wubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mõhj‘wubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hj°wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¬wh´Mõhj­wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‘wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¬wh´MõhjŽwubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÐwh]”hŒ atomic_t *v”…”�”}”(hjÒwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÎwubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MöhjÊwubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjéwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jåwh´Möhjæwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÊwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jåwh´MöhjŽwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjrwubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj xh]”hŒ Description”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj xubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MøhjrwubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj!xh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj)xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!xubhŒ to (”…”�”}”(hj!xh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj;xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!xubhŒ - ”…”�”}”(hj!xh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjMxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!xubhŒ) with relaxed ordering.”…”�”}”(hj!xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M÷hjrwubjM)�”}”(hŒ;Safe to use in noinstr code; prefer atomic_sub() elsewhere.”h]”hŒ;Safe to use in noinstr code; prefer atomic_sub() elsewhere.”…”�”}”(hjfxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MùhjrwubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjwxh]”hŒReturn”…”�”}”(hjyxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuxubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MûhjrwubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj�xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mühjrwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"raw_atomic_sub_return (C function)”Œc.raw_atomic_sub_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int raw_atomic_sub_return (int i, atomic_t *v)”h]”hù)�”}”(hŒ-int raw_atomic_sub_return(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¼xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¸xh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËxh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸xh²hh³jÊxh´Mubhÿ)�”}”(hŒraw_atomic_sub_return”h]”j)�”}”(hŒraw_atomic_sub_return”h]”hŒraw_atomic_sub_return”…”�”}”(hjÝxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙxubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¸xh²hh³jÊxh´Mubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjùxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjõxubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjõxubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjñxubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj0yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j2yŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjßxsbŒc.raw_atomic_sub_return”†”asbuh1hhj)yubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPyh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)yubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj^yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj)yubj)�”}”(hjph]”hŒv”…”�”}”(hjkyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjñxubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¸xh²hh³jÊxh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj´xh²hh³jÊxh´Mubah}”(h]”j¯xah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÊxh´Mhj±xh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(hj”yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj‘yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj±xh²hh³jÊxh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¬yjHj¬yjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Safe to use in noinstr code; prefer atomic_sub_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj¶yh]”hŒ Parameters”…”�”}”(hj¸yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´yubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj°yubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjÕyh]”hŒint i”…”�”}”(hj×yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÓyubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÏyubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjîyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jêyh´Mhjëyubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÏyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jêyh´MhjÌyubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjzh]”hŒ atomic_t *v”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj zubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjzubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj'zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j#zh´Mhj$zubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j#zh´MhjÌyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj°yubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjIzh]”hŒ Description”…”�”}”(hjKzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGzubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj°yubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj_zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjgzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_zubhŒ to (”…”�”}”(hj_zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjyzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_zubhŒ - ”…”�”}”(hj_zh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj‹zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_zubhŒ) with full ordering.”…”�”}”(hj_zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj°yubjM)�”}”(hŒBSafe to use in noinstr code; prefer atomic_sub_return() elsewhere.”h]”hŒBSafe to use in noinstr code; prefer atomic_sub_return() elsewhere.”…”�”}”(hj¤zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj°yubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjµzh]”hŒReturn”…”�”}”(hj·zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj°yubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjËzh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÓzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËzubhŒ.”…”�”}”(hjËzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj°yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_sub_return_acquire (C function)”Œc.raw_atomic_sub_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6int raw_atomic_sub_return_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ5int raw_atomic_sub_return_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj{h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{h²hh³j{h´M ubhÿ)�”}”(hŒraw_atomic_sub_return_acquire”h]”j)�”}”(hŒraw_atomic_sub_return_acquire”h]”hŒraw_atomic_sub_return_acquire”…”�”}”(hj-{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj){ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj{h²hh³j{h´M ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjI{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjE{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjE{ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hje{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjA{ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj€{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‚{Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj/{sbŒc.raw_atomic_sub_return_acquire”†”asbuh1hhjy{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjy{ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj®{h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjy{ubj)�”}”(hjph]”hŒv”…”�”}”(hj»{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjy{ubeh}”(•eh]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjA{ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj{h²hh³j{h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj{h²hh³j{h´M ubah}”(h]”jÿzah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j{h´M hj{h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hjä{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjá{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj{h²hh³j{h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjü{jHjü{jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_sub_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$hj|ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj%|h]”hŒint i”…”�”}”(hj'|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj#|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M!hj|ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hj>|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj^|h]”hŒ atomic_t *v”…”�”}”(hj`|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj\|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M"hjX|ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjw|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³js|h´M"hjt|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjX|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³js|h´M"hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj|ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$hj|ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¯|h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj·|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¯|ubhŒ to (”…”�”}”(hj¯|h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÉ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¯|ubhŒ - ”…”�”}”(hj¯|h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÛ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¯|ubhŒ) with acquire ordering.”…”�”}”(hj¯|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M#hj|ubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_sub_return_acquire() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_sub_return_acquire() elsewhere.”…”�”}”(hjô|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M%hj|ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj}h]”hŒReturn”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M'hj|ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj}h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj#}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ubhŒ.”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M(hj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_sub_return_release (C function)”Œc.raw_atomic_sub_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6int raw_atomic_sub_return_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ5int raw_atomic_sub_return_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj\}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjX}h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjX}h²hh³jj}h´M;ubhÿ)�”}”(hŒraw_atomic_sub_return_release”h]”j)�”}”(hŒraw_atomic_sub_return_release”h]”hŒraw_atomic_sub_return_release”…”�”}”(hj}}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjy}ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjX}h²hh³jj}h´M;ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj™}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj•}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj•}ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjµ}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj•}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‘}ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÐ}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍ}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÒ}Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj}sbŒc.raw_atomic_sub_return_release”†”asbuh1hhjÉ}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉ}ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjþ}h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÉ}ubj)�”}”(hjph]”hŒv”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉ}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‘}ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjX}h²hh³jj}h´M;ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjT}h²hh³jj}h´M;ubah}”(h]”jO}ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jj}h´M;hjQ}h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hj4~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M;hj1~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjQ}h²hh³jj}h´M;ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjL~jHjL~jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Safe to use in noinstr code; prefer atomic_sub_return_release() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjV~h]”hŒ Parameters”…”�”}”(hjX~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjT~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M?hjP~ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hju~h]”hŒint i”…”�”}”(hjw~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjs~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M<hjo~ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjŽ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠ~h´M<hj‹~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjo~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠ~h´M<hjl~ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj®~h]”hŒ atomic_t *v”…”�”}”(hj°~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¬~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M=hj¨~ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÇ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÃ~h´M=hjÄ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¨~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÃ~h´M=hjl~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjP~ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M?hjP~ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÿ~h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿ~ubhŒ to (”…”�”}”(hjÿ~h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿ~ubhŒ - ”…”�”}”(hjÿ~h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿ~ubhŒ) with release ordering.”…”�”}”(hjÿ~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M>hjP~ubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_sub_return_release() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_sub_return_release() elsewhere.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M@hjP~ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjUh]”hŒReturn”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MBhjP~ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjkh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkubhŒ.”…”�”}”(hjkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MChjP~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_sub_return_relaxed (C function)”Œc.raw_atomic_sub_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6int raw_atomic_sub_return_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ5int raw_atomic_sub_return_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¨h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MUubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¨h²hh³jºh´MUubhÿ)�”}”(hŒraw_atomic_sub_return_relaxed”h]”j)�”}”(hŒraw_atomic_sub_return_relaxed”h]”hŒraw_atomic_sub_return_relaxed”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¨h²hh³jºh´MUubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjåubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjáubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j"€Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÏsbŒc.raw_atomic_sub_return_relaxed”†”asbuh1hhj€ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@€h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjN€h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€ubj)�”}”(hjph]”hŒv”…”�”}”(hj[€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjáubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¨h²hh³jºh´MUubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¤h²hh³jºh´MUubah}”(h]”jŸah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jºh´MUhj¡h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hj„€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MUhj�€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¡h²hh³jºh´MUubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjœ€jHjœ€jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_sub_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MYhj €ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjÅ€h]”hŒint i”…”�”}”(hjÇ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MVhj¿€ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjÞ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÚ€h´MVhjÛ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¿€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÚ€h´MVhj¼€ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjþ€h]”hŒ atomic_t *v”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjü€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MWhjø€ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�h´MWhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjø€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�h´MWhj¼€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj €ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj9�h]”hŒ Description”…”�”}”(hj;�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MYhj €ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjO�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjW�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjO�ubhŒ to (”…”�”}”(hjO�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hji�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjO�ubhŒ - ”…”�”}”(hjO�h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj{�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjO�ubhŒ) with relaxed ordering.”…”�”}”(hjO�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MXhj €ubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_sub_return_relaxed() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_sub_return_relaxed() elsewhere.”…”�”}”(hj”�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MZhj €ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¥�h]”hŒReturn”…”�”}”(hj§�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj£�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M\hj €ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj»�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÃ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»�ubhŒ.”…”�”}”(hj»�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M]hj €ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!raw_atomic_fetch_sub (C function)”Œc.raw_atomic_fetch_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-int raw_atomic_fetch_sub (int i, atomic_t *v)”h]”hù)�”}”(hŒ,int raw_atomic_fetch_sub(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjü�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjø�h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ‚h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjø�h²hh³j ‚h´Mlubhÿ)�”}”(hŒraw_atomic_fetch_sub”h]”j)�”}”(hŒraw_atomic_fetch_sub”h]”hŒraw_atomic_fetch_sub”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjø�h²hh³j ‚h´Mlubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj9‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj5‚ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG‚h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5‚ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjU‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj1‚ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjp‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjm‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jr‚Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‚sbŒc.raw_atomic_fetch_sub”†”asbuh1hhji‚ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�‚h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhji‚ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjž‚h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hji‚ubj)�”}”(hjph]”hŒv”…”�”}”(hj«‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhji‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj1‚ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjø�h²hh³j ‚h´Mlubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjô�h²hh³j ‚h´Mlubah}”(h]”jï�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j ‚h´Mlhjñ�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(hjÔ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MlhjÑ‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjñ�h²hh³j ‚h´Mlubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjì‚jHjì‚jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Safe to use in noinstr code; prefer atomic_fetch_sub() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mphjð‚ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjƒh]”hŒint i”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MmhjƒubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hj.ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j*ƒh´Mmhj+ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j*ƒh´Mmhj ƒubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjNƒh]”hŒ atomic_t *v”…”�”}”(hjPƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjLƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MnhjHƒubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjgƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jcƒh´Mnhjdƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjHƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jcƒh´Mnhj ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjð‚ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mphjð‚ubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjŸƒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj§ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŸƒubhŒ to (”…”�”}”(hjŸƒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¹ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŸƒubhŒ - ”…”�”}”(hjŸƒh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj˃h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŸƒubhŒ) with full ordering.”…”�”}”(hjŸƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mohjð‚ubjM)�”}”(hŒASafe to use in noinstr code; prefer atomic_fetch_sub() elsewhere.”h]”hŒASafe to use in noinstr code; prefer atomic_fetch_sub() elsewhere.”…”�”}”(hjäƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mqhjð‚ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjõƒh]”hŒReturn”…”�”}”(hj÷ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mshjð‚ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj „h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj „ubhŒ.”…”�”}”(hj „h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mthjð‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_sub_acquire (C function)”Œc.raw_atomic_fetch_sub_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_sub_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_sub_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjL„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjH„h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjH„h²hh³jZ„h´M‡ubhÿ)�”}”(hŒraw_atomic_fetch_sub_acquire”h]”j)�”}”(hŒraw_atomic_fetch_sub_acquire”h]”hŒraw_atomic_fetch_sub_acquire”…”�”}”(hjm„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhji„ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjH„h²hh³jZ„h´M‡ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj‰„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj…„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…„ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¥„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�„ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÀ„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j„Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjo„sbŒc.raw_atomic_fetch_sub_acquire”†”asbuh1hhj¹„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹„ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjî„h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¹„ubj)�”}”(hjph]”hŒv”…”�”}”(hjû„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�„ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjH„h²hh³jZ„h´M‡ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjD„h²hh³jZ„h´M‡ubah}”(h]”j?„ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jZ„h´M‡hjA„h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hj$…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‡hj!…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjA„h²hh³jZ„h´M‡ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj<…jHj<…jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_fetch_sub_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjF…h]”hŒ Parameters”…”�”}”(hjH…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‹hj@…ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hje…h]”hŒint i”…”�”}”(hjg…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjc…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mˆhj_…ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hj~…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jz…h´Mˆhj{…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj_…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jz…h´Mˆhj\…ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjž…h]”hŒ atomic_t *v”…”�”}”(hj …h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjœ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‰hj˜…ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj·…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj@…ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‹hj@…ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjï…h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj÷…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjï…ubhŒ to (”…”�”}”(hjï…h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj †h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjï…ubhŒ - ”…”�”}”(hjï…h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjï…ubhŒ) with acquire ordering.”…”�”}”(hjï…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŠhj@…ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_sub_acquire() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_sub_acquire() elsewhere.”…”�”}”(hj4†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒhj@…ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjE†h]”hŒReturn”…”�”}”(hjG†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjC†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŽhj@…ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj[†h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjc†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[†ubhŒ.”…”�”}”(hj[†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hj@…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_sub_release (C function)”Œc.raw_atomic_fetch_sub_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_sub_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_sub_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjœ†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj˜†h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«†h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj˜†h²hh³jª†h´M¢ubhÿ)�”}”(hŒraw_atomic_fetch_sub_release”h]”j)�”}”(hŒraw_atomic_fetch_sub_release”h]”hŒraw_atomic_fetch_sub_release”…”�”}”(hj½†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹†ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj˜†h²hh³jª†h´M¢ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÙ†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÕ†ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç†h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÕ†ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjõ†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕ†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjцubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‡Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¿†sbŒc.raw_atomic_fetch_sub_release”†”asbuh1hhj ‡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0‡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ‡ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj>‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ‡ubj)�”}”(hjph]”hŒv”…”�”}”(hjK‡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjцubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj˜†h²hh³jª†h´M¢ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj”†h²hh³jª†h´M¢ubah}”(h]”j�†ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jª†h´M¢hj‘†h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hjt‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¢hjq‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‘†h²hh³jª†h´M¢ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŒ‡jHjŒ‡jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Safe to use in noinstr code; prefer atomic_fetch_sub_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¦hj�‡ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjµ‡h]”hŒint i”…”�”}”(hj·‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj³‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M£hj¯‡ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjî‡h]”hŒ atomic_t *v”…”�”}”(hjð‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjì‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¤hjè‡ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj�‡ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¦hj�‡ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj?ˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjGˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ˆubhŒ to (”…”�”}”(hj?ˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjYˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ˆubhŒ - ”…”�”}”(hj?ˆh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjkˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ˆubhŒ) with release ordering.”…”�”}”(hj?ˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¥hj�‡ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_sub_release() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_sub_release() elsewhere.”…”�”}”(hj„ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M§hj�‡ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj•ˆh]”hŒReturn”…”�”}”(hj—ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M©hj�‡ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj«ˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj³ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«ˆubhŒ.”…”�”}”(hj«ˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mªhj�‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_sub_relaxed (C function)”Œc.raw_atomic_fetch_sub_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_sub_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_sub_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjìˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjèˆh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjèˆh²hh³júˆh´M¼ubhÿ)�”}”(hŒraw_atomic_fetch_sub_relaxed”h]”j)�”}”(hŒraw_atomic_fetch_sub_relaxed”h]”hŒraw_atomic_fetch_sub_relaxed”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ‰ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjèˆh²hh³júˆh´M¼ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj)‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj%‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj%‰ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjE‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj!‰ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj`‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jb‰Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‰sbŒc.raw_atomic_fetch_sub_relaxed”†”asbuh1hhjY‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjY‰ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjމh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjY‰ubj)�”}”(hjph]”hŒv”…”�”}”(hj›‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj!‰ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjèˆh²hh³júˆh´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjäˆh²hh³júˆh´M¼ubah}”(h]”j߈ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³júˆh´M¼hjáˆh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hjĉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¼hjÁ‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjáˆh²hh³júˆh´M¼ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj܉jHj܉jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX"**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_fetch_sub_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÀhjà‰ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjŠh]”hŒint i”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M½hjÿ‰ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj>Šh]”hŒ atomic_t *v”…”�”}”(hj@Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj<Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¾hj8ŠubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjWŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jSŠh´M¾hjTŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj8Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jSŠh´M¾hjü‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjà‰ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjyŠh]”hŒ Description”…”�”}”(hj{Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÀhjà‰ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj�Šh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj—Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ŠubhŒ to (”…”�”}”(hj�Šh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj©Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ŠubhŒ - ”…”�”}”(hj�Šh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj»Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ŠubhŒ) with relaxed ordering.”…”�”}”(hj�Šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¿hjà‰ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_sub_relaxed() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_sub_relaxed() elsewhere.”…”�”}”(hjÔŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÁhjà‰ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjåŠh]”hŒReturn”…”�”}”(hjçŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÃhjà‰ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjûŠh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûŠubhŒ.”…”�”}”(hjûŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÄhjà‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_inc (C function)”Œc.raw_atomic_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ!void raw_atomic_inc (atomic_t *v)”h]”hù)�”}”(hŒ void raw_atomic_inc(atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj<‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj8‹h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK‹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj8‹h²hh³jJ‹h´MÓubhÿ)�”}”(hŒraw_atomic_inc”h]”j)�”}”(hŒraw_atomic_inc”h]”hŒraw_atomic_inc”…”�”}”(hj]‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjY‹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj8‹h²hh³jJ‹h´MÓubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj|‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjy‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j~‹Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj_‹sbŒc.raw_atomic_inc”†”asbuh1hhju‹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ‹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhju‹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjª‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hju‹ubj)�”}”(hjph]”hŒv”…”�”}”(hj·‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhju‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjq‹ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj8‹h²hh³jJ‹h´MÓubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj4‹h²hh³jJ‹h´MÓubah}”(h]”j/‹ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jJ‹h´MÓhj1‹h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjà‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÓhjÝ‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj1‹h²hh³jJ‹h´MÓubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjø‹jHjø‹jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÙ**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_inc() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M×hjü‹ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj!Œh]”hŒ atomic_t *v”…”�”}”(hj#Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÔhjŒubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj:Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6Œh´MÔhj7Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6Œh´MÔhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjü‹ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj\Œh]”hŒ Description”…”�”}”(hj^Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÖhjü‹ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjrŒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjzŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrŒubhŒ to (”…”�”}”(hjrŒh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrŒubhŒ + 1) with relaxed ordering.”…”�”}”(hjrŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÕhjü‹ubjM)�”}”(hŒ;Safe to use in noinstr code; prefer atomic_inc() elsewhere.”h]”hŒ;Safe to use in noinstr code; prefer atomic_inc() elsewhere.”…”�”}”(hj¥Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M×hjü‹ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¶Œh]”hŒReturn”…”�”}”(hj¸Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÙhjü‹ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjÌŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÚhjü‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"raw_atomic_inc_return (C function)”Œc.raw_atomic_inc_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'int raw_atomic_inc_return (atomic_t *v)”h]”hù)�”}”(hŒ&int raw_atomic_inc_return(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjûŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj÷Œh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MçubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷Œh²hh³j �h´Mçubhÿ)�”}”(hŒraw_atomic_inc_return”h]”j)�”}”(hŒraw_atomic_inc_return”h]”hŒraw_atomic_inc_return”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj÷Œh²hh³j �h´Mçubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj;�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j=�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj�sbŒc.raw_atomic_inc_return”†”asbuh1hhj4�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hji�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj4�ubj)�”}”(hjph]”hŒv”…”�”}”(hjv�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0�ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj÷Œh²hh³j �h´Mçubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjóŒh²hh³j �h´Mçubah}”(h]”jîŒah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j �h´MçhjðŒh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hjŸ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mçhjœ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjðŒh²hh³j �h´Mçubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj·�jHj·�jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒð**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Safe to use in noinstr code; prefer atomic_inc_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mëhj»�ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjà�h]”hŒ atomic_t *v”…”�”}”(hjâ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÞ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MèhjÚ�ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj»�ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mêhj»�ubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj1Žh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj9Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ŽubhŒ to (”…”�”}”(hj1Žh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjKŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ŽubhŒ + 1) with full ordering.”…”�”}”(hj1Žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Méhj»�ubjM)�”}”(hŒBSafe to use in noinstr code; prefer atomic_inc_return() elsewhere.”h]”hŒBSafe to use in noinstr code; prefer atomic_inc_return() elsewhere.”…”�”}”(hjdŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mëhj»�ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjuŽh]”hŒReturn”…”�”}”(hjwŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Míhj»�ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj‹Žh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj“Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹ŽubhŒ.”…”�”}”(hj‹Žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mîhj»�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_inc_return_acquire (C function)”Œc.raw_atomic_inc_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/int raw_atomic_inc_return_acquire (atomic_t *v)”h]”hù)�”}”(hŒ.int raw_atomic_inc_return_acquire(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÌŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÈŽh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛŽh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÈŽh²hh³jÚŽh´Mubhÿ)�”}”(hŒraw_atomic_inc_return_acquire”h]”j)�”}”(hŒraw_atomic_inc_return_acquire”h]”hŒraw_atomic_inc_return_acquire”…”�”}”(hjíŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéŽubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÈŽh²hh³jÚŽh´Mubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj �ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjïŽsbŒc.raw_atomic_inc_return_acquire”†”asbuh1hhj�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj:�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�ubj)�”}”(hjph]”hŒv”…”�”}”(hjG�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÈŽh²hh³jÚŽh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÄŽh²hh³jÚŽh´Mubah}”(h]”j¿Žah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÚŽh´MhjÁŽh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hjp�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjm�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÁŽh²hh³jÚŽh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjˆ�jHjˆ�jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with acquire ordering. Safe to use in noinstr code; prefer atomic_inc_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjŒ�ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj±�h]”hŒ atomic_t *v”…”�”}”(hj³�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¯�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj«�ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÊ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÆ�h´MhjÇ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj«�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÆ�h´Mhj¨�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjŒ�ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjŒ�ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ to (”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ + 1) with acquire ordering.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjŒ�ubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_inc_return_acquire() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_inc_return_acquire() elsewhere.”…”�”}”(hj5�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjŒ�ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjF�h]”hŒReturn”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjŒ�ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj\�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjd�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\�ubhŒ.”…”�”}”(hj\�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjŒ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_inc_return_release (C function)”Œc.raw_atomic_inc_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/int raw_atomic_inc_return_release (atomic_t *v)”h]”hù)�”}”(hŒ.int raw_atomic_inc_return_release(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj™�h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™�h²hh³j«�h´Mubhÿ)�”}”(hŒraw_atomic_inc_return_release”h]”j)�”}”(hŒraw_atomic_inc_return_release”h]”hŒraw_atomic_inc_return_release”…”�”}”(hj¾�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjº�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj™�h²hh³j«�h´Mubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÝ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jß�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÀ�sbŒc.raw_atomic_inc_return_release”†”asbuh1hhjÖ�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖ�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj ‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÖ�ubj)�”}”(hjph]”hŒv”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÒ�ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj™�h²hh³j«�h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj•�h²hh³j«�h´Mubah}”(h]”j��ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j«�h´Mhj’�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hjA‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj>‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj’�h²hh³j«�h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjY‘jHjY‘jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Safe to use in noinstr code; prefer atomic_inc_return_release() elsewhere. **Return** The updated value of **v**.”•h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjc‘h]”hŒ Parameters”…”�”}”(hje‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj]‘ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj‚‘h]”hŒ atomic_t *v”…”�”}”(hj„‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj€‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj|‘ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj›‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j—‘h´Mhj˜‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj|‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j—‘h´Mhjy‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj]‘ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj]‘ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÓ‘h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÛ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓ‘ubhŒ to (”…”�”}”(hjÓ‘h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjí‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓ‘ubhŒ + 1) with release ordering.”…”�”}”(hjÓ‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj]‘ubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_inc_return_release() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_inc_return_release() elsewhere.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj]‘ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj’h]”hŒReturn”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M!hj]‘ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj-’h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj5’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-’ubhŒ.”…”�”}”(hj-’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M"hj]‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_inc_return_relaxed (C function)”Œc.raw_atomic_inc_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/int raw_atomic_inc_return_relaxed (atomic_t *v)”h]”hù)�”}”(hŒ.int raw_atomic_inc_return_relaxed(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjn’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjj’h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}’h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjj’h²hh³j|’h´M4ubhÿ)�”}”(hŒraw_atomic_inc_return_relaxed”h]”j)�”}”(hŒraw_atomic_inc_return_relaxed”h]”hŒraw_atomic_inc_return_relaxed”…”�”}”(hj�’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹’ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjj’h²hh³j|’h´M4ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj®’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j°’Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‘’sbŒc.raw_atomic_inc_return_relaxed”†”asbuh1hhj§’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ’h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§’ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÜ’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj§’ubj)�”}”(hjph]”hŒv”…”�”}”(hjé’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj£’ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjj’h²hh³j|’h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjf’h²hh³j|’h´M4ubah}”(h]”ja’ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j|’h´M4hjc’h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M4hj“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjc’h²hh³j|’h´M4ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj*“jHj*“jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_inc_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj4“h]”hŒ Parameters”…”�”}”(hj6“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M8hj.“ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjS“h]”hŒ atomic_t *v”…”�”}”(hjU“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjQ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M5hjM“ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjl“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh“h´M5hji“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjM“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh“h´M5hjJ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj.“ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M7hj.“ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¤“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¬“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤“ubhŒ to (”…”�”}”(hj¤“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¾“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤“ubhŒ + 1) with relaxed ordering.”…”�”}”(hj¤“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M6hj.“ubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_inc_return_relaxed() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_inc_return_relaxed() elsewhere.”…”�”}”(hjדh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M8hj.“ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjè“h]”hŒReturn”…”�”}”(hjê“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M:hj.“ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjþ“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþ“ubhŒ.”…”�”}”(hjþ“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M;hj.“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!raw_atomic_fetch_inc (C function)”Œc.raw_atomic_fetch_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&int raw_atomic_fetch_inc (atomic_t *v)”h]”hù)�”}”(hŒ%int raw_atomic_fetch_inc(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj?”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj;”h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MJubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;”h²hh³jM”h´MJubhÿ)�”}”(hŒraw_atomic_fetch_inc”h]”j)�”}”(hŒraw_atomic_fetch_inc”h]”hŒraw_atomic_fetch_inc”…”�”}”(hj`”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\”ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj;”h²hh³jM”h´MJubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�”Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjb”sbŒc.raw_atomic_fetch_inc”†”asbuh1hhjx”ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjx”ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj­”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjx”ubj)�”}”(hjph]”hŒv”…”�”}”(hjº”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjx”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjt”ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj;”h²hh³jM”h´MJubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj7”h²hh³jM”h´MJubah}”(h]”j2”ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jM”h´MJhj4”h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hjã”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MJhjà”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj4”h²hh³jM”h´MJubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjû”jHjû”jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒð**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Safe to use in noinstr code; prefer atomic_fetch_inc() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MNhjÿ”ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj$•h]”hŒ atomic_t *v”…”�”}”(hj&•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj"•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MKhj•ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj=•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j9•h´MKhj:•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j9•h´MKhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÿ”ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj_•h]”hŒ Description”…”�”}”(hja•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj]•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MMhjÿ”ubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hju•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj}•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hju•ubhŒ to (”…”�”}”(hju•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hju•ubhŒ + 1) with full ordering.”…”�”}”(hju•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MLhjÿ”ubjM)�”}”(hŒASafe to use in noinstr code; prefer atomic_fetch_inc() elsewhere.”h]”hŒASafe to use in noinstr code; prefer atomic_fetch_inc() elsewhere.”…”�”}”(hj¨•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MNhjÿ”ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¹•h]”hŒReturn”…”�”}”(hj»•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj·•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MPhjÿ”ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÏ•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjוh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏ•ubhŒ.”…”�”}”(hjÏ•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MQhjÿ”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_inc_acquire (C function)”Œc.raw_atomic_fetch_inc_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int raw_atomic_fetch_inc_acquire (atomic_t *v)”h]”hù)�”}”(hŒ-int raw_atomic_fetch_inc_acquire(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj –h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj –h²hh³j–h´Mdubhÿ)�”}”(hŒraw_atomic_fetch_inc_acquire”h]”j)�”}”(hŒraw_atomic_fetch_inc_acquire”h]”hŒraw_atomic_fetch_inc_acquire”…”�”}”(hj1–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj –h²hh³j–h´Mdubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjP–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjM–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jR–Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj3–sbŒc.raw_atomic_fetch_inc_acquire”†”asbuh1hhjI–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjI–ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj~–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjI–ubj)�”}”(hjph]”hŒv”…”�”}”(hj‹–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjI–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjE–ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj –h²hh³j–h´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj–h²hh³j–h´Mdubah}”(h]”j–ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j–h´Mdhj–h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hj´–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mdhj±–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–h²hh³j–h´Mdubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÌ–jHjÌ–jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with acquire ordering. Safe to use in noinstr code; prefer atomic_fetch_inc_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhhjЖubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjõ–h]”hŒ atomic_t *v”…”�”}”(hj÷–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjó–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mehjï–ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j —h´Mehj —ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjï–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j —h´Mehjì–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjЖubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj0—h]”hŒ Description”…”�”}”(hj2—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MghjЖubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjF—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjN—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF—ubhŒ to (”…”�”}”(hjF—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF—ubhŒ + 1) with acquire ordering.”…”�”}”(hjF—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MfhjЖubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_inc_acquire() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_inc_acquire() elsewhere.”…”�”}”(hjy—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhhjЖubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjŠ—h]”hŒReturn”…”�”}”(hjŒ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MjhjЖubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj —h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¨—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj —ubhŒ.”…”�”}”(hj —h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MkhjЖubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_inc_release (C function)”Œc.raw_atomic_fetch_inc_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int raw_atomic_fetch_inc_release (atomic_t *v)”h]”hù)�”}”(hŒ-int raw_atomic_fetch_inc_release(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjá—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÝ—h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M~ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð—h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝ—h²hh³jï—h´M~ubhÿ)�”}”(hŒraw_atomic_fetch_inc_release”h]”j)�”}”(hŒraw_atomic_fetch_inc_release”h]”hŒraw_atomic_fetch_inc_release”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ—ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÝ—h²hh³jï—h´M~ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj!˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j#˜Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj˜sbŒc.raw_atomic_fetch_inc_release”†”asbuh1hhj˜ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA˜h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj˜ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjO˜h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj˜ubj)�”}”(hjph]”hŒv”…”�”}”(hj\˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj˜ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÝ—h²hh³jï—h´M~ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÙ—h²hh³jï—h´M~ubah}”(h]”jÔ—ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jï—h´M~hjÖ—h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hj…˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M~hj‚˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÖ—h²hh³jï—h´M~ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�˜jHj�˜jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Safe to use in noinstr code; prefer atomic_fetch_inc_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‚hj¡˜ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjƘh]”hŒ atomic_t *v”…”�”}”(hjȘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjĘubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÀ˜ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjߘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÛ˜h´Mhjܘubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÀ˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÛ˜h´Mhj½˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¡˜ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hj¡˜ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj™h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™ubhŒ to (”…”�”}”(hj™h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj1™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™ubhŒ + 1) with release ordering.”…”�”}”(hj™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M€hj¡˜ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_inc_release() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_inc_release() elsewhere.”…”�”}”(hjJ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‚hj¡˜ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj[™h]”hŒReturn”…”�”}”(hj]™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjY™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M„hj¡˜ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjq™h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjy™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjq™ubhŒ.”…”�”}”(hjq™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M…hj¡˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_inc_relaxed (C function)”Œc.raw_atomic_fetch_inc_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int raw_atomic_fetch_inc_relaxed (atomic_t *v)”h]”hù)�”}”(hŒ-int raw_atomic_fetch_inc_relaxed(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj²™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj®™h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M—ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj®™h²hh³jÀ™h´M—ubhÿ)�”}”(hŒraw_atomic_fetch_inc_relaxed”h]”j)�”}”(hŒraw_atomic_fetch_inc_relaxed”h]”hŒraw_atomic_fetch_inc_relaxed”…”�”}”(hjÓ™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏ™ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj®™h²hh³jÀ™h´M—ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjò™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjï™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jô™Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÕ™sbŒc.raw_atomic_fetch_inc_relaxed”†”asbuh1hhjë™ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjë™ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjë™ubj)�”}”(hjph]”hŒv”…”�”}”(hj-šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjë™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjç™ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj®™h²hh³jÀ™h´M—ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjª™h²hh³jÀ™h´M—ubah}”(h]”j¥™ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÀ™h´M—hj§™h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjVšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M—hjSšh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj§™h²hh³jÀ™h´M—ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjnšjHjnšjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_fetch_inc_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M›hjršubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj—šh]”hŒ atomic_t *v”…”�”}”(hj™šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj•šubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M˜hj‘šubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj°šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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šubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MšhjršubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjèšh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjðšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjèšubhŒ to (”…”�”}”(hjèšh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjèšubhŒ + 1) with relaxed ordering.”…”�”}”(hjèšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M™hjršubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_inc_relaxed() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_inc_relaxed() elsewhere.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M›hjršubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj,›h]”hŒReturn”…”�”}”(hj.›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hjršubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjB›h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjB›ubhŒ.”…”�”}”(hjB›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mžhjršubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_dec (C function)”Œc.raw_atomic_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ!void raw_atomic_dec (atomic_t *v)”h]”hù)�”}”(hŒ void raw_atomic_dec(atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒ›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj›h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›h²hh³j‘›h´M­ubhÿ)�”}”(hŒraw_atomic_dec”h]”j)�”}”(hŒraw_atomic_dec”h]”hŒraw_atomic_dec”…”�”}”(hj¤›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ›ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj›h²hh³j‘›h´M­ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÅ›Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¦›sbŒc.raw_atomic_dec”†”asbuh1hhj¼›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¼›ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjñ›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¼›ubj)�”}”(hjph]”hŒv”…”�”}”(hjþ›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¸›ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj›h²hh³j‘›h´M­ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj{›h²hh³j‘›h´M­ubah}”(h]”jv›ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‘›h´M­hjx›h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj'œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M­hj$œh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjx›h²hh³j‘›h´M­ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj?œjHj?œjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÙ**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_dec() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjIœh]”hŒ Parameters”…”�”}”(hjKœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGœubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M±hjCœubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjhœh]”hŒ atomic_t *v”…”�”}”(hjjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjfœubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M®hjbœubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj�œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j}œh´M®hj~œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjbœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j}œh´M®hj_œubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjCœubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M°hjCœubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¹œh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÁœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹œubhŒ to (”…”�”}”(hj¹œh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÓœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹œubhŒ - 1) with relaxed ordering.”…”�”}”(hj¹œh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¯hjCœubjM)�”}”(hŒ;Safe to use in noinstr code; prefer atomic_dec() elsewhere.”h]”hŒ;Safe to use in noinstr code; prefer atomic_dec() elsewhere.”…”�”}”(hjìœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M±hjCœubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjýœh]”hŒReturn”…”�”}”(hjÿœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûœubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M³hjCœubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M´hjCœubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"raw_atomic_dec_return (C function)”Œc.raw_atomic_dec_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'int raw_atomic_dec_return (atomic_t *v)”h]”hù)�”}”(hŒ&int raw_atomic_dec_return(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjB�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj>�h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>�h²hh³jP�h´MÁubhÿ)�”}”(hŒraw_atomic_dec_return”h]”j)�”}”(hŒraw_atomic_dec_return”h]”hŒraw_atomic_dec_return”…”�”}”(hjc�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj>�h²hh³jP�h´MÁubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j„�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsje�sbŒc.raw_atomic_dec_return”†”asbuh1hhj{�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj°�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj{�ubj)�”}”(hjph]”hŒv”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjw�ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj>�h²hh³jP�h´MÁubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj:�h²hh³jP�h´MÁubah}”(h]”j5�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jP�h´MÁhj7�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hjæ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÁhjã�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj7�h²hh³jP�h´MÁubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjþ�jHjþ�jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒð**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Safe to use in noinstr code; prefer atomic_dec_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÅhjžubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj'žh]”hŒ atomic_t *v”…”�”}”(hj)žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj%žubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÂhj!žubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj@žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjžubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjbžh]”hŒ Description”…”�”}”(hjdžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`žubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÄhjžubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjxžh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxžubhŒ to (”…”�”}”(hjxžh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj’žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxžubhŒ - 1) with full ordering.”…”�”}”(hjxžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÃhjžubjM)�”}”(hŒBSafe to use in noinstr code; prefer atomic_dec_return() elsewhere.”h]”hŒBSafe to use in noinstr code; prefer atomic_dec_return() elsewhere.”…”�”}”(hj«žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÅhjžubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¼žh]”hŒReturn”…”�”}”(hj¾žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºžubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÇhjžubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÒžh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÚžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒžubhŒ.”…”�”}”(hjÒžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÈhjžubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_dec_return_acquire (C function)”Œc.raw_atomic_dec_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/int raw_atomic_dec_return_acquire (atomic_t *v)”h]”hù)�”}”(hŒ.int raw_atomic_dec_return_acquire(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŸh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÛubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŸh²hh³j!Ÿh´MÛubhÿ)�”}”(hŒraw_atomic_dec_return_acquire”h]”j)�”}”(hŒraw_atomic_dec_return_acquire”h]”hŒraw_atomic_dec_return_acquire”…”�”}”(hj4Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0Ÿubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŸh²hh³j!Ÿh´MÛubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjSŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jUŸŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj6ŸsbŒc.raw_atomic_dec_return_acquire”†”asbuh1hhjLŸubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsŸh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjLŸubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�Ÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjLŸubj)�”}”(hjph]”hŒv”…”�”}”(hjŽŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjHŸubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŸh²hh³j!Ÿh´MÛubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj Ÿh²hh³j!Ÿh´MÛubah}”(h]”jŸah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j!Ÿh´MÛhjŸh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hj·Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÛhj´Ÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŸh²hh³j!Ÿh´MÛubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÏŸjHjÏŸjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Safe to use in noinstr code; prefer atomic_dec_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MßhjÓŸubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjøŸh]”hŒ atomic_t *v”…”�”}”(hjúŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjöŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÜhjòŸubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÓŸubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj3 h]”hŒ Description”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÞhjÓŸubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjI h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI ubhŒ to (”…”�”}”(hjI h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI ubhŒ - 1) with acquire ordering.”…”�”}”(hjI h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝhjÓŸubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_dec_return_acquire() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_dec_return_acquire() elsewhere.”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MßhjÓŸubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj� h]”hŒReturn”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MáhjÓŸubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj£ h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj£ ubhŒ.”…”�”}”(hj£ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MâhjÓŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_dec_return_release (C function)”Œc.raw_atomic_dec_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/int raw_atomic_dec_return_release (atomic_t *v)”h]”hù)�”}”(hŒ.int raw_atomic_dec_return_release(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjà h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MõubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjà h²hh³jò h´Mõubhÿ)�”}”(hŒraw_atomic_dec_return_release”h]”j)�”}”(hŒraw_atomic_dec_return_release”h]”hŒraw_atomic_dec_return_release”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjà h²hh³jò h´Mõubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj$¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j&¡Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¡sbŒc.raw_atomic_dec_return_release”†”asbuh1hhj¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjR¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¡ubj)�”}”(hjph]”hŒv”…”�”}”(hj_¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¡ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjà h²hh³jò h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÜ h²hh³jò h´Mõubah}”(h]”j× ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jò h´MõhjÙ h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hjˆ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mõhj…¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÙ h²hh³jò h´Mõubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj ¡jHj ¡jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Safe to use in noinstr code; prefer atomic_dec_return_release() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mùhj¤¡ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÉ¡h]”hŒ atomic_t *v”…”�”}”(hjË¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÇ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MöhjáubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjâ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¤¡ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Møhj¤¡ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¢h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj"¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢ubhŒ to (”…”�”}”(hj¢h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj4¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢ubhŒ - 1) with release ordering.”…”�”}”(hj¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M÷hj¤¡ubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_dec_return_release() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_dec_return_release() elsewhere.”…”�”}”(hjM¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mùhj¤¡ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj^¢h]”hŒReturn”…”�”}”(hj`¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mûhj¤¡ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjt¢h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt¢ubhŒ.”…”�”}”(hjt¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mühj¤¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic_dec_return_relaxed (C function)”Œc.raw_atomic_dec_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/int raw_atomic_dec_return_relaxed (atomic_t *v)”h]”hù)�”}”(hŒ.int raw_atomic_dec_return_relaxed(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjµ¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj±¢h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±¢h²hh³jâh´Mubhÿ)�”}”(hŒraw_atomic_dec_return_relaxed”h]”j)�”}”(hŒraw_atomic_dec_return_relaxed”h]”hŒraw_atomic_dec_return_relaxed”…”�”}”(hjÖ¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒ¢ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj±¢h²hh³jâh´Mubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjõ¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j÷¢Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjØ¢sbŒc.raw_atomic_dec_return_relaxed”†”asbuh1hhjî¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî¢ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj#£h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjî¢ubj)�”}”(hjph]”hŒv”…”�”}”(hj0£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê¢ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj±¢h²hh³jâh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj­¢h²hh³jâh´Mubah}”(h]”j¨¢ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jâh´Mhjª¢h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hjY£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjV£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjª¢h²hh³jâh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjq£jHjq£jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_dec_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj{£h]”hŒ Parameters”…”�”}”(hj}£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhju£ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjš£h]”hŒ atomic_t *v”…”�”}”(hjœ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj˜£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj”£ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj³£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¯£h´Mhj°£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj”£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¯£h´Mhj‘£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hju£ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhju£ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjë£h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjó£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjë£ubhŒ to (”…”�”}”(hjë£h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjë£ubhŒ - 1) with relaxed ordering.”…”�”}”(hjë£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhju£ubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic_dec_return_relaxed() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic_dec_return_relaxed() elsewhere.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhju£ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj/¤h]”hŒReturn”…”�”}”(hj1¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhju£ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjE¤h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjM¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjE¤ubhŒ.”…”�”}”(hjE¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhju£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!raw_atomic_fetch_dec (C function)”Œc.raw_atomic_fetch_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ&int raw_atomic_fetch_dec (atomic_t *v)”h]”hù)�”}”(hŒ%int raw_atomic_fetch_dec(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj†¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‚¤h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚¤h²hh³j”¤h´M$ubhÿ)�”}”(hŒraw_atomic_fetch_dec”h]”j)�”}”(hŒraw_atomic_fetch_dec”h]”hŒraw_atomic_fetch_dec”…”�”}”(hj§¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£¤ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‚¤h²hh³j”¤h´M$ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjƤh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jȤŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj©¤sbŒc.raw_atomic_fetch_dec”†”asbuh1hhj¿¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿¤ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjô¤h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¿¤ubj)�”}”(hjph]”hŒv”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj»¤ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‚¤h²hh³j”¤h´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj~¤h²hh³j”¤h´M$ubah}”(h]”jy¤ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j”¤h´M$hj{¤h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hj*¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$hj'¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj{¤h²hh³j”¤h´M$ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjB¥jHjB¥jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒð**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Safe to use in noinstr code; prefer atomic_fetch_dec() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjL¥h]”hŒ Parameters”…”�”}”(hjN¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M(hjF¥ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjk¥h]”hŒ atomic_t *v”…”�”}”(hjm¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhji¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M%hje¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj„¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€¥h´M%hj�¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhje¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€¥h´M%hjb¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjF¥ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M'hjF¥ubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¼¥h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÄ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼¥ubhŒ to (”…”�”}”(hj¼¥h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÖ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼¥ubhŒ - 1) with full ordering.”…”�”}”(hj¼¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M&hjF¥ubjM)�”}”(hŒASafe to use in noinstr code; prefer atomic_fetch_dec() elsewhere.”h]”hŒASafe to use in noinstr code; prefer atomic_fetch_dec() elsewhere.”…”�”}”(hjï¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M(hjF¥ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¦h]”hŒReturn”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M*hjF¥ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¦h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦ubhŒ.”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M+hjF¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_dec_acquire (C function)”Œc.raw_atomic_fetch_dec_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int raw_atomic_fetch_dec_acquire (atomic_t *v)”h]”hù)�”}”(hŒ-int raw_atomic_fetch_dec_acquire(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjW¦h²hh³Nh´Nubah}”(h]”h ]”•jah"]”h$]”h&]”uh1jûhjS¦h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M>ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjS¦h²hh³je¦h´M>ubhÿ)�”}”(hŒraw_atomic_fetch_dec_acquire”h]”j)�”}”(hŒraw_atomic_fetch_dec_acquire”h]”hŒraw_atomic_fetch_dec_acquire”…”�”}”(hjx¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt¦ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjS¦h²hh³je¦h´M>ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj—¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j™¦Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjz¦sbŒc.raw_atomic_fetch_dec_acquire”†”asbuh1hhj�¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�¦ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŦh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�¦ubj)�”}”(hjph]”hŒv”…”�”}”(hjÒ¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŒ¦ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjS¦h²hh³je¦h´M>ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjO¦h²hh³je¦h´M>ubah}”(h]”jJ¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³je¦h´M>hjL¦h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hjû¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M>hjø¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjL¦h²hh³je¦h´M>ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj§jHj§jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Safe to use in noinstr code; prefer atomic_fetch_dec_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MBhj§ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj<§h]”hŒ atomic_t *v”…”�”}”(hj>§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M?hj6§ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjU§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ§h´M?hjR§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQ§h´M?hj3§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj§ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjw§h]”hŒ Description”…”�”}”(hjy§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hju§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MAhj§ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj�§h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj•§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�§ubhŒ to (”…”�”}”(hj�§h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj§§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�§ubhŒ - 1) with acquire ordering.”…”�”}”(hj�§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M@hj§ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_dec_acquire() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_dec_acquire() elsewhere.”…”�”}”(hjÀ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MBhj§ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjѧh]”hŒReturn”…”�”}”(hjÓ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjϧubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MDhj§ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjç§h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjï§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjç§ubhŒ.”…”�”}”(hjç§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MEhj§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_dec_release (C function)”Œc.raw_atomic_fetch_dec_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int raw_atomic_fetch_dec_release (atomic_t *v)”h]”hù)�”}”(hŒ-int raw_atomic_fetch_dec_release(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj(¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$¨h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MXubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$¨h²hh³j6¨h´MXubhÿ)�”}”(hŒraw_atomic_fetch_dec_release”h]”j)�”}”(hŒraw_atomic_fetch_dec_release”h]”hŒraw_atomic_fetch_dec_release”…”�”}”(hjI¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE¨ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj$¨h²hh³j6¨h´MXubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjh¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jj¨Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjK¨sbŒc.raw_atomic_fetch_dec_release”†”asbuh1hhja¨ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhja¨ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj–¨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hja¨ubj)�”}”(hjph]”hŒv”…”�”}”(hj£¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhja¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]¨ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj$¨h²hh³j6¨h´MXubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj ¨h²hh³j6¨h´MXubah}”(h]”j¨ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j6¨h´MXhj¨h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hj̨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MXhjɨh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨h²hh³j6¨h´MXubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjä¨jHjä¨jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Safe to use in noinstr code; prefer atomic_fetch_dec_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M\hjè¨ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj ©h]”hŒ atomic_t *v”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MYhj©ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj&©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j"©h´MYhj#©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j"©h´MYhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjè¨ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjH©h]”hŒ Description”…”�”}”(hjJ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M[hjè¨ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj^©h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjf©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^©ubhŒ to (”…”�”}”(hj^©h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjx©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^©ubhŒ - 1) with release ordering.”…”�”}”(hj^©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MZhjè¨ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_dec_release() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_dec_release() elsewhere.”…”�”}”(hj‘©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M\hjè¨ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¢©h]”hŒReturn”…”�”}”(hj¤©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M^hjè¨ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¸©h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÀ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸©ubhŒ.”…”�”}”(hj¸©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M_hjè¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_dec_relaxed (C function)”Œc.raw_atomic_fetch_dec_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.int raw_atomic_fetch_dec_relaxed (atomic_t *v)”h]”hù)�”}”(hŒ-int raw_atomic_fetch_dec_relaxed(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjù©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjõ©h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjõ©h²hh³jªh´Mqubhÿ)�”}”(hŒraw_atomic_fetch_dec_relaxed”h]”j)�”}”(hŒraw_atomic_fetch_dec_relaxed”h]”hŒraw_atomic_fetch_dec_relaxed”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjªubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjõ©h²hh³jªh´Mqubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj9ªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j;ªŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjªsbŒc.raw_atomic_fetch_dec_relaxed”†”asbuh1hhj2ªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj2ªubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjgªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj2ªubj)�”}”(hjph]”hŒv”…”�”}”(hjtªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj.ªubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjõ©h²hh³jªh´Mqubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjñ©h²hh³jªh´Mqubah}”(h]”jì©ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jªh´Mqhjî©h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj�ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mqhjšªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjî©h²hh³jªh´Mqubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjµªjHjµªjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒû**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_fetch_dec_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Muhj¹ªubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÞªh]”hŒ atomic_t *v”…”�”}”(hjàªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjܪubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MrhjتubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj÷ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jóªh´Mrhjôªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjتubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jóªh´MrhjÕªubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¹ªubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mthj¹ªubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj/«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj7«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/«ubhŒ to (”…”�”}”(hj/«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjI«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/«ubhŒ - 1) with relaxed ordering.”…”�”}”(hj/«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mshj¹ªubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_dec_relaxed() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_dec_relaxed() elsewhere.”…”�”}”(hjb«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Muhj¹ªubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjs«h]”hŒReturn”…”�”}”(hju«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjq«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mwhj¹ªubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj‰«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‘«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‰«ubhŒ.”…”�”}”(hj‰«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mxhj¹ªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_and (C function)”Œc.raw_atomic_and”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void raw_atomic_and (int i, atomic_t *v)”h]”hù)�”}”(hŒ'void raw_atomic_and(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÊ«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÆ«h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ«h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆ«h²hh³jØ«h´M‡ubhÿ)�”}”(hŒraw_atomic_and”h]”j)�”}”(hŒraw_atomic_and”h]”hŒraw_atomic_and”…”�”}”(hjë«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjç«ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÆ«h²hh³jØ«h´M‡ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¬ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj#¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÿ«ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj>¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j@¬Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjí«sbŒc.raw_atomic_and”†”asbuh1hhj7¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7¬ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjl¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj7¬ubj)�”}”(hjph]”hŒv”…”�”}”(hjy¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÿ«ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÆ«h²hh³jØ«h´M‡ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj«h²hh³jØ«h´M‡ubah}”(h]”j½«ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jØ«h´M‡hj¿«h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hj¢¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‡hjŸ¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¿«h²hh³jØ«h´M‡ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjº¬jHjº¬jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒô**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_and() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‹hj¾¬ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjã¬h]”hŒint i”…”�”}”(hjå¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjá¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MˆhjݬubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjü¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj­h]”hŒ atomic_t *v”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‰hj­ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj5­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j1­h´M‰hj2­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j1­h´M‰hjÚ¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¾¬ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjW­h]”hŒ Description”…”�”}”(hjY­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjU­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‹hj¾¬ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjm­h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hju­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm­ubhŒ to (”…”�”}”(hjm­h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‡­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm­ubhŒ & ”…”�”}”(hjm­h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj™­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm­ubhŒ) with relaxed ordering.”…”�”}”(hjm­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŠhj¾¬ubjM)�”}”(hŒ;Safe to use in noinstr code; prefer atomic_and() elsewhere.”h]”hŒ;Safe to use in noinstr code; prefer atomic_and() elsewhere.”…”�”}”(hj²­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒhj¾¬ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjíh]”hŒReturn”…”�”}”(hjÅ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÁ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŽhj¾¬ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjÙ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hj¾¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!raw_atomic_fetch_and (C function)”Œc.raw_atomic_fetch_and”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-int raw_atomic_fetch_and (int i, atomic_t *v)”h]”hù)�”}”(hŒ,int raw_atomic_fetch_and(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj®h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M˜ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj®h²hh³j®h´M˜ubhÿ)�”}”(hŒraw_atomic_fetch_and”h]”j)�”}”(hŒraw_atomic_fetch_and”h]”hŒraw_atomic_fetch_and”…”�”}”(hj)®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%®ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj®h²hh³j®h´M˜ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjE®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjA®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjA®ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hja®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjA®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj=®ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj|®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjy®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j~®Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj+®sbŒc.raw_atomic_fetch_and”†”asbuh1hhju®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhju®ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjª®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hju®ubj)�”}”(hjph]”hŒv”…”�”}”(hj·®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhju®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj=®ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj®h²hh³j®h´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj®h²hh³j®h´M˜ubah}”(h]”jû­ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j®h´M˜hjý­h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic bitwise AND with full ordering”h]”hŒ%atomic bitwise AND with full ordering”…”�”}”(hjà®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M˜hjÝ®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjý­h²hh³j®h´M˜ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjø®jHjø®jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **i**) with full ordering. Safe to use in noinstr code; prefer atomic_fetch_and() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mœhjü®ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj!¯h]”hŒint i”…”�”}”(hj#¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M™hj¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj:¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6¯h´M™hj7¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6¯h´M™hj¯ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjZ¯h]”hŒ atomic_t *v”…”�”}”(hj\¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjX¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MšhjT¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjs¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jo¯h´Mšhjp¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjT¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jo¯h´Mšhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjü®ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mœhjü®ubjM)�”}”(hŒ?Atomically updates **v** to (**v** & **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj«¯h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj³¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«¯ubhŒ to (”…”�”}”(hj«¯h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjůh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«¯ubhŒ & ”…”�”}”(hj«¯h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjׯh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«¯ubhŒ) with full ordering.”…”�”}”(hj«¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M›hjü®ubjM)�”}”(hŒASafe to use in noinstr code; prefer atomic_fetch_and() elsewhere.”h]”hŒASafe to use in noinstr code; prefer atomic_fetch_and() elsewhere.”…”�”}”(hjð¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hjü®ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj°h]”hŒReturn”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŸhjü®ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj°h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°ubhŒ.”…”�”}”(hj°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjü®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_and_acquire (C function)”Œc.raw_atomic_fetch_and_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_and_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_and_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjX°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjT°h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjT°h²hh³jf°h´M³ubhÿ)�”}”(hŒraw_atomic_fetch_and_acquire”h]”j)�”}”(hŒraw_atomic_fetch_and_acquire”h]”hŒraw_atomic_fetch_and_acquire”…”�”}”(hjy°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhju°ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjT°h²hh³jf°h´M³ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj•°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‘°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‘°ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj±°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�°ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj̰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjɰubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jΰŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj{°sbŒc.raw_atomic_fetch_and_acquire”†”asbuh1hhjŰubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŰubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjú°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŰubj)�”}”(hjph]”hŒv”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŰubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�°ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjT°h²hh³jf°h´M³ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjP°h²hh³jf°h´M³ubah}”(h]”jK°ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jf°h´M³hjM°h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with acquire ordering”h]”hŒ(atomic bitwise AND with acquire ordering”…”�”}”(hj0±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M³hj-±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjM°h²hh³jf°h´M³ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjH±jHjH±jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_fetch_and_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M·hjL±ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjq±h]”hŒint i”…”�”}”(hjs±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjo±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M´hjk±ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjбh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j†±h´M´hj‡±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjk±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j†±h´M´hjh±ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjª±h]”hŒ atomic_t *v”…”�”}”(hj¬±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¨±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mµhj¤±ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¿±h´MµhjÀ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¤±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¿±h´Mµhjh±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjL±ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M·hjL±ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjû±h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjû±ubhŒ to (”…”�”}”(hjû±h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjû±ubhŒ & ”…”�”}”(hjû±h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj'²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjû±ubhŒ) with acquire ordering.”…”�”}”(hjû±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¶hjL±ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_and_acquire() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_and_acquire() elsewhere.”…”�”}”(hj@²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¸hjL±ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjQ²h]”hŒReturn”…”�”}”(hjS²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjO²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MºhjL±ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjg²h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjo²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjg²ubhŒ.”…”�”}”(hjg²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M»hjL±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_and_release (C function)”Œc.raw_atomic_fetch_and_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_and_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_and_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¤²h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÎubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·²h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤²h²hh³j¶²h´MÎubhÿ)�”}”(hŒraw_atomic_fetch_and_release”h]”j)�”}”(hŒraw_atomic_fetch_and_release”h]”hŒraw_atomic_fetch_and_release”…”�”}”(hjɲh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŲubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¤²h²hh³j¶²h´MÎubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjå²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjá²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó²h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjá²ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjá²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjݲubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j³Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj˲sbŒc.raw_atomic_fetch_and_release”†”asbuh1hhj³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj³ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjJ³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj³ubj)�”}”(hjph]”hŒv”…”�”}”(hjW³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjݲubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¤²h²hh³j¶²h´MÎubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj ²h²hh³j¶²h´MÎubah}”(h]”j›²ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¶²h´MÎhj�²h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with release ordering”h]”hŒ(atomic bitwise AND with release ordering”…”�”}”(hj€³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÎhj}³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�²h²hh³j¶²h´MÎubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj˜³jHj˜³jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **i**) with release ordering. Safe to use in noinstr code; prefer atomic_fetch_and_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÒhjœ³ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjÁ³h]”hŒint i”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¿³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÏhj»³ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjÚ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjú³h]”hŒ atomic_t *v”…”�”}”(hjü³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjø³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÐhjô³ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjœ³ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj5´h]”hŒ Description”…”�”}”(hj7´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÒhjœ³ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjK´h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjS´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK´ubhŒ to (”…”�”}”(hjK´h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hje´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK´ubhŒ & ”…”�”}”(hjK´h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjw´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK´ubhŒ) with release ordering.”…”�”}”(hjK´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÑhjœ³ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_and_release() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_and_release() elsewhere.”…”�”}”(hj�´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÓhjœ³ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¡´h]”hŒReturn”…”�”}”(hj£´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŸ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÕhjœ³ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj·´h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¿´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj·´ubhŒ.”…”�”}”(hj·´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÖhjœ³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_and_relaxed (C function)”Œc.raw_atomic_fetch_and_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_and_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_and_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjø´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjô´h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MèubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjô´h²hh³jµh´Mèubhÿ)�”}”(hŒraw_atomic_fetch_and_relaxed”h]”j)�”}”(hŒraw_atomic_fetch_and_relaxed”h]”hŒraw_atomic_fetch_and_relaxed”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjô´h²hh³jµh´Mèubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj5µh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj1µubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1µubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjQµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1µubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-µubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjlµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jnµŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjµsbŒc.raw_atomic_fetch_and_relaxed”†”asbuh1hhjeµubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjeµubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjšµh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjeµubj)�”}”(hjph]”hŒv”…”�”}”(hj§µh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-µubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjô´h²hh³jµh´Mèubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjð´h²hh³jµh´Mèubah}”(h]”jë´ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jµh´Mèhjí´h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hjеh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mèhj͵h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjí´h²hh³jµh´Mèubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjèµjHjèµjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_fetch_and_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mìhjìµubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj¶h]”hŒint i”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Méhj ¶ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj*¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjJ¶h]”hŒ atomic_t *v”…”�”}”(hjL¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjH¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MêhjD¶ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjc¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j_¶h´Mêhj`¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjD¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j_¶h´Mêhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjìµubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MìhjìµubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj›¶h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj£¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›¶ubhŒ to (”…”�”}”(hj›¶h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjµ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›¶ubhŒ & ”…”�”}”(hj›¶h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjǶh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›¶ubhŒ) with relaxed ordering.”…”�”}”(hj›¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MëhjìµubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_and_relaxed() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_and_relaxed() elsewhere.”…”�”}”(hjà¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MíhjìµubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjñ¶h]”hŒReturn”…”�”}”(hjó¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjï¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MïhjìµubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj·h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj·ubhŒ.”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mðhjìµubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_andnot (C function)”Œc.raw_atomic_andnot”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void raw_atomic_andnot (int i, atomic_t *v)”h]”hù)�”}”(hŒ*void raw_atomic_andnot(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjH·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjD·h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjD·h²hh³jV·h´Mÿubhÿ)�”}”(hŒraw_atomic_andnot”h]”j)�”}”(hŒraw_atomic_andnot”h]”hŒraw_atomic_andnot”…”�”}”(hji·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje·ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjD·h²hh³jV·h´Mÿubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj…·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�·ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�·ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¡·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj}·ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj¼·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¾·Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjk·sbŒc.raw_atomic_andnot”†”asbuh1hhjµ·ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµ·ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjê·h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjµ·ubj)�”}”(hjph]”hŒv”…”�”}”(hj÷·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµ·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj}·ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjD·h²hh³jV·h´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj@·h²hh³jV·h´Mÿubah}”(h]”j;·ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jV·h´Mÿhj=·h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed ordering”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mÿhj¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj=·h²hh³jV·h´Mÿubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj8¸jHj8¸jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒø**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **~i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_andnot() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjB¸h]”hŒ Parameters”…”�”}”(hjD¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj<¸ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hja¸h]”hŒint i”…”�”}”(hjc¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj_¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj[¸ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjz¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jv¸h´Mhjw¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj[¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jv¸h´MhjX¸ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjš¸h]”hŒ atomic_t *v”…”�”}”(hjœ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj˜¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj”¸ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj³¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¯¸h´Mhj°¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj”¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¯¸h´MhjX¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj<¸ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj<¸ubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjë¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjó¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjë¸ubhŒ to (”…”�”}”(hjë¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjë¸ubhŒ & ”…”�”}”(hjë¸h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjë¸ubhŒ) with relaxed ordering.”…”�”}”(hjë¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj<¸ubjM)�”}”(hŒ>Safe to use in noinstr code; prefer atomic_andnot() elsewhere.”h]”hŒ>Safe to use in noinstr code; prefer atomic_andnot() elsewhere.”…”�”}”(hj0¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj<¸ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjA¹h]”hŒReturn”…”�”}”(hjC¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj<¸ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjW¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj<¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic_fetch_andnot (C function)”Œc.raw_atomic_fetch_andnot”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0int raw_atomic_fetch_andnot (int i, atomic_t *v)”h]”hù)�”}”(hŒ/int raw_atomic_fetch_andnot(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj†¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‚¹h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚¹h²hh³j”¹h´Mubhÿ)�”}”(hŒraw_atomic_fetch_andnot”h]”j)�”}”(hŒraw_atomic_fetch_andnot”h]”hŒraw_atomic_fetch_andnot”…”�”}”(hj§¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£¹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‚¹h²hh³j”¹h´Mubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¿¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjѹh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿¹ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjß¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj»¹ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjú¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jü¹Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj©¹sbŒc.raw_atomic_fetch_andnot”†”asbuh1hhjó¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjó¹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj(ºh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjó¹ubj)�”}”(hjph]”hŒv”…”�”}”(hj5ºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj»¹ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‚¹h²hh³j”¹h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj~¹h²hh³j”¹h´Mubah}”(h]”jy¹ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j”¹h´Mhj{¹h²hubj4)�”}”(hhh]”jM)�”}”(hŒ)atomic bitwise AND NOT with full ordering”h]”hŒ)atomic bitwise AND NOT with full ordering”…”�”}”(hj^ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj[ºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj{¹h²hh³j”¹h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjvºjHjvºjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **~i**) with full ordering. Safe to use in noinstr code; prefer atomic_fetch_andnot() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjzºubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjŸºh]”hŒint i”…”�”}”(hj¡ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj™ºubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj¸ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j´ºh´Mhjµºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj™ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j´ºh´Mhj–ºubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjغh]”hŒ atomic_t *v”…”�”}”(hjÚºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÖºubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÒºubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjñºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jíºh´Mhjîºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÒºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jíºh´Mhj–ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjzºubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjzºubjM)�”}”(hŒ@Atomically updates **v** to (**v** & **~i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj)»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj1»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)»ubhŒ to (”…”�”}”(hj)»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjC»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)»ubhŒ & ”…”�”}”(hj)»h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjU»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)»ubhŒ) with full ordering.”…”�”}”(hj)»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjzºubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_fetch_andnot() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_fetch_andnot() elsewhere.”…”�”}”(hjn»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjzºubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj»h]”hŒReturn”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjzºubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj•»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•»ubhŒ.”…”�”}”(hj•»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjzºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic_fetch_andnot_acquire (C function)”Œ!c.raw_atomic_fetch_andnot_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8int raw_atomic_fetch_andnot_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ7int raw_atomic_fetch_andnot_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÖ»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÒ»h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÒ»h²hh³jä»h´M/ubhÿ)�”}”(hŒraw_atomic_fetch_andnot_acquire”h]”j)�”}”(hŒraw_atomic_fetch_andnot_acquire”h]”hŒraw_atomic_fetch_andnot_acquire”…”�”}”(hj÷»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó»ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÒ»h²hh³jä»h´M/ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!¼h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¼ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj/¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ¼ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”•Q}”(hjJ¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjG¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jL¼Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjù»sbŒ!c.raw_atomic_fetch_andnot_acquire”†”asbuh1hhjC¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj¼h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjC¼ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjx¼h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjC¼ubj)�”}”(hjph]”hŒv”…”�”}”(hj…¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjC¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ¼ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÒ»h²hh³jä»h´M/ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjλh²hh³jä»h´M/ubah}”(h]”jÉ»ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jä»h´M/hjË»h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with acquire ordering”h]”hŒ,atomic bitwise AND NOT with acquire ordering”…”�”}”(hj®¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M/hj«¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjË»h²hh³jä»h´M/ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjƼjHjƼjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **~i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_fetch_andnot_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M3hjʼubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjï¼h]”hŒint i”…”�”}”(hjñ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjí¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M0hjé¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j½h´M0hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjé¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j½h´M0hjæ¼ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj(½h]”hŒ atomic_t *v”…”�”}”(hj*½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj&½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M1hj"½ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjA½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j=½h´M1hj>½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj"½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j=½h´M1hjæ¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjʼubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjc½h]”hŒ Description”…”�”}”(hje½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M3hjʼubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjy½h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy½ubhŒ to (”…”�”}”(hjy½h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj“½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy½ubhŒ & ”…”�”}”(hjy½h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hj¥½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy½ubhŒ) with acquire ordering.”…”�”}”(hjy½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M2hjʼubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic_fetch_andnot_acquire() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic_fetch_andnot_acquire() elsewhere.”…”�”}”(hj¾½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M4hjʼubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjϽh]”hŒReturn”…”�”}”(hjѽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjͽubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M6hjʼubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjå½h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjí½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjå½ubhŒ.”…”�”}”(hjå½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M7hjʼubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic_fetch_andnot_release (C function)”Œ!c.raw_atomic_fetch_andnot_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8int raw_atomic_fetch_andnot_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ7int raw_atomic_fetch_andnot_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj&¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj"¾h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MJubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"¾h²hh³j4¾h´MJubhÿ)�”}”(hŒraw_atomic_fetch_andnot_release”h]”j)�”}”(hŒraw_atomic_fetch_andnot_release”h]”hŒraw_atomic_fetch_andnot_release”…”�”}”(hjG¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjC¾ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj"¾h²hh³j4¾h´MJubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjc¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj_¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj_¾ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj[¾ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjš¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jœ¾Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjI¾sbŒ!c.raw_atomic_fetch_andnot_release”†”asbuh1hhj“¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“¾ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjȾh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj“¾ubj)�”}”(hjph]”hŒv”…”�”}”(hjÕ¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj[¾ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj"¾h²hh³j4¾h´MJubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¾h²hh³j4¾h´MJubah}”(h]”j¾ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j4¾h´MJhj¾h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with release ordering”h]”hŒ,atomic bitwise AND NOT with release ordering”…”�”}”(hjþ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MJhjû¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¾h²hh³j4¾h´MJubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¿jHj¿jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **~i**) with release ordering. Safe to use in noinstr code; prefer atomic_fetch_andnot_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MNhj¿ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj?¿h]”hŒint i”…”�”}”(hjA¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MKhj9¿ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjX¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jT¿h´MKhjU¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jT¿h´MKhj6¿ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjx¿h]”hŒ atomic_t *v”…”�”}”(hjz¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjv¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MLhjr¿ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj‘¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�¿h´MLhjŽ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjr¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�¿h´MLhj6¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¿ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MNhj¿ubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÉ¿h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÑ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉ¿ubhŒ to (”…”�”}”(hjÉ¿h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjã¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉ¿ubhŒ & ”…”�”}”(hjÉ¿h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjõ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉ¿ubhŒ) with release ordering.”…”�”}”(hjÉ¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MMhj¿ubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic_fetch_andnot_release() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic_fetch_andnot_release() elsewhere.”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MOhj¿ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÀh]”hŒReturn”…”�”}”(hj!Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MQhj¿ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj5Àh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj=Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5ÀubhŒ.”…”�”}”(hj5Àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MRhj¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic_fetch_andnot_relaxed (C function)”Œ!c.raw_atomic_fetch_andnot_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8int raw_atomic_fetch_andnot_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ7int raw_atomic_fetch_andnot_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjvÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjrÀh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Àh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjrÀh²hh³j„Àh´Mdubhÿ)�”}”(hŒraw_atomic_fetch_andnot_relaxed”h]”j)�”}”(hŒraw_atomic_fetch_andnot_relaxed”h]”hŒraw_atomic_fetch_andnot_relaxed”…”�”}”(hj—Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“Àubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjrÀh²hh³j„Àh´Mdubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj³Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¯ÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯Àubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÏÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj«Àubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjêÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jìÀŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj™ÀsbŒ!c.raw_atomic_fetch_andnot_relaxed”†”asbuh1hhjãÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjãÀubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjãÀubj)�”}”(hjph]”hŒv”…”�”}”(hj%Áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjãÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj«Àubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjrÀh²hh³j„Àh´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjnÀh²hh³j„Àh´Mdubah}”(h]”jiÀah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j„Àh´MdhjkÀh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed ordering”…”�”}”(hjNÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MdhjKÁh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjkÀh²hh³j„Àh´Mdubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjfÁjHjfÁjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** & **~i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_fetch_andnot_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjpÁh]”hŒ Parameters”…”�”}”(hjrÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhhjjÁubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj�Áh]”hŒint i”…”�”}”(hj‘Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mehj‰ÁubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj¨Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¤Áh´Mehj¥Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‰Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¤Áh´Mehj†Áubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÈÁh]”hŒ atomic_t *v”…”�”}”(hjÊÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MfhjÂÁubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjáÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÝÁh´MfhjÞÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÂÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÝÁh´Mfhj†Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjjÁubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhhjjÁubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÂh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj!Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂubhŒ to (”…”�”}”(hjÂh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj3Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂubhŒ & ”…”�”}”(hjÂh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjEÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂubhŒ) with relaxed ordering.”…”�”}”(hjÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MghjjÁubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic_fetch_andnot_relaxed() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic_fetch_andnot_relaxed() elsewhere.”…”�”}”(hj^Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MihjjÁubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjoÂh]”hŒReturn”…”�”}”(hjqÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MkhjjÁubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj…Âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj…ÂubhŒ.”…”�”}”(hj…Âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MlhjjÁubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_or (C function)”Œc.raw_atomic_or”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'void raw_atomic_or (int i, atomic_t *v)”h]”hù)�”}”(hŒ&void raw_atomic_or(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÆÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÂÂh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕÂh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÂÂh²hh³jÔÂh´M{ubhÿ)�”}”(hŒ raw_atomic_or”h]”j)�”}”(hŒ raw_atomic_or”h]”hŒ raw_atomic_or”…”�”}”(hjçÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjãÂubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÂÂh²hh³jÔÂh´M{ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÿÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿÂubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjûÂubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj:Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7Ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j<ÃŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjéÂsbŒc.raw_atomic_or”†”asbuh1hhj3ÃubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZÃh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3Ãubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjhÃh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj3Ãubj)�”}”(hjph]”hŒv”…”�”}”(hjuÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjûÂubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÂÂh²hh³jÔÂh´M{ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¾Âh²hh³jÔÂh´M{ubah}”(h]”j¹Âah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÔÂh´M{hj»Âh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with relaxed ordering”h]”hŒ'atomic bitwise OR with relaxed ordering”…”�”}”(hjžÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M{hj›Ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj»Âh²hh³jÔÂh´M{ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¶ÃjHj¶ÃjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒó**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** | **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_or() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjºÃubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjßÃh]”hŒint i”…”�”}”(hjáÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÝÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M|hjÙÃubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjøÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÄh]”hŒ atomic_t *v”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M}hjÄubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj1Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjºÃubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjSÄh]”hŒ Description”…”�”}”(hjUÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjºÃubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjiÄh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjqÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjiÄubhŒ to (”…”�”}”(hjiÄh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjƒÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjiÄubhŒ | ”…”�”}”(hjiÄh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj•Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjiÄubhŒ) with relaxed ordering.”…”�”}”(hjiÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M~hjºÃubjM)�”}”(hŒ:Safe to use in noinstr code; prefer atomic_or() elsewhere.”h]”hŒ:Safe to use in noinstr code; prefer atomic_or() elsewhere.”…”�”}”(hj®Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M€hjºÃubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¿Äh]”hŒReturn”…”�”}”(hjÁÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj½Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‚hjºÃubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjÕÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MƒhjºÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ raw_atomic_fetch_or (C function)”Œc.raw_atomic_fetch_or”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,int raw_atomic_fetch_or (int i, atomic_t *v)”h]”hù)�”}”(hŒ+int raw_atomic_fetch_or(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÅh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅh²hh³jÅh´MŒubhÿ)�”}”(hŒraw_atomic_fetch_or”h]”j)�”}”(hŒraw_atomic_fetch_or”h]”hŒraw_atomic_fetch_or”…”�”}”(hj%Åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!Åubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÅh²hh³jÅh´MŒubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjAÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj=ÅubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOÅh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj=Åubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj]Åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj9Åubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjxÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jzÅŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj'ÅsbŒc.raw_atomic_fetch_or”†”asbuh1hhjqÅubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Åh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjqÅubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¦Åh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjqÅubj)�”}”(hjph]”hŒv”…”�”}”(hj³Åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj9Åubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÅh²hh³jÅh´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjüÄh²hh³jÅh´MŒubah}”(h]”j÷Äah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÅh´MŒhjùÄh²hubj4)�”}”(hhh]”jM)�”}”(hŒ$atomic bitwise OR with full ordering”h]”hŒ$atomic bitwise OR with full ordering”…”�”}”(hjÜÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒhjÙÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjùÄh²hh³jÅh´MŒubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjôÅjHjôÅjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** | **i**) with full ordering. Safe to use in noinstr code; prefer atomic_fetch_or() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hjøÅubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjÆh]”hŒint i”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hjÆubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj6Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j2Æh´M�hj3Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j2Æh´M�hjÆubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjVÆh]”hŒ atomic_t *v”…”�”}”(hjXÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjTÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŽhjPÆubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjoÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jkÆh´MŽhjlÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjPÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jkÆh´MŽhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjøÅubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hjøÅubjM)�”}”(hŒ?Atomically updates **v** to (**v** | **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj§Æh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¯Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§ÆubhŒ to (”…”�”}”(hj§Æh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÁÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§ÆubhŒ | ”…”�”}”(hj§Æh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÓÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§ÆubhŒ) with full ordering.”…”�”}”(hj§Æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hjøÅubjM)�”}”(hŒ@Safe to use in noinstr code; prefer atomic_fetch_or() elsewhere.”h]”hŒ@Safe to use in noinstr code; prefer atomic_fetch_or() elsewhere.”…”�”}”(hjìÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‘hjøÅubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjýÆh]”hŒReturn”…”�”}”(hjÿÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M“hjøÅubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÇh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÇubhŒ.”…”�”}”(hjÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M”hjøÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(raw_atomic_fetch_or_acquire (C function)”Œc.raw_atomic_fetch_or_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4int raw_atomic_fetch_or_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ3int raw_atomic_fetch_or_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjTÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjPÇh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M§ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPÇh²hh³jbÇh´M§ubhÿ)�”}”(hŒraw_atomic_fetch_or_acquire”h]”j)�”}”(hŒraw_atomic_fetch_or_acquire”h]”hŒraw_atomic_fetch_or_acquire”…”�”}”(hjuÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqÇubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjPÇh²hh³jbÇh´M§ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj‘Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�ÇubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Çubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj­Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‰Çubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÈÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÊÇŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjwÇsbŒc.raw_atomic_fetch_or_acquire”†”asbuh1hhjÁÇubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁÇubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjöÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÁÇubj)�”}”(hjph]”hŒv”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‰Çubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjPÇh²hh³jbÇh´M§ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjLÇh²hh³jbÇh´M§ubah}”(h]”jGÇah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jbÇh´M§hjIÇh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with acquire ordering”h]”hŒ'atomic bitwise OR with acquire ordering”…”�”}”(hj,Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M§hj)Èh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjIÇh²hh³jbÇh´M§ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjDÈjHjDÈjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** | **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_fetch_or_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjNÈh]”hŒ Parameters”…”�”}”(hjPÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M«hjHÈubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjmÈh]”hŒint i”…”�”}”(hjoÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjkÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¨hjgÈubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj†Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‚Èh´M¨hjƒÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjgÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‚Èh´M¨hjdÈubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj¦Èh]”hŒ atomic_t *v”…”�”}”(hj¨Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¤Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M©hj ÈubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj¿Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j»Èh´M©hj¼Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j»Èh´M©hjdÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjHÈubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M«hjHÈubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj÷Èh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÿÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj÷ÈubhŒ to (”…”�”}”(hj÷Èh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj÷ÈubhŒ | ”…”�”}”(hj÷Èh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj#Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj÷ÈubhŒ) with acquire ordering.”…”�”}”(hj÷Èh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MªhjHÈubjM)�”}”(hŒHSafe to use in noinstr code; prefer atomic_fetch_or_acquire() elsewhere.”h]”hŒHSafe to use in noinstr code; prefer atomic_fetch_or_acquire() elsewhere.”…”�”}”(hj<Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¬hjHÈubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjMÉh]”hŒReturn”…”�”}”(hjOÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M®hjHÈubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjcÉh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjkÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjcÉubhŒ.”…”�”}”(hjcÉh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¯hjHÈubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(raw_atomic_fetch_or_release (C function)”Œc.raw_atomic_fetch_or_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4int raw_atomic_fetch_or_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ3int raw_atomic_fetch_or_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¤Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj Éh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Éh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Éh²hh³j²Éh´MÂubhÿ)�”}”(hŒraw_atomic_fetch_or_release”h]”j)�”}”(hŒraw_atomic_fetch_or_release”h]”hŒraw_atomic_fetch_or_release”…”�”}”(hjÅÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁÉubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj Éh²hh³j²Éh´MÂubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjáÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÝÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïÉh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝÉubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjýÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙÉubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÊŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÇÉsbŒc.raw_atomic_fetch_or_release”†”asbuh1hhjÊubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Êh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÊubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjFÊh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÊubj)�”}”(hjph]”hŒv”…”�”}”(hjSÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙÉubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj Éh²hh³j²Éh´MÂubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjœÉh²hh³j²Éh´MÂubah}”(h]”j—Éah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j²Éh´MÂhj™Éh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with release ordering”h]”hŒ'atomic bitwise OR with release ordering”…”�”}”(hj|Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÂhjyÊh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj™Éh²hh³j²Éh´MÂubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj”ÊjHj”ÊjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** | **i**) with release ordering. Safe to use in noinstr code; prefer atomic_fetch_or_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÆhj˜Êubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj½Êh]”hŒint i”…”�”}”(hj¿Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj»Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÃhj·ÊubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjÖÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjöÊh]”hŒ atomic_t *v”…”�”}”(hjøÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjôÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÄhjðÊubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj˜ÊubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj1Ëh]”hŒ Description”…”�”}”(hj3Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÆhj˜ÊubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjGËh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjOËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGËubhŒ to (”…”�”}”(hjGËh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjaËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGËubhŒ | ”…”�”}”(hjGËh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjsËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGËubhŒ) with release ordering.”…”�”}”(hjGËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÅhj˜ÊubjM)�”}”(hŒHSafe to use in noinstr code; prefer atomic_fetch_or_release() elsewhere.”h]”hŒHSafe to use in noinstr code; prefer atomic_fetch_or_release() elsewhere.”…”�”}”(hjŒËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÇhj˜ÊubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�Ëh]”hŒReturn”…”�”}”(hjŸËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÉhj˜ÊubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj³Ëh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj»Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³ËubhŒ.”…”�”}”(hj³Ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÊhj˜Êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(raw_atomic_fetch_or_relaxed (C function)”Œc.raw_atomic_fetch_or_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4int raw_atomic_fetch_or_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ3int raw_atomic_fetch_or_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjôËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjðËh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjðËh²hh³jÌh´MÜubhÿ)�”}”(hŒraw_atomic_fetch_or_relaxed”h]”j)�”}”(hŒraw_atomic_fetch_or_relaxed”h]”hŒraw_atomic_fetch_or_relaxed”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjðËh²hh³jÌh´MÜubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj1Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj-ÌubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?Ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj-Ìubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjMÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj)Ìubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjhÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jjÌŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÌsbŒc.raw_atomic_fetch_or_relaxed”†”asbuh1hhjaÌubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆÌh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaÌubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj–Ìh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjaÌubj)�”}”(hjph]”hŒv”…”�”}”(hj£Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj)Ìubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjðËh²hh³jÌh´MÜubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjìËh²hh³jÌh´MÜubah}”(h]”jçËah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÌh´MÜhjéËh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with relaxed ordering”h]”hŒ'atomic bitwise OR with relaxed ordering”…”�”}”(hjÌÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÜhjÉÌh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjéËh²hh³jÌh´MÜubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjäÌjHjäÌjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** | **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_fetch_or_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MàhjèÌubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj Íh]”hŒint i”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝhjÍubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj&Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjFÍh]”hŒ atomic_t *v”…”�”}”(hjHÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjDÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÞhj@ÍubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj_Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjèÌubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MàhjèÌubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj—Íh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŸÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—ÍubhŒ to (”…”�”}”(hj—Íh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj±Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—ÍubhŒ | ”…”�”}”(hj—Íh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÃÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—ÍubhŒ) with relaxed ordering.”…”�”}”(hj—Íh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MßhjèÌubjM)�”}”(hŒHSafe to use in noinstr code; prefer atomic_fetch_or_relaxed() elsewhere.”h]”hŒHSafe to use in noinstr code; prefer atomic_fetch_or_relaxed() elsewhere.”…”�”}”(hjÜÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MáhjèÌubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjíÍh]”hŒReturn”…”�”}”(hjïÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjëÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MãhjèÌubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÎh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎubhŒ.”…”�”}”(hjÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MähjèÌubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_xor (C function)”Œc.raw_atomic_xor”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void raw_atomic_xor (int i, atomic_t *v)”h]”hù)�”}”(hŒ'void raw_atomic_xor(int i, atomic_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjDÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj@Îh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MóubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSÎh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj@Îh²hh³jRÎh´Móubhÿ)�”}”(hŒraw_atomic_xor”h]”j)�”}”(hŒraw_atomic_xor”h]”hŒraw_atomic_xor”…”�”}”(hjeÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaÎubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj@Îh²hh³jRÎh´Móubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj}ÎubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}Îubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjyÎubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj¸Îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jºÎŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjgÎsbŒc.raw_atomic_xor”†”asbuh1hhj±ÎubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØÎh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±Îubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjæÎh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj±Îubj)�”}”(hjph]”hŒv”…”�”}”(hjóÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±Îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjyÎubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj@Îh²hh³jRÎh´Móubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj<Îh²hh³jRÎh´Móubah}”(h]”j7Îah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jRÎh´Móhj9Îh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MóhjÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj9Îh²hh³jRÎh´Móubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj4ÏjHj4ÏjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒô**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** ^ **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_xor() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M÷hj8Ïubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj]Ïh]”hŒint i”…”�”}”(hj_Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj[Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MôhjWÏubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjvÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jrÏh´MôhjsÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjWÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jrÏh´MôhjTÏubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj–Ïh]”hŒ atomic_t *v”…”�”}”(hj˜Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj”Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mõhj�ÏubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj¯Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j«Ïh´Mõhj¬Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j«Ïh´MõhjTÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj8ÏubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M÷hj8ÏubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjçÏh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjïÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjçÏubhŒ to (”…”�”}”(hjçÏh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjçÏubhŒ ^ ”…”�”}”(hjçÏh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjçÏubhŒ) with relaxed ordering.”…”�”}”(hjçÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Möhj8ÏubjM)�”}”(hŒ;Safe to use in noinstr code; prefer atomic_xor() elsewhere.”h]”hŒ;Safe to use in noinstr code; prefer atomic_xor() elsewhere.”…”�”}”(hj,Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Møhj8ÏubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj=Ðh]”hŒReturn”…”�”}”(hj?Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Múhj8ÏubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjSÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mûhj8Ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!raw_atomic_fetch_xor (C function)”Œc.raw_atomic_fetch_xor”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ-int raw_atomic_fetch_xor (int i, atomic_t *v)”h]”hù)�”}”(hŒ,int raw_atomic_fetch_xor(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj‚Ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj~Ðh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Ðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~Ðh²hh³j�Ðh´Mubhÿ)�”}”(hŒraw_atomic_fetch_xor”h]”j)�”}”(hŒraw_atomic_fetch_xor”h]”hŒraw_atomic_fetch_xor”…”�”}”(hj£Ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸÐubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj~Ðh²hh³j�Ðh´Mubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¿Ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj»ÐubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍÐh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj»Ðubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÛÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»Ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj·Ðubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjöÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjóÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jøÐŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¥ÐsbŒc.raw_atomic_fetch_xor”†”asbuh1hhjïÐubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjïÐubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj$Ñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjïÐubj)�”}”(hjph]”hŒv”…”�”}”(hj1Ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj·Ðubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj~Ðh²hh³j�Ðh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjzÐh²hh³j�Ðh´Mubah}”(h]”juÐah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�Ðh´MhjwÐh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic bitwise XOR with full ordering”h]”hŒ%atomic bitwise XOR with full ordering”…”�”}”(hjZÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjWÑh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjwÐh²hh³j�Ðh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjrÑjHjrÑjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** ^ **i**) with full ordering. Safe to use in noinstr code; prefer atomic_fetch_xor() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj|Ñh]”hŒ Parameters”…”�”}”(hj~Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjvÑubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj›Ñh]”hŒint i”…”�”}”(hj�Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj™Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj•ÑubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj´Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j°Ñh´Mhj±Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj•Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j°Ñh´Mhj’Ñubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÔÑh]”hŒ atomic_t *v”…”�”}”(hjÖÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÒÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÎÑubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjíÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jéÑh´MhjêÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÎÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jéÑh´Mhj’Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjvÑubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjvÑubjM)�”}”(hŒ?Atomically updates **v** to (**v** ^ **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj%Òh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj-Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ÒubhŒ to (”…”�”}”(hj%Òh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj?Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ÒubhŒ ^ ”…”�”}”(hj%Òh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjQÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ÒubhŒ) with full ordering.”…”�”}”(hj%Òh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjvÑubjM)�”}”(hŒASafe to use in noinstr code; prefer atomic_fetch_xor() elsewhere.”h]”hŒASafe to use in noinstr code; prefer atomic_fetch_xor() elsewhere.”…”�”}”(hjjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”•h´M hjvÑubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj{Òh]”hŒReturn”…”�”}”(hj}Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjvÑubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj‘Òh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘ÒubhŒ.”…”�”}”(hj‘Òh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjvÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_xor_acquire (C function)”Œc.raw_atomic_fetch_xor_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_xor_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_xor_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÒÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÎÒh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáÒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÎÒh²hh³jàÒh´Mubhÿ)�”}”(hŒraw_atomic_fetch_xor_acquire”h]”j)�”}”(hŒraw_atomic_fetch_xor_acquire”h]”hŒraw_atomic_fetch_xor_acquire”…”�”}”(hjóÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïÒubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÎÒh²hh³jàÒh´Mubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj ÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Óubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj+Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÓubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjFÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCÓubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jHÓŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjõÒsbŒc.raw_atomic_fetch_xor_acquire”†”asbuh1hhj?ÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?Óubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjtÓh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj?Óubj)�”}”(hjph]”hŒv”…”�”}”(hj�Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?Óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÓubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÎÒh²hh³jàÒh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÊÒh²hh³jàÒh´Mubah}”(h]”jÅÒah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jàÒh´MhjÇÒh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with acquire ordering”h]”hŒ(atomic bitwise XOR with acquire ordering”…”�”}”(hjªÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj§Óh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÇÒh²hh³jàÒh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÂÓjHjÂÓjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** ^ **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_fetch_xor_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M#hjÆÓubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjëÓh]”hŒint i”…”�”}”(hjíÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjéÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjåÓubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj$Ôh]”hŒ atomic_t *v”…”�”}”(hj&Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj"Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M!hjÔubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj=Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j9Ôh´M!hj:Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j9Ôh´M!hjâÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÆÓubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj_Ôh]”hŒ Description”…”�”}”(hjaÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj]Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M#hjÆÓubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjuÔh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj}Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuÔubhŒ to (”…”�”}”(hjuÔh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuÔubhŒ ^ ”…”�”}”(hjuÔh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¡Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuÔubhŒ) with acquire ordering.”…”�”}”(hjuÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M"hjÆÓubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_xor_acquire() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_xor_acquire() elsewhere.”…”�”}”(hjºÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$hjÆÓubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjËÔh]”hŒReturn”…”�”}”(hjÍÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M&hjÆÓubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjáÔh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjéÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjáÔubhŒ.”…”�”}”(hjáÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M'hjÆÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_xor_release (C function)”Œc.raw_atomic_fetch_xor_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_xor_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_xor_release(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj"Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÕh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÕh²hh³j0Õh´M:ubhÿ)�”}”(hŒraw_atomic_fetch_xor_release”h]”j)�”}”(hŒraw_atomic_fetch_xor_release”h]”hŒraw_atomic_fetch_xor_release”…”�”}”(hjCÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?Õubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÕh²hh³j0Õh´M:ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj_Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj[ÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmÕh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[Õubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj{Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjWÕubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj–Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“Õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j˜ÕŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjEÕsbŒc.raw_atomic_fetch_xor_release”†”asbuh1hhj�ÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Õubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÄÕh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�Õubj)�”}”(hjph]”hŒv”…”�”}”(hjÑÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjWÕubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÕh²hh³j0Õh´M:ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÕh²hh³j0Õh´M:ubah}”(h]”jÕah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j0Õh´M:hjÕh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with release ordering”h]”hŒ(atomic bitwise XOR with release ordering”…”�”}”(hjúÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M:hj÷Õh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÕh²hh³j0Õh´M:ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÖjHjÖjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** ^ **i**) with release ordering. Safe to use in noinstr code; prefer atomic_fetch_xor_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M>hjÖubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj;Öh]”hŒint i”…”�”}”(hj=Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj9Öubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M;hj5ÖubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjTÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jPÖh´M;hjQÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj5Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jPÖh´M;hj2Öubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjtÖh]”hŒ atomic_t *v”…”�”}”(hjvÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjrÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M<hjnÖubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj�Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‰Öh´M<hjŠÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjnÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‰Öh´M<hj2Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÖubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M>hjÖubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÅÖh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÍÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅÖubhŒ to (”…”�”}”(hjÅÖh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjßÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅÖubhŒ ^ ”…”�”}”(hjÅÖh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjñÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅÖubhŒ) with release ordering.”…”�”}”(hjÅÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M=hjÖubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_xor_release() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_xor_release() elsewhere.”…”�”}”(hj ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M?hjÖubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj×h]”hŒReturn”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MAhjÖubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj1×h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj9×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1×ubhŒ.”…”�”}”(hj1×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MBhjÖubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_fetch_xor_relaxed (C function)”Œc.raw_atomic_fetch_xor_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int raw_atomic_fetch_xor_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ4int raw_atomic_fetch_xor_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjr×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjn×h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�×h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjn×h²hh³j€×h´MTubhÿ)�”}”(hŒraw_atomic_fetch_xor_relaxed”h]”j)�”}”(hŒraw_atomic_fetch_xor_relaxed”h]”hŒraw_atomic_fetch_xor_relaxed”…”�”}”(hj“×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�×ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjn×h²hh³j€×h´MTubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¯×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj«×ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½×h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj«×ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjË×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj§×ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjæ×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjã×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jè׌modname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj•×sbŒc.raw_atomic_fetch_xor_relaxed”†”asbuh1hhjß×ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjß×ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjß×ubj)�”}”(hjph]”hŒv”…”�”}”(hj!Øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjß×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj§×ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjn×h²hh³j€×h´MTubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjj×h²hh³j€×h´MTubah}”(h]”je×ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j€×h´MThjg×h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(hjJØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MThjGØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjg×h²hh³j€×h´MTubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjbØjHjbØjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``int i`` int value ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** ^ **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_fetch_xor_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjlØh]”hŒ Parameters”…”�”}”(hjnØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MXhjfØubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj‹Øh]”hŒint i”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‰Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MUhj…ØubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj¤Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j Øh´MUhj¡Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj…Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j Øh´MUhj‚Øubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÄØh]”hŒ atomic_t *v”…”�”}”(hjÆØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÂØubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MVhj¾ØubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÝØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÙØh´MVhjÚØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¾Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÙØh´MVhj‚Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjfØubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MXhjfØubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÙh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙubhŒ to (”…”�”}”(hjÙh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj/Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙubhŒ ^ ”…”�”}”(hjÙh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjAÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙubhŒ) with relaxed ordering.”…”�”}”(hjÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MWhjfØubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_fetch_xor_relaxed() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_xor_relaxed() elsewhere.”…”�”}”(hjZÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MYhjfØubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjkÙh]”hŒReturn”…”�”}”(hjmÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjiÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M[hjfØubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj�Ùh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‰Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ÙubhŒ.”…”�”}”(hj�Ùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M\hjfØubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_xchg (C function)”Œc.raw_atomic_xchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int raw_atomic_xchg (atomic_t *v, int new)”h]”hù)�”}”(hŒ)int raw_atomic_xchg(atomic_t *v, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÂÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¾Ùh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑÙh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¾Ùh²hh³jÐÙh´Mkubhÿ)�”}”(hŒraw_atomic_xchg”h]”j)�”}”(hŒraw_atomic_xchg”h]”hŒraw_atomic_xchg”…”�”}”(hjãÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjßÙubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¾Ùh²hh³jÐÙh´Mkubj4)�”}”(hŒ(atomic_t *v, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÚŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjåÙsbŒc.raw_atomic_xchg”†”asbuh1hhjûÙubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Úh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûÙubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj0Úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjûÙubj)�”}”(hjph]”hŒv”…”�”}”(hj=Úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj÷Ùubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjUÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjQÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÚh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQÚubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjqÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj÷Ùubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¾Ùh²hh³jÐÙh´Mkubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjºÙh²hh³jÐÙh´Mkubah}”(h]”jµÙah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÐÙh´Mkhj·Ùh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic exchange with full ordering”h]”hŒ"atomic exchange with full ordering”…”�”}”(hj›Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mkhj˜Úh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj·Ùh²hh³jÐÙh´Mkubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj³ÚjHj³ÚjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_t *v`` pointer to atomic_t ``int new`` int value to assign **Description** Atomically updates **v** to **new** with full ordering. Safe to use in noinstr code; prefer atomic_xchg() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mohj·Úubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÜÚh]”hŒ atomic_t *v”…”�”}”(hjÞÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÚÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MlhjÖÚubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjõÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jñÚh´MlhjòÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÖÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jñÚh´MlhjÓÚubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjÛh]”hŒint new”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MmhjÛubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj.Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j*Ûh´Mmhj+Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j*Ûh´MmhjÓÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj·ÚubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjPÛh]”hŒ Description”…”�”}”(hjRÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mohj·ÚubjM)�”}”(hŒ7Atomically updates **v** to **new** with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjfÛh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjnÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfÛubhŒ to ”…”�”}”(hjfÛh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj€Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfÛubhŒ with full ordering.”…”�”}”(hjfÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mnhj·ÚubjM)�”}”(hŒÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCÜŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj$ÜsbŒc.raw_atomic_xchg_acquire”†”asbuh1hhj:ÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÜh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:Üubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjoÜh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj:Üubj)�”}”(hjph]”hŒv”…”�”}”(hj|Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj6Üubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj”Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�ÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Üh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Üubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj°Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj6Üubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjýÛh²hh³jÜh´M†ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjùÛh²hh³jÜh´M†ubah}”(h]”jôÛah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÜh´M†hjöÛh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with acquire ordering”h]”hŒ%atomic exchange with acquire ordering”…”�”}”(hjÚÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M†hj×Üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjöÛh²hh³jÜh´M†ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjòÜjHjòÜjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_t *v`` pointer to atomic_t ``int new`` int value to assign **Description** Atomically updates **v** to **new** with acquire ordering. Safe to use in noinstr code; prefer atomic_xchg_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŠhjöÜubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÝh]”hŒ atomic_t *v”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‡hjÝubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj4Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j0Ýh´M‡hj1Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j0Ýh´M‡hjÝubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjTÝh]”hŒint new”…”�”}”(hjVÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjRÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MˆhjNÝubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjmÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jiÝh´MˆhjjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjNÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jiÝh´MˆhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjöÜubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŠhjöÜubjM)�”}”(hŒ:Atomically updates **v** to **new** with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¥Ýh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj­Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥ÝubhŒ to ”…”�”}”(hj¥Ýh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj¿Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥ÝubhŒ with acquire ordering.”…”�”}”(hj¥Ýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‰hjöÜubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_xchg_acquire() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_xchg_acquire() elsewhere.”…”�”}”(hjØÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‹hjöÜubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjéÝh]”hŒReturn”…”�”}”(hjëÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjçÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hjöÜubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÿÝh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿÝubhŒ.”…”�”}”(hjÿÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŽhjöÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic_xchg_release (C function)”Œc.raw_atomic_xchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2int raw_atomic_xchg_release (atomic_t *v, int new)”h]”hù)�”}”(hŒ1int raw_atomic_xchg_release(atomic_t *v, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj@Þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj<Þh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj<Þh²hh³jNÞh´M¡ubhÿ)�”}”(hŒraw_atomic_xchg_release”h]”j)�”}”(hŒraw_atomic_xchg_release”h]”hŒraw_atomic_xchg_release”…”�”}”(hjaÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]Þubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj<Þh²hh³jNÞh´M¡ubj4)�”}”(hŒ(atomic_t *v, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj€Þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‚ÞŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjcÞsbŒc.raw_atomic_xchg_release”†”asbuh1hhjyÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyÞubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj®Þh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjyÞubj)�”}”(hjph]”hŒv”…”�”}”(hj»Þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjuÞubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÓÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÏÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÏÞubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjïÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjuÞubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj<Þh²hh³jNÞh´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj8Þh²hh³jNÞh´M¡ubah}”(h]”j3Þah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jNÞh´M¡hj5Þh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with release ordering”h]”hŒ%atomic exchange with release ordering”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¡hjßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj5Þh²hh³jNÞh´M¡ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj1ßjHj1ßjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_t *v`` pointer to atomic_t ``int new`` int value to assign **Description** Atomically updates **v** to **new** with release ordering. Safe to use in noinstr code; prefer atomic_xchg_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj;ßh]”hŒ Parameters”…”�”}”(hj=ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¥hj5ßubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjZßh]”hŒ atomic_t *v”…”�”}”(hj\ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjXßubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¢hjTßubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjsßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³joßh´M¢hjpßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjTßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³joßh´M¢hjQßubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hj“ßh]”hŒint new”…”�”}”(hj•ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M£hj�ßubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj¬ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¨ßh´M£hj©ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¨ßh´M£hjQßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj5ßubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¥hj5ßubjM)�”}”(hŒ:Atomically updates **v** to **new** with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjäßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjìßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjäßubhŒ to ”…”�”}”(hjäßh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjþßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjäßubhŒ with release ordering.”…”�”}”(hjäßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¤hj5ßubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_xchg_release() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_xchg_release() elsewhere.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¦hj5ßubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj(àh]”hŒReturn”…”�”}”(hj*àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&àubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¨hj5ßubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj>àh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjFàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>àubhŒ.”…”�”}”(hj>àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M©hj5ßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic_xchg_relaxed (C function)”Œc.raw_atomic_xchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2int raw_atomic_xchg_relaxed (atomic_t *v, int new)”h]”hù)�”}”(hŒ1int raw_atomic_xchg_relaxed(atomic_t *v, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj{àh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽàh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{àh²hh³j�àh´M»ubhÿ)�”}”(hŒraw_atomic_xchg_relaxed”h]”j)�”}”(hŒraw_atomic_xchg_relaxed”h]”hŒraw_atomic_xchg_relaxed”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœàubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj{àh²hh³j�àh´M»ubj4)�”}”(hŒ(atomic_t *v, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj¿àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÁàŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¢àsbŒc.raw_atomic_xchg_relaxed”†”asbuh1hhj¸àubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßàh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸àubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjíàh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¸àubj)�”}”(hjph]”hŒv”…”�”}”(hjúàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj´àubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjáubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjáubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj.áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj´àubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj{àh²hh³j�àh´M»ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjwàh²hh³j�àh´M»ubah}”(h]”jràah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�àh´M»hjtàh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with relaxed ordering”h]”hŒ%atomic exchange with relaxed ordering”…”�”}”(hjXáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M»hjUáh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjtàh²hh³j�àh´M»ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjpájHjpájI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_t *v`` pointer to atomic_t ``int new`` int value to assign **Description** Atomically updates **v** to **new** with relaxed ordering. Safe to use in noinstr code; prefer atomic_xchg_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjzáh]”hŒ Parameters”…”�”}”(hj|áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxáubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¿hjtáubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj™áh]”hŒ atomic_t *v”…”�”}”(hj›áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj—áubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¼hj“áubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj²áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjÒáh]”hŒint new”…”�”}”(hjÔáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÐáubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M½hjÌáubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjëáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjtáubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¿hjtáubjM)�”}”(hŒ:Atomically updates **v** to **new** with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj#âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj+âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#âubhŒ to ”…”�”}”(hj#âh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj=âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#âubhŒ with relaxed ordering.”…”�”}”(hj#âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¾hjtáubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_xchg_relaxed() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_xchg_relaxed() elsewhere.”…”�”}”(hjVâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÀhjtáubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjgâh]”hŒReturn”…”�”}”(hjiâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeâubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÂhjtáubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj}âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj…âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}âubhŒ.”…”�”}”(hj}âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÃhjtáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic_cmpxchg (C function)”Œc.raw_atomic_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6int raw_atomic_cmpxchg (atomic_t *v, int old, int new)”h]”hù)�”}”(hŒ5int raw_atomic_cmpxchg(atomic_t *v, int old, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¾âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjºâh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍâh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjºâh²hh³jÌâh´MÒubhÿ)�”}”(hŒraw_atomic_cmpxchg”h]”j)�”}”(hŒraw_atomic_cmpxchg”h]”hŒraw_atomic_cmpxchg”…”�”}”(hjßâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛâubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjºâh²hh³jÌâh´MÒubj4)�”}”(hŒ(atomic_t *v, int old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjþâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jãŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjáâsbŒc.raw_atomic_cmpxchg”†”asbuh1hhj÷âubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷âubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj,ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj÷âubj)�”}”(hjph]”hŒv”…”�”}”(hj9ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjóâubj:)�”}”(hŒint old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjQãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjMãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjMãubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjmãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjóâubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj†ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‚ãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚ãubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj¢ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjóâubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjºâh²hh³jÌâh´MÒubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¶âh²hh³jÌâh´MÒubah}”(h]”j±âah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÌâh´MÒhj³âh²hubj4)�”}”(hhh]”jM)�”}”(hŒ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hjÌãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÒhjÉãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj³âh²hh³jÌâh´MÒubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjäãjHjäãjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX�**Parameters** ``atomic_t *v`` pointer to atomic_t ``int old`` int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_cmpxchg() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÖhjèãubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj äh]”hŒ atomic_t *v”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj äubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÓhjäubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj&äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``int old`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int old``”h]”jS)�”}”(hjFäh]”hŒint old”…”�”}”(hjHäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjDäubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÔhj@äubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hj_äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjäh]”hŒint new”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj}äubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÕhjyäubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj˜äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j”äh´MÕhj•äubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjyäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”äh´MÕhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjèãubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M×hjèãubjM)�”}”(hŒ‘If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjÐäh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjØäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐäubhŒ == ”…”�”}”(hjÐäh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjêäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐäubhŒ), atomically updates ”…”�”}”(hjÐäh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjüäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐäubhŒ to ”…”�”}”(hjÐäh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐäubhŒ with full ordering. Otherwise, ”…”�”}”(hjÐäh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐäubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjÐäh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÖhjèãubjM)�”}”(hŒ?Safe to use in noinstr code; prefer atomic_cmpxchg() elsewhere.”h]”hŒ?Safe to use in noinstr code; prefer atomic_cmpxchg() elsewhere.”…”�”}”(hj9åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÙhjèãubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjJåh]”hŒReturn”…”�”}”(hjLåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHåubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÛhjèãubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj`åh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjhåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`åubhŒ.”…”�”}”(hj`åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÜhjèãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'raw_atomic_cmpxchg_acquire (C function)”Œc.raw_atomic_cmpxchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>int raw_atomic_cmpxchg_acquire (atomic_t *v, int old, int new)”h]”hù)�”}”(hŒ=int raw_atomic_cmpxchg_acquire(atomic_t *v, int old, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¡åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�åh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°åh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�åh²hh³j¯åh´Mïubhÿ)�”}”(hŒraw_atomic_cmpxchg_acquire”h]”j)�”}”(hŒraw_atomic_cmpxchg_acquire”h]”hŒraw_atomic_cmpxchg_acquire”…”�”}”(hjÂåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾åubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�åh²hh³j¯åh´Mïubj4)�”}”(hŒ(atomic_t *v, int old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjáåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jãåŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÄåsbŒc.raw_atomic_cmpxchg_acquire”†”asbuh1hhjÚåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚåubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÚåubj)�”}”(hjph]”hŒv”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÖåubj:)�”}”(hŒint old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj4æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj0æubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBæh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0æubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjPæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÖåubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjiæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjeæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwæh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjeæubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj…æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÖåubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�åh²hh³j¯åh´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj™åh²hh³j¯åh´Mïubah}”(h]”j”åah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¯åh´Mïhj–åh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(hj¯æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mïhj¬æh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–åh²hh³j¯åh´Mïubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÇæjHjÇæjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX›**Parameters** ``atomic_t *v`` pointer to atomic_t ``int old`` int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_cmpxchg_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MóhjËæubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjðæh]”hŒ atomic_t *v”…”�”}”(hjòæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjîæubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MðhjêæubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``int old`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int old``”h]”jS)�”}”(hj)çh]”hŒint old”…”�”}”(hj+çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj'çubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mñhj#çubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hjBçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjbçh]”hŒint new”…”�”}”(hjdçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj`çubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mòhj\çubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj{çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jwçh´Mòhjxçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj\çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jwçh´Mòhjçæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjËæubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MôhjËæubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj³çh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj»çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³çubhŒ == ”…”�”}”(hj³çh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjÍçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³çubhŒ), atomically updates ”…”�”}”(hj³çh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjßçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³çubhŒ to ”…”�”}”(hj³çh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjñçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³çubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hj³çh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³çubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj³çh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MóhjËæubjM)�”}”(hŒGSafe to use in noinstr code; prefer atomic_cmpxchg_acquire() elsewhere.”h]”hŒGSafe to use in noinstr code; prefer atomic_cmpxchg_acquire() elsewhere.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MöhjËæubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj-èh]”hŒReturn”…”�”}”(hj/èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj+èubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MøhjËæubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjCèh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjKèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCèubhŒ.”…”�”}”(hjCèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MùhjËæubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'raw_atomic_cmpxchg_release (C function)”Œc.raw_atomic_cmpxchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>int raw_atomic_cmpxchg_release (atomic_t *v, int old, int new)”h]”hù)�”}”(hŒ=int raw_atomic_cmpxchg_release(atomic_t *v, int old, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj„èh²hh³Nh´Nubah}”(h]”h ]”ja•h"]”h$]”h&]”uh1jûhj€èh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“èh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€èh²hh³j’èh´M ubhÿ)�”}”(hŒraw_atomic_cmpxchg_release”h]”j)�”}”(hŒraw_atomic_cmpxchg_release”h]”hŒraw_atomic_cmpxchg_release”…”�”}”(hj¥èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡èubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj€èh²hh³j’èh´M ubj4)�”}”(hŒ(atomic_t *v, int old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÄèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÆèŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj§èsbŒc.raw_atomic_cmpxchg_release”†”asbuh1hhj½èubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäèh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½èubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjòèh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj½èubj)�”}”(hjph]”hŒv”…”�”}”(hjÿèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¹èubj:)�”}”(hŒint old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjéubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%éh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjéubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj3éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¹èubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjLéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjHéubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZéh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjHéubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjhéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¹èubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj€èh²hh³j’èh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj|èh²hh³j’èh´M ubah}”(h]”jwèah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j’èh´M hjyèh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release ordering”…”�”}”(hj’éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj�éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjyèh²hh³j’èh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjªéjHjªéjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX›**Parameters** ``atomic_t *v`` pointer to atomic_t ``int old`` int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_cmpxchg_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj®éubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÓéh]”hŒ atomic_t *v”…”�”}”(hjÕéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÑéubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjÍéubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjìéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``int old`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int old``”h]”jS)�”}”(hj êh]”hŒint old”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj êubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjêubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hj%êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j!êh´Mhj"êubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j!êh´MhjÊéubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjEêh]”hŒint new”…”�”}”(hjGêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjCêubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj?êubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj^êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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®éubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj®éubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj–êh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjžêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–êubhŒ == ”…”�”}”(hj–êh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj°êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–êubhŒ), atomically updates ”…”�”}”(hj–êh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÂêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–êubhŒ to ”…”�”}”(hj–êh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjÔêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–êubhŒ# with release ordering. Otherwise, ”…”�”}”(hj–êh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjæêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–êubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj–êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj®éubjM)�”}”(hŒGSafe to use in noinstr code; prefer atomic_cmpxchg_release() elsewhere.”h]”hŒGSafe to use in noinstr code; prefer atomic_cmpxchg_release() elsewhere.”…”�”}”(hjÿêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj®éubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjëh]”hŒReturn”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj®éubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj&ëh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj.ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&ëubhŒ.”…”�”}”(hj&ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj®éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'raw_atomic_cmpxchg_relaxed (C function)”Œc.raw_atomic_cmpxchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>int raw_atomic_cmpxchg_relaxed (atomic_t *v, int old, int new)”h]”hù)�”}”(hŒ=int raw_atomic_cmpxchg_relaxed(atomic_t *v, int old, int new)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjgëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjcëh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M(ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcëh²hh³juëh´M(ubhÿ)�”}”(hŒraw_atomic_cmpxchg_relaxed”h]”j)�”}”(hŒraw_atomic_cmpxchg_relaxed”h]”hŒraw_atomic_cmpxchg_relaxed”…”�”}”(hjˆëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„ëubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjcëh²hh³juëh´M(ubj4)�”}”(hŒ(atomic_t *v, int old, int new)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj§ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j©ëŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŠësbŒc.raw_atomic_cmpxchg_relaxed”†”asbuh1hhj ëubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ëubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÕëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ëubj)�”}”(hjph]”hŒv”…”�”}”(hjâëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœëubj:)�”}”(hŒint old”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjúëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjöëubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjöëubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœëubj:)�”}”(hŒint new”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj/ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj+ìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+ìubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjKìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœëubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjcëh²hh³juëh´M(ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj_ëh²hh³juëh´M(ubah}”(h]”jZëah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³juëh´M(hj\ëh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with relaxed ordering”h]”hŒ1atomic compare and exchange with relaxed ordering”…”�”}”(hjuìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M(hjrìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj\ëh²hh³juëh´M(ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�ìjHj�ìjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX›**Parameters** ``atomic_t *v`` pointer to atomic_t ``int old`` int value to compare with ``int new`` int value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_cmpxchg_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M,hj‘ìubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj¶ìh]”hŒ atomic_t *v”…”�”}”(hj¸ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj´ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M)hj°ìubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÏìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``int old`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int old``”h]”jS)�”}”(hjïìh]”hŒint old”…”�”}”(hjñìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjíìubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M*hjéìubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hj(íh]”hŒint new”…”�”}”(hj*íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj&íubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M+hj"íubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjAíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj‘ìubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjcíh]”hŒ Description”…”�”}”(hjeíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaíubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M-hj‘ìubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjyíh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyíubhŒ == ”…”�”}”(hjyíh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj“íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyíubhŒ), atomically updates ”…”�”}”(hjyíh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¥íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyíubhŒ to ”…”�”}”(hjyíh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj·íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyíubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hjyíh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÉíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyíubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjyíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M,hj‘ìubjM)�”}”(hŒGSafe to use in noinstr code; prefer atomic_cmpxchg_relaxed() elsewhere.”h]”hŒGSafe to use in noinstr code; prefer atomic_cmpxchg_relaxed() elsewhere.”…”�”}”(hjâíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M/hj‘ìubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjóíh]”hŒReturn”…”�”}”(hjõíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñíubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M1hj‘ìubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj îh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj îubhŒ.”…”�”}”(hj îh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M2hj‘ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#raw_atomic_try_cmpxchg (C function)”Œc.raw_atomic_try_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCûŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjðúsbŒc.raw_atomic_sub_and_test”†”asbuh1hhj:ûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:ûubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjoûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj:ûubj)�”}”(hjph]”hŒv”…”�”}”(hj|ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjûubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÊúh²hh³jÛúh´MÄubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÆúh²hh³jÛúh´MÄubah}”(h]”jÁúah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÛúh´MÄhjÃúh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic subtract and test if zero with full ordering”h]”hŒ3atomic subtract and test if zero with full ordering”…”�”}”(hj¥ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÄhj¢ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÃúh²hh³jÛúh´MÄubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj½ûjHj½ûjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXD**Parameters** ``int i`` int value to subtract ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Safe to use in noinstr code; prefer atomic_sub_and_test() elsewhere. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÈhjÁûubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjæûh]”hŒint i”…”�”}”(hjèûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjäûubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÅhjàûubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjÿûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjüh]”hŒ atomic_t *v”…”�”}”(hj!üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÆhjüubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj8üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4üh´MÆhj5üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4üh´MÆhjÝûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÁûubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjZüh]”hŒ Description”…”�”}”(hj\üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXüubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÈhjÁûubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjpüh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjxüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpüubhŒ to (”…”�”}”(hjpüh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŠüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpüubhŒ - ”…”�”}”(hjpüh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjœüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpüubhŒ) with full ordering.”…”�”}”(hjpüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÇhjÁûubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_sub_and_test() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_sub_and_test() elsewhere.”…”�”}”(hjµüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÉhjÁûubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÆüh]”hŒReturn”…”�”}”(hjÈüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄüubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MËhjÁûubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjàüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜüubhŒ if the resulting value of ”…”�”}”(hjÜüh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjòüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜüubhŒ is zero, ”…”�”}”(hjÜüh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜüubhŒ otherwise.”…”�”}”(hjÜüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÌhjÁûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic_dec_and_test (C function)”Œc.raw_atomic_dec_and_test”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*bool raw_atomic_dec_and_test (atomic_t *v)”h]”hù)�”}”(hŒ)bool raw_atomic_dec_and_test(atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj=ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj9ýh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÙubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKýh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9ýh²hh³jJýh´MÙubhÿ)�”}”(hŒraw_atomic_dec_and_test”h]”j)�”}”(hŒraw_atomic_dec_and_test”h]”hŒraw_atomic_dec_and_test”…”�”}”(hj]ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYýubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj9ýh²hh³jJýh´MÙubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj|ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j~ýŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj_ýsbŒc.raw_atomic_dec_and_test”†”asbuh1hhjuýubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœýh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjuýubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjªýh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjuýubj)�”}”(hjph]”hŒv”…”�”}”(hj·ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjqýubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj9ýh²hh³jJýh´MÙubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj5ýh²hh³jJýh´MÙubah}”(h]”j0ýah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jJýh´MÙhj2ýh²hubj4)�”}”(hhh]”jM)�”}”(hŒ4atomic decrement and test if zero with full ordering”h]”hŒ4atomic decrement and test if zero with full ordering”…”�”}”(hjàýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÙhjÝýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj2ýh²hh³jJýh´MÙubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjøýjHjøýjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Safe to use in noinstr code; prefer atomic_dec_and_test() elsewhere. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝhjüýubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj!þh]”hŒ atomic_t *v”…”�”}”(hj#þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÚhjþubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj:þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6þh´MÚhj7þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6þh´MÚhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjüýubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj\þh]”hŒ Description”…”�”}”(hj^þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZþubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÜhjüýubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjrþh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjzþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrþubhŒ to (”…”�”}”(hjrþh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrþubhŒ - 1) with full ordering.”…”�”}”(hjrþh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jL•h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÛhjüýubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_dec_and_test() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_dec_and_test() elsewhere.”…”�”}”(hj¥þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝhjüýubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¶þh]”hŒReturn”…”�”}”(hj¸þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´þubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MßhjüýubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjÐþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌþubhŒ if the resulting value of ”…”�”}”(hjÌþh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjâþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌþubhŒ is zero, ”…”�”}”(hjÌþh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjôþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌþubhŒ otherwise.”…”�”}”(hjÌþh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Màhjüýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic_inc_and_test (C function)”Œc.raw_atomic_inc_and_test”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*bool raw_atomic_inc_and_test (atomic_t *v)”h]”hù)�”}”(hŒ)bool raw_atomic_inc_and_test(atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj-ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj)ÿh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)ÿh²hh³j:ÿh´Míubhÿ)�”}”(hŒraw_atomic_inc_and_test”h]”j)�”}”(hŒraw_atomic_inc_and_test”h]”hŒraw_atomic_inc_and_test”…”�”}”(hjMÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIÿubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj)ÿh²hh³j:ÿh´Míubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjlÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jnÿŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjOÿsbŒc.raw_atomic_inc_and_test”†”asbuh1hhjeÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjeÿubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjšÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjeÿubj)�”}”(hjph]”hŒv”…”�”}”(hj§ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjaÿubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj)ÿh²hh³j:ÿh´Míubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj%ÿh²hh³j:ÿh´Míubah}”(h]”j ÿah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j:ÿh´Míhj"ÿh²hubj4)�”}”(hhh]”jM)�”}”(hŒ4atomic increment and test if zero with full ordering”h]”hŒ4atomic increment and test if zero with full ordering”…”�”}”(hjÐÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MíhjÍÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj"ÿh²hh³j:ÿh´Míubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjèÿjHjèÿjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Safe to use in noinstr code; prefer atomic_inc_and_test() elsewhere. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mñhjìÿubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjh]”hŒ atomic_t *v”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mîhj ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j&h´Mîhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j&h´Mîhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjìÿubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjLh]”hŒ Description”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MðhjìÿubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjbh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbubhŒ to (”…”�”}”(hjbh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbubhŒ + 1) with full ordering.”…”�”}”(hjbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MïhjìÿubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_inc_and_test() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_inc_and_test() elsewhere.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MñhjìÿubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¦h]”hŒReturn”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MóhjìÿubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼ubhŒ if the resulting value of ”…”�”}”(hj¼h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼ubhŒ is zero, ”…”�”}”(hj¼h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼ubhŒ otherwise.”…”�”}”(hj¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Môhjìÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic_add_negative (C function)”Œc.raw_atomic_add_negative”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool raw_atomic_add_negative (int i, atomic_t *v)”h]”hù)�”}”(hŒ0bool raw_atomic_add_negative(int i, atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j*h´M ubhÿ)�”}”(hŒraw_atomic_add_negative”h]”j)�”}”(hŒraw_atomic_add_negative”h]”hŒraw_atomic_add_negative”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j*h´M ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjUubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjUubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjQubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j’Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj?sbŒc.raw_atomic_add_negative”†”asbuh1hhj‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‰ubj)�”}”(hjph]”hŒv”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjQubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³j*h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j*h´M ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j*h´M hjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ2atomic add and test if negative with full ordering”h]”hŒ2atomic add and test if negative with full ordering”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j*h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj jHj jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXC**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Safe to use in noinstr code; prefer atomic_add_negative() elsewhere. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj5h]”hŒint i”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj/ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJh´M hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJh´M hj,ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjnh]”hŒ atomic_t *v”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjhubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jƒh´M hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jƒh´M hj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¿h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿ubhŒ to (”…”�”}”(hj¿h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿ubhŒ + ”…”�”}”(hj¿h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿ubhŒ) with full ordering.”…”�”}”(hj¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_add_negative() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_add_negative() elsewhere.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj+ubhŒ if the resulting value of ”…”�”}”(hj+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj+ubhŒ is negative, ”…”�”}”(hj+h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj+ubhŒ otherwise.”…”�”}”(hj+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic_add_negative_acquire (C function)”Œ!c.raw_atomic_add_negative_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9bool raw_atomic_add_negative_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ8bool raw_atomic_add_negative_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjˆh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjˆh²hh³j™h´M ubhÿ)�”}”(hŒraw_atomic_add_negative_acquire”h]”j)�”}”(hŒraw_atomic_add_negative_acquire”h]”hŒraw_atomic_add_negative_acquire”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjˆh²hh³j™h´M ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÄubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÀubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj®sbŒ!c.raw_atomic_add_negative_acquire”†”asbuh1hhjøubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjøubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjøubj)�”}”(hjph]”hŒv”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÀubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjˆh²hh³j™h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj„h²hh³j™h´M ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j™h´M hj�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with acquire ordering”h]”hŒ5atomic add and test if negative with acquire ordering”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�h²hh³j™h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj{jHj{jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXN**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_add_negative_acquire() elsewhere. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj¤h]”hŒint i”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjžubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÝh]”hŒ atomic_t *v”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj×ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj.h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ubhŒ to (”…”�”}”(hj.h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ubhŒ + ”…”�”}”(hj.h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ubhŒ) with acquire ordering.”…”�”}”(hj.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic_add_negative_acquire() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic_add_negative_acquire() elsewhere.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M! hjubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj„h]”hŒReturn”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M# hjubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšubhŒ if the resulting value of ”…”�”}”(hjšh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšubhŒ is negative, ”…”�”}”(hjšh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšubhŒ otherwise.”…”�”}”(hjšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$ hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic_add_negative_release (C function)”Œ!c.raw_atomic_add_negative_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9bool raw_atomic_add_negative_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ8bool raw_atomic_add_negative_release(int i, atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj÷h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M7 ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷h²hh³jh´M7 ubhÿ)�”}”(hŒraw_atomic_add_negative_release”h]”j)�”}”(hŒraw_atomic_add_negative_release”h]”hŒraw_atomic_add_negative_release”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj÷h²hh³jh´M7 ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj/ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jpŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjsbŒ!c.raw_atomic_add_negative_release”†”asbuh1hhjgubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjgubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjgubj)�”}”(hjph]”hŒv”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj/ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj÷h²hh³jh´M7 ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjóh²hh³jh´M7 ubah}”(h]”jîah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´M7 hjðh²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with release ordering”h]”hŒ5atomic add and test if negative with release ordering”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M7 hjÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjðh²hh³jh´M7 ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjêjHjêjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXN**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Safe to use in noinstr code; prefer atomic_add_negative_release() elsewhere. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M; hjîubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjh]”hŒint i”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M8 hj ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j(h´M8 hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j(h´M8 hj ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjLh]”hŒ atomic_t *v”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M9 hjFubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jah´M9 hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jah´M9 hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjîubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M; hjîubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ to (”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ + ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ) with release ordering.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M: hjîubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic_add_negative_release() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic_add_negative_release() elsewhere.”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M< hjîubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjóh]”hŒReturn”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M> hjîubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ if the resulting value of ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ is negative, ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ otherwise.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M? hjîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´Nube(hÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic_add_negative_relaxed (C function)”Œ!c.raw_atomic_add_negative_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9bool raw_atomic_add_negative_relaxed (int i, atomic_t *v)”h]”hù)�”}”(hŒ8bool raw_atomic_add_negative_relaxed(int i, atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjfh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MQ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfh²hh³jwh´MQ ubhÿ)�”}”(hŒraw_atomic_add_negative_relaxed”h]”j)�”}”(hŒraw_atomic_add_negative_relaxed”h]”hŒraw_atomic_add_negative_relaxed”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjfh²hh³jwh´MQ ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¢ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjžubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jߌmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŒsbŒ!c.raw_atomic_add_negative_relaxed”†”asbuh1hhjÖubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÖubj)�”}”(hjph]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjžubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjfh²hh³jwh´MQ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjbh²hh³jwh´MQ ubah}”(h]”j]ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jwh´MQ hj_h²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with relaxed ordering”h]”hŒ5atomic add and test if negative with relaxed ordering”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MQ hj> h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj_h²hh³jwh´MQ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjY jHjY jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXN**Parameters** ``int i`` int value to add ``atomic_t *v`` pointer to atomic_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_add_negative_relaxed() elsewhere. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjc h]”hŒ Parameters”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MU hj] ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj‚ h]”hŒint i”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MR hj| ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j— h´MR hj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj| ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j— h´MR hjy ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj» h]”hŒ atomic_t *v”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MS hjµ ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÐ h´MS hjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjµ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÐ h´MS hjy ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj] ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MU hj] ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ to (”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ + ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ) with relaxed ordering.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MT hj] ubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic_add_negative_relaxed() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic_add_negative_relaxed() elsewhere.”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MV hj] ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjb h]”hŒReturn”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj` ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MX hj] ubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx ubhŒ if the resulting value of ”…”�”}”(hjx h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx ubhŒ is negative, ”…”�”}”(hjx h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx ubhŒ otherwise.”…”�”}”(hjx h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MY hj] ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(raw_atomic_fetch_add_unless (C function)”Œc.raw_atomic_fetch_add_unless”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;int raw_atomic_fetch_add_unless (atomic_t *v, int a, int u)”h]”hù)�”}”(hŒ:int raw_atomic_fetch_add_unless(atomic_t *v, int a, int u)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÕ h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mh ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÕ h²hh³jç h´Mh ubhÿ)�”}”(hŒraw_atomic_fetch_add_unless”h]”j)�”}”(hŒraw_atomic_fetch_add_unless”h]”hŒraw_atomic_fetch_add_unless”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjö ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÕ h²hh³jç h´Mh ubj4)�”}”(hŒ(atomic_t *v, int a, int u)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjü sbŒc.raw_atomic_fetch_add_unless”†”asbuh1hhj ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ubj)�”}”(hjph]”hŒv”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ubj:)�”}”(hŒint a”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh ubj)�”}”(hj¯Ãh]”hŒa”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ubj:)�”}”(hŒint u”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjœ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœ ubj)�”}”(hj÷lh]”hŒu”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÕ h²hh³jç h´Mh ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÑ h²hh³jç h´Mh ubah}”(h]”jÌ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jç h´Mh hjÎ h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mh hjâ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÎ h²hh³jç h´Mh ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjý jHjý jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX˜**Parameters** ``atomic_t *v`` pointer to atomic_t ``int a`` int value to add ``int u`` int value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_fetch_add_unless() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Ml hj ubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj& h]”hŒ atomic_t *v”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mi hj ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j; h´Mi hj< ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j; h´Mi hj ubj©)�”}”(hŒ``int a`` int value to add ”h]”(j¯)�”}”(hŒ ``int a``”h]”jS)�”}”(hj_ h]”hŒint a”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj] ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mj hjY ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jt h´Mj hju ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjY ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jt h´Mj hj ubj©)�”}”(hŒ$``int u`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int u``”h]”jS)�”}”(hj˜ h]”hŒint u”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj– ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mk hj’ ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j­ h´Mk hj® ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj’ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j­ h´Mk hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mm hj ubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjé h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjé ubhŒ != ”…”�”}”(hjé h²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjé ubhŒ), atomically updates ”…”�”}”(hjé h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjé ubhŒ to (”…”�”}”(hjé h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjé ubhŒ + ”…”�”}”(hjé h²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjé ubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjé h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjé ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjé h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Ml hj ubjM)�”}”(hŒHSafe to use in noinstr code; prefer atomic_fetch_add_unless() elsewhere.”h]”hŒHSafe to use in noinstr code; prefer atomic_fetch_add_unless() elsewhere.”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mo hj ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hju h]”hŒReturn”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjs ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mq hj ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj‹ h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹ ubhŒ.”…”�”}”(hj‹ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mr hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"raw_atomic_add_unless (C function)”Œc.raw_atomic_add_unless”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6bool raw_atomic_add_unless (atomic_t *v, int a, int u)”h]”hù)�”}”(hŒ5bool raw_atomic_add_unless(atomic_t *v, int a, int u)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÈ h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M† ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÈ h²hh³jÙ h´M† ubhÿ)�”}”(hŒraw_atomic_add_unless”h]”j)�”}”(hŒraw_atomic_add_unless”h]”hŒraw_atomic_add_unless”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÈ h²hh³jÙ h´M† ubj4)�”}”(hŒ(atomic_t *v, int a, int u)”h]”(j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjî sbŒc.raw_atomic_add_unless”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hjph]”hŒv”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubj:)�”}”(hŒint a”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZubj)�”}”(hj¯Ãh]”hŒa”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubj:)�”}”(hŒint u”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽubj)�”}”(hj÷lh]”hŒu”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÈ h²hh³jÙ h´M† ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÄ h²hh³jÙ h´M† ubah}”(h]”j¿ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÙ h´M† hjÁ h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M† hjÔh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÁ h²hh³jÙ h´M† ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjïjHjïjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX©**Parameters** ``atomic_t *v`` pointer to atomic_t ``int a`` int value to add ``int u`` int value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_add_unless() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŠ hjóubj¤)�”}”(hhh]”(j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjh]”hŒ atomic_t *v”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‡ hjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j-h´M‡ hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j-h´M‡ hjubj©)�”}”(hŒ``int a`` int value to add ”h]”(j¯)�”}”(hŒ ``int a``”h]”jS)�”}”(hjQh]”hŒint a”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mˆ hjKubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jfh´Mˆ hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jfh´Mˆ hjubj©)�”}”(hŒ$``int u`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int u``”h]”jS)�”}”(hjŠh]”hŒint u”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‰ hj„ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŸh´M‰ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŸh´M‰ hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjóubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‹ hjóubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ != ”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ), atomically updates ”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ to (”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ + ”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŠ hjóubjM)�”}”(hŒBSafe to use in noinstr code; prefer atomic_add_unless() elsewhere.”h]”hŒBSafe to use in noinstr code; prefer atomic_add_unless() elsewhere.”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hjóubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjgh]”hŒReturn”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hjóubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ubhŒ if ”…”�”}”(hj}h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ubhŒ was updated, ”…”�”}”(hj}h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ubhŒ otherwise.”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic_inc_not_zero (C function)”Œc.raw_atomic_inc_not_zero”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*bool raw_atomic_inc_not_zero (atomic_t *v)”h]”hù)�”}”(hŒ)bool raw_atomic_inc_not_zero(atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÚh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚh²hh³jëh´M� ubhÿ)�”}”(hŒraw_atomic_inc_not_zero”h]”j)�”}”(hŒraw_atomic_inc_not_zero”h]”hŒraw_atomic_inc_not_zero”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjúubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÚh²hh³jëh´M� ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjsbŒc.raw_atomic_inc_not_zero”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hjph]”hŒv”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÚh²hh³jëh´M� ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÖh²hh³jëh´M� ubah}”(h]”jÑah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jëh´M� hjÓh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic increment unless zero with full ordering”h]”hŒ/atomic increment unless zero with full ordering”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hj~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÓh²hh³jëh´M� ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj™jHj™jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX^**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_inc_not_zero() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¡ hj�ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÂh]”hŒ atomic_t *v”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mž hj¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj�ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M  hj�ubjM)�”}”(hŒ�If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ != 0), atomically updates ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ to (”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŸ hj�ubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_inc_not_zero() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_inc_not_zero() elsewhere.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¢ hj�ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj{h]”hŒReturn”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¤ hj�ubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘ubhŒ if ”…”�”}”(hj‘h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘ubhŒ was updated, ”…”�”}”(hj‘h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘ubhŒ otherwise.”…”�”}”(hj‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¥ hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic_inc_unless_negative (C function)”Œ c.raw_atomic_inc_unless_negative”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool raw_atomic_inc_unless_negative (atomic_t *v)”h]”hù)�”}”(hŒ0bool raw_atomic_inc_unless_negative(atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjîh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M² ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjîh²hh³jÿh´M² ubhÿ)�”}”(hŒraw_atomic_inc_unless_negative”h]”j)�”}”(hŒraw_atomic_inc_unless_negative”h]”hŒraw_atomic_inc_unless_negative”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjîh²hh³jÿh´M² ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j3Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjsbŒ c.raw_atomic_inc_unless_negative”†”asbuh1hhj*ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj*ubj)�”}”(hjph]”hŒv”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj&ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjîh²hh³jÿh´M² ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjêh²hh³jÿh´M² ubah}”(h]”jåah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÿh´M² hjçh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic increment unless negative with full ordering”h]”hŒ3atomic increment unless negative with full ordering”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M² hj’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjçh²hh³jÿh´M² ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj­jHj­jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXe**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_inc_unless_negative() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¶ hj±ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÖh]”hŒ atomic_t *v”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M³ hjÐubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj±ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mµ hj±ubjM)�”}”(hŒ�If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ >= 0), atomically updates ”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ to (”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”•}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M´ hj±ubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic_inc_unless_negative() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic_inc_unless_negative() elsewhere.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M· hj±ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�h]”hŒReturn”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¹ hj±ubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥ubhŒ if ”…”�”}”(hj¥h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥ubhŒ was updated, ”…”�”}”(hj¥h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥ubhŒ otherwise.”…”�”}”(hj¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mº hj±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic_dec_unless_positive (C function)”Œ c.raw_atomic_dec_unless_positive”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool raw_atomic_dec_unless_positive (atomic_t *v)”h]”hù)�”}”(hŒ0bool raw_atomic_dec_unless_positive(atomic_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÎ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³jh´MÎ ubhÿ)�”}”(hŒraw_atomic_dec_unless_positive”h]”j)�”}”(hŒraw_atomic_dec_unless_positive”h]”hŒraw_atomic_dec_unless_positive”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³jh´MÎ ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jGŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj(sbŒ c.raw_atomic_dec_unless_positive”†”asbuh1hhj>ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj>ubj)�”}”(hjph]”hŒv”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³jh´MÎ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjþh²hh³jh´MÎ ubah}”(h]”jùah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´MÎ hjûh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic decrement unless positive with full ordering”h]”hŒ3atomic decrement unless positive with full ordering”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÎ hj¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjûh²hh³jh´MÎ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÁjHjÁjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXe**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** If (**v** <= 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_dec_unless_positive() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÒ hjÅubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjêh]”hŒ atomic_t *v”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÏ hjäubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÿh´MÏ hjubah}”(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£hjÅubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÑ hjÅubjM)�”}”(hŒ�If (**v** <= 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj;h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;ubhŒ <= 0), atomically updates ”…”�”}”(hj;h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;ubhŒ to (”…”�”}”(hj;h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;ubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hj;h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÐ hjÅubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic_dec_unless_positive() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic_dec_unless_positive() elsewhere.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÓ hjÅubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj£h]”hŒReturn”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÕ hjÅubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹ubhŒ if ”…”�”}”(hj¹h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹ubhŒ was updated, ”…”�”}”(hj¹h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹ubhŒ otherwise.”…”�”}”(hj¹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÖ hjÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'raw_atomic_dec_if_positive (C function)”Œc.raw_atomic_dec_if_positive”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,int raw_atomic_dec_if_positive (atomic_t *v)”h]”hù)�”}”(hŒ+int raw_atomic_dec_if_positive(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mê ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j(h´Mê ubhÿ)�”}”(hŒraw_atomic_dec_if_positive”h]”j)�”}”(hŒraw_atomic_dec_if_positive”h]”hŒraw_atomic_dec_if_positive”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j(h´Mê ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j\Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj=sbŒc.raw_atomic_dec_if_positive”†”asbuh1hhjSubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjSubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjSubj)�”}”(hjph]”hŒv”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjOubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³j(h´Mê ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j(h´Mê ubah}”(h]”j ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j(h´Mê hjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic decrement if positive with full ordering”h]”hŒ/atomic decrement if positive with full ordering”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mê hj»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j(h´Mê ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÖjHjÖjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXs**Parameters** ``atomic_t *v`` pointer to atomic_t **Description** If (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_dec_if_positive() elsewhere. **Return** The old value of (**v** - 1), regardless of whether **v** was updated.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mî hjÚubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÿh]”hŒ atomic_t *v”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Më hjùubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´Më hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´Më hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÚubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj:h]”hŒ Description”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mí hjÚubjM)�”}”(hŒŽIf (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPubhŒ > 0), atomically updates ”…”�”}”(hjPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPubhŒ to (”…”�”}”(hjPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hjPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mì hjÚubjM)�”}”(hŒGSafe to use in noinstr code; prefer atomic_dec_if_positive() elsewhere.”h]”hŒGSafe to use in noinstr code; prefer atomic_dec_if_positive() elsewhere.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mï hjÚubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¸h]”hŒReturn”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mñ hjÚubjM)�”}”(hŒFThe old value of (**v** - 1), regardless of whether **v** was updated.”h]”(hŒThe old value of (”…”�”}”(hjÎh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎubhŒ - 1), regardless of whether ”…”�”}”(hjÎh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎubhŒ was updated.”…”�”}”(hjÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mò hjÚubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic64_read (C function)”Œc.raw_atomic64_read”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+s64 raw_atomic64_read (const atomic64_t *v)”h]”hù)�”}”(hŒ*s64 raw_atomic64_read(const atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j&Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_read”sbŒc.raw_atomic64_read”†”asbuh1hhjh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³jEh´M ubhÿ)�”}”(hŒraw_atomic64_read”h]”j)�”}”(hjBh]”hŒraw_atomic64_read”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³jEh´M ubj4)�”}”(hŒ(const atomic64_t *v)”h]”j:)�”}”(hŒconst atomic64_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjoubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjoubh)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j“Œmodname”NŒ classname”Njwjz)�”}”j}]”j@Œc.raw_atomic64_read”†”asbuh1hhjoubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjoubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjoubj)�”}”(hjph]”hŒv”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjkubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³jEh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³jEh´M ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jEh´M hjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with relaxed ordering”h]”hŒ!atomic load with relaxed ordering”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³jEh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj jHj jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒö**Parameters** ``const atomic64_t *v`` pointer to atomic64_t **Description** Atomically loads the value of **v** with relaxed ordering. Safe to use in noinstr code; prefer atomic64_read() elsewhere. **Return** The value loaded from **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubj¤)�”}”(hhh]”j©)�”}”(hŒ.``const atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``const atomic64_t *v``”h]”jS)�”}”(hj4h]”hŒconst atomic64_t *v”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj.ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jIh´M hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jIh´M hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjoh]”hŒ Description”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjM)�”}”(hŒ:Atomically loads the value of **v** with relaxed ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hj…h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj…ubhŒ with relaxed ordering.”…”�”}”(hj…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjM)�”}”(hŒ>Safe to use in noinstr code; prefer atomic64_read() elsewhere.”h]”hŒ>Safe to use in noinstr code; prefer atomic64_read() elsewhere.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj·h]”hŒReturn”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hjÍh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍubhŒ.”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic64_read_acquire (C function)”Œc.raw_atomic64_read_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3s64 raw_atomic64_read_acquire (const atomic64_t *v)”h]”hù)�”}”(hŒ2s64 raw_atomic64_read_acquire(const atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_read_acquire”sbŒc.raw_atomic64_read_acquire”†”asbuh1hhj h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj h²hh³j2h´M ubhÿ)�”}”(hŒraw_atomic64_read_acquire”h]”j)�”}”(hj/h]”hŒraw_atomic64_read_acquire”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj h²hh³j2h´M ubj4)�”}”(hŒ(const atomic64_t *v)”h]”j:)�”}”(hŒconst atomic64_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj\ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\ubh)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j€Œmodname”NŒ classname”Njwjz)�”}”j}]”j-Œc.raw_atomic64_read_acquire”†”asbuh1hhj\ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj\ubj)�”}”(hjph]”hŒv”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjXubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj h²hh³j2h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j2h´M ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j2h´M hjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with acquire ordering”h]”hŒ!atomic load with acquire ordering”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j2h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjøjHjøjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒþ**Parameters** ``const atomic64_t *v`` pointer to atomic64_t **Description** Atomically loads the value of **v** with acquire ordering. Safe to use in noinstr code; prefer atomic64_read_acquire() elsewhere. **Return** The value loaded from **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjüubj¤)�”}”(hhh]”j©)�”}”(hŒ.``const atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``const atomic64_t *v``”h]”jS)�”}”(hj!h]”hŒconst atomic64_t *v”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6h´M hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6h´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjüubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj\h]”hŒ Description”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjüubjM)�”}”(hŒ:Atomically loads the value of **v** with acquire ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hjrh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrubhŒ with acquire ordering.”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjüubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic64_read_acquire() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_read_acquire() elsewhere.”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjüubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¤h]”hŒReturn”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M! hjüubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hjºh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºubhŒ.”…”�”}”(hjºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M" hjüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic64_set (C function)”Œc.raw_atomic64_set”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,void raw_atomic64_set (atomic64_t *v, s64 i)”h]”hù)�”}”(hŒ+void raw_atomic64_set(atomic64_t *v, s64 i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj÷h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M8 ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷h²hh³j h´M8 ubhÿ)�”}”(hŒraw_atomic64_set”h]”j)�”}”(hŒraw_atomic64_set”h]”hŒraw_atomic64_set”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj÷h²hh³j h´M8 ubj4)�”}”(hŒ(atomic64_t *v, s64 i)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j=Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjsbŒc.raw_atomic64_set”†”asbuh1hhj4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj4ubj)�”}”(hjph]”hŒv”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0ubj:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j“Œmodname”NŒ classname”Njwjz)�”}”j}]”jWŒc.raw_atomic64_set”†”asbuh1hhjŠubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj÷h²hh³j h´M8 ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjóh²hh³j h´M8 ubah}”(h]”jîah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j h´M8 hjðh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with relaxed ordering”h]”hŒ atomic set with relaxed ordering”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M8 hjãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjðh²hh³j h´M8 ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjþjHjþjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒ÷**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 i`` s64 value to assign **Description** Atomically sets **v** to **i** with relaxed ordering. Safe to use in noinstr code; prefer atomic64_set() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M< hjubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj'h]”hŒ atomic64_t *v”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M9 hj!ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j<h´M9 hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j<h´M9 hjubj©)�”}”(hŒ``s64 i`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj`h]”hŒs64 i”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M: hjZubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³juh´M: hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³juh´M: hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M< hjubjM)�”}”(hŒ5Atomically sets **v** to **i** with relaxed ordering.”h]”(hŒAtomically sets ”…”�”}”(hj±h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj±ubhŒ to ”…”�”}”(hj±h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj±ubhŒ with relaxed ordering.”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M; hjubjM)�”}”(hŒ=Safe to use in noinstr code; prefer atomic64_set() elsewhere.”h]”hŒ=Safe to use in noinstr code; prefer atomic64_set() elsewhere.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M= hjubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjõh]”hŒReturn”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M? hjubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M@ hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%raw_atomic64_set_release (C function)”Œc.raw_atomic64_set_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4void raw_atomic64_set_release (atomic64_t *v, s64 i)”h]”hù)�”}”(hŒ3void raw_atomic64_set_release(atomic64_t *v, s64 i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj6h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MI ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6h²hh³jHh´MI ubhÿ)�”}”(hŒraw_atomic64_set_release”h]”j)�”}”(hŒraw_atomic64_set_release”h]”hŒraw_atomic64_set_release”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj6h²hh³jHh´MI ubj4)�”}”(hŒ(atomic64_t *v, s64 i)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j|Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj]sbŒc.raw_atomic64_set_release”†”asbuh1hhjsubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjsubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjsubj)�”}”(hjph]”hŒv”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjoubj:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÒŒmodname”NŒ classname”Njwjz)�”}”j}]”j–Œc.raw_atomic64_set_release”†”asbuh1hhjÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjoubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj6h²hh³jHh´MI ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj2h²hh³jHh´MI ubah}”(h]”j-ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jHh´MI hj/h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with release ordering”h]”hŒ atomic set with release ordering”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MI hj" h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj/h²hh³jHh´MI ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj= jHj= jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÿ**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 i`` s64 value to assign **Description** Atomically sets **v** to **i** with release ordering. Safe to use in noinstr code; prefer atomic64_set_release() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjG h]”hŒ Parameters”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjE ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MM hjA ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjf h]”hŒ atomic64_t *v”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjd ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MJ hj` ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j{ h´MJ hj| ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj` ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j{ h´MJ hj] ubj©)�”}”(hŒ``s64 i`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjŸ h]”hŒs64 i”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MK hj™ ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j´ h´MK hjµ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj™ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j´ h´MK hj] ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjA ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MM hjA ubjM)�”}”(hŒ5Atomically sets **v** to **i** with release ordering.”h]”(hŒAtomically sets ”…”�”}”(hjð h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð ubhŒ to ”…”�”}”(hjð h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjð ubhŒ with release ordering.”…”�”}”(hjð h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´ML hjA ubjM)�”}”(hŒESafe to use in noinstr code; prefer atomic64_set_release() elsewhere.”h]”hŒESafe to use in noinstr code; prefer atomic64_set_release() elsewhere.”…”�”}”(hj#!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MN hjA ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj4!h]”hŒReturn”…”�”}”(hj6!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MP hjA ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjJ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MQ hjA ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic64_add (C function)”Œc.raw_atomic64_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,void raw_atomic64_add (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ+void raw_atomic64_add(s64 i, atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjy!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhju!h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mc ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhju!h²hh³j‡!h´Mc ubhÿ)�”}”(hŒraw_atomic64_add”h]”j)�”}”(hŒraw_atomic64_add”h]”hŒraw_atomic64_add”…”�”}”(hjš!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–!ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhju!h²hh³j‡!h´Mc ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¹!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j»!Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjœ!sbŒc.raw_atomic64_add”†”asbuh1hhj²!ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²!ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjç!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®!ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿ!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j"Œmodname”NŒ classname”Njwjz)�”}”j}]”jÕ!Œc.raw_atomic64_add”†”asbuh1hhjû!ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjû!ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj."h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjû!ubj)�”}”(hjph]”hŒv”…”�”}”(hj;"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjû!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®!ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hju!h²hh³j‡!h´Mc ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjq!h²hh³j‡!h´Mc ubah}”(h]”jl!ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‡!h´Mc hjn!h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hjd"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mc hja"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjn!h²hh³j‡!h´Mc ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj|"jHj|"jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_add() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mg hj€"ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj¥"h]”hŒs64 i”…”�”}”(hj§"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Md hjŸ"ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj¾"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jº"h´Md hj»"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŸ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jº"h´Md hjœ"ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÞ"h]”hŒ atomic64_t *v”…”�”}”(hjà"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÜ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Me hjØ"ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj÷"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jó"h´Me hjô"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjØ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jó"h´Me hjœ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj€"ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mg hj€"ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj/#h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj7#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/#ubhŒ to (”…”�”}”(hj/#h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjI#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/#ubhŒ + ”…”�”}”(hj/#h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj[#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/#ubhŒ) with relaxed ordering.”…”�”}”(hj/#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mf hj€"ubjM)�”}”(hŒ=Safe to use in noinstr code; prefer atomic64_add() elsewhere.”h]”hŒ=Safe to use in noinstr code; prefer atomic64_add() elsewhere.”…”�”}”(hjt#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mh hj€"ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj…#h]”hŒReturn”…”�”}”(hj‡#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mj hj€"ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj›#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mk hj€"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic64_add_return (C function)”Œc.raw_atomic64_add_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 raw_atomic64_add_return (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ1s64 raw_atomic64_add_return(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÍ#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊ#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÏ#Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_add_return”sbŒc.raw_atomic64_add_return”†”asbuh1hhjÆ#h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mt ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆ#h²hh³jî#h´Mt ubhÿ)�”}”(hŒraw_atomic64_add_return”h]”j)�”}”(hjë#h]”hŒraw_atomic64_add_return”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjý#ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÆ#h²hh³jî#h´Mt ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j!$Œmodname”NŒ classname”Njwjz)�”}”j}]”jé#Œc.raw_atomic64_add_return”†”asbuh1hhj$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjK$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj$ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjf$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjc$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jh$Œmodname”NŒ classname”Njwjz)�”}”j}]”jé#Œc.raw_atomic64_add_return”†”asbuh1hhj_$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj_$ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj’$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj_$ubj)�”}”(hjph]”hŒv”…”�”}”(hjŸ$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj$ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÆ#h²hh³jî#h´Mt ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÂ#h²hh³jî#h´Mt ubah}”(h]”j½#ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jî#h´Mt hj¿#h²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hjÈ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mt hjÅ$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¿#h²hh³jî#h´Mt ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjà$jHjà$jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Safe to use in noinstr code; prefer atomic64_add_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mx hjä$ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj %h]”hŒs64 i”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mu hj%ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj"%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j%h´Mu hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j%h´Mu hj%ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjB%h]”hŒ atomic64_t *v”…”�”}”(hjD%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj@%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mv hj<%ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj[%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jW%h´Mv hjX%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj<%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jW%h´Mv hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjä$ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mx hjä$ubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj“%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj›%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“%ubhŒ to (”…”�”}”(hj“%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj­%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“%ubhŒ + ”…”�”}”(hj“%h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¿%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“%ubhŒ) with full ordering.”…”�”}”(hj“%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mw hjä$ubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic64_add_return() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic64_add_return() elsewhere.”…”�”}”(hjØ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´My hjä$ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjé%h]”hŒReturn”…”�”}”(hjë%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjç%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M{ hjä$ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÿ%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿ%ubhŒ.”…”�”}”(hjÿ%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M| hjä$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_add_return_acquire (C function)”Œ!c.raw_atomic64_add_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:s64 raw_atomic64_add_return_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ9s64 raw_atomic64_add_return_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjC&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jE&Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_add_return_acquire”sbŒ!c.raw_atomic64_add_return_acquire”†”asbuh1hhj<&h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj<&h²hh³jd&h´M� ubhÿ)�”}”(hŒraw_atomic64_add_return_acquire”h]”j)�”}”(hja&h]”hŒraw_atomic64_add_return_acquire”…”�”}”(hjw&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs&ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj<&h²hh³jd&h´M� ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj•&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j—&Œmodname”NŒ classname”Njwjz)�”}”j}]”j_&Œ!c.raw_atomic64_add_return_acquire”†”asbuh1hhjŽ&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽ&ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÁ&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŠ&ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÜ&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙ&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÞ&Œmodname”NŒ classname”Njwjz)�”}”j}]”j_&Œ!c.raw_atomic64_add_return_acquire”†”asbuh1hhjÕ&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÕ&ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÕ&ubj)�”}”(hjph]”hŒv”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕ&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŠ&ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj<&h²hh³jd&h´M� ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj8&h²hh³jd&h´M� ubah}”(h]”j3&ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jd&h´M� hj5&h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hj>'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hj;'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj5&h²hh³jd&h´M� ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjV'jHjV'jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX#**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic64_add_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj`'h]”hŒ Parameters”…”�”}”(hjb'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M“ hjZ'ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj'h]”hŒs64 i”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj}'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hjy'ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj˜'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j”'h´M� hj•'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjy'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”'h´M� hjv'ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¸'h]”hŒ atomic64_t *v”…”�”}”(hjº'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¶'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‘ hj²'ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÑ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÍ'h´M‘ hjÎ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj²'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÍ'h´M‘ hjv'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjZ'ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M“ hjZ'ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj (h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj (ubhŒ to (”…”�”}”(hj (h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj#(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj (ubhŒ + ”…”�”}”(hj (h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj5(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj (ubhŒ) with acquire ordering.”…”�”}”(hj (h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M’ hjZ'ubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_add_return_acquire() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_add_return_acquire() elsewhere.”…”�”}”(hjN(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M” hjZ'ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj_(h]”hŒReturn”…”�”}”(hja(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj](ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M– hjZ'ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hju(h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj}(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hju(ubhŒ.”…”�”}”(hju(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M— hjZ'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_add_return_release (C function)”Œ!c.raw_atomic64_add_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:s64 raw_atomic64_add_return_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ9s64 raw_atomic64_add_return_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¹(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j»(Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_add_return_release”sbŒ!c.raw_atomic64_add_return_release”†”asbuh1hhj²(h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mª ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ(h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²(h²hh³jÚ(h´Mª ubhÿ)�”}”(hŒraw_atomic64_add_return_release”h]”j)�”}”(hj×(h]”hŒraw_atomic64_add_return_release”…”�”}”(hjí(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé(ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj²(h²hh³jÚ(h´Mª ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j )Œmodname”NŒ classname”Njwjz)�”}”j}]”jÕ(Œ!c.raw_atomic64_add_return_release”†”asbuh1hhj)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj))h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj7)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj)ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjR)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jT)Œmodname”NŒ classname”Njwjz)�”}”j}]”jÕ(Œ!c.raw_atomic64_add_return_release”†”asbuh1hhjK)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjK)ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj~)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjK)ubj)�”}”(hjph]”hŒv”…”�”}”(hj‹)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj)ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj²(h²hh³jÚ(h´Mª ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj®(h²hh³jÚ(h´Mª ubah}”(h]”j©(ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÚ(h´Mª hj«(h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hj´)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mª hj±)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj«(h²hh³jÚ(h´Mª ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÌ)jHjÌ)jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX#**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Safe to use in noinstr code; prefer atomic64_add_return_release() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M® hjÐ)ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjõ)h]”hŒs64 i”…”�”}”(hj÷)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjó)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M« hjï)ubjÉ)�”}”(•hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj.*h]”hŒ atomic64_t *v”…”�”}”(hj0*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj,*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¬ hj(*ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjG*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jC*h´M¬ hjD*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj(*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jC*h´M¬ hjì)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÐ)ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hji*h]”hŒ Description”…”�”}”(hjk*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjg*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M® hjÐ)ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj*h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‡*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*ubhŒ to (”…”�”}”(hj*h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*ubhŒ + ”…”�”}”(hj*h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj«*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*ubhŒ) with release ordering.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M­ hjÐ)ubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_add_return_release() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_add_return_release() elsewhere.”…”�”}”(hjÄ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¯ hjÐ)ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÕ*h]”hŒReturn”…”�”}”(hj×*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M± hjÐ)ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjë*h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjó*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjë*ubhŒ.”…”�”}”(hjë*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M² hjÐ)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_add_return_relaxed (C function)”Œ!c.raw_atomic64_add_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:s64 raw_atomic64_add_return_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ9s64 raw_atomic64_add_return_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj/+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j1+Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_add_return_relaxed”sbŒ!c.raw_atomic64_add_return_relaxed”†”asbuh1hhj(+h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÄ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj(+h²hh³jP+h´MÄ ubhÿ)�”}”(hŒraw_atomic64_add_return_relaxed”h]”j)�”}”(hjM+h]”hŒraw_atomic64_add_return_relaxed”…”�”}”(hjc+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_+ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj(+h²hh³jP+h´MÄ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jƒ+Œmodname”NŒ classname”Njwjz)�”}”j}]”jK+Œ!c.raw_atomic64_add_return_relaxed”†”asbuh1hhjz+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjz+ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj­+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjv+ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÈ+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅ+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÊ+Œmodname”NŒ classname”Njwjz)�”}”j}]”jK+Œ!c.raw_atomic64_add_return_relaxed”†”asbuh1hhjÁ+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁ+ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjô+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÁ+ubj)�”}”(hjph]”hŒv”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁ+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjv+ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj(+h²hh³jP+h´MÄ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj$+h²hh³jP+h´MÄ ubah}”(h]”j+ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jP+h´MÄ hj!+h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj*,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÄ hj',h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj!+h²hh³jP+h´MÄ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjB,jHjB,jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX#**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_add_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjL,h]”hŒ Parameters”…”�”}”(hjN,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÈ hjF,ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjk,h]”hŒs64 i”…”�”}”(hjm,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhji,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÅ hje,ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj„,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€,h´MÅ hj�,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhje,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€,h´MÅ hjb,ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¤,h]”hŒ atomic64_t *v”…”�”}”(hj¦,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¢,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÆ hjž,ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj½,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¹,h´MÆ hjº,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjž,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¹,h´MÆ hjb,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjF,ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÈ hjF,ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjõ,h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjý,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõ,ubhŒ to (”…”�”}”(hjõ,h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõ,ubhŒ + ”…”�”}”(hjõ,h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj!-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõ,ubhŒ) with relaxed ordering.”…”�”}”(hjõ,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÇ hjF,ubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_add_return_relaxed() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_add_return_relaxed() elsewhere.”…”�”}”(hj:-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÉ hjF,ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjK-h]”hŒReturn”…”�”}”(hjM-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MË hjF,ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hja-h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hji-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja-ubhŒ.”…”�”}”(hja-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÌ hjF,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#raw_atomic64_fetch_add (C function)”Œc.raw_atomic64_fetch_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1s64 raw_atomic64_fetch_add (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ0s64 raw_atomic64_fetch_add(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¥-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j§-Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_add”sbŒc.raw_atomic64_fetch_add”†”asbuh1hhjž-h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÛ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ-h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjž-h²hh³jÆ-h´MÛ ubhÿ)�”}”(hŒraw_atomic64_fetch_add”h]”j)�”}”(hjÃ-h]”hŒraw_atomic64_fetch_add”…”�”}”(hjÙ-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕ-ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjž-h²hh³jÆ-h´MÛ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj÷-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jù-Œmodname”NŒ classname”Njwjz)�”}”j}]”jÁ-Œc.raw_atomic64_fetch_add”†”asbuh1hhjð-ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjð-ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj#.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjð-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjì-ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj>.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j@.Œmodname”NŒ classname”Njwjz)�”}”j}]”jÁ-Œc.raw_atomic64_fetch_add”†”asbuh1hhj7.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7.ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjj.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj7.ubj)�”}”(hjph]”hŒv”…”�”}”(hjw.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjì-ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjž-h²hh³jÆ-h´MÛ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjš-h²hh³jÆ-h´MÛ ubah}”(h]”j•-ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÆ-h´MÛ hj—-h²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÛ hj�.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj—-h²hh³jÆ-h´MÛ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¸.jHj¸.jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Safe to use in noinstr code; prefer atomic64_fetch_add() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mß hj¼.ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjá.h]”hŒs64 i”…”�”}”(hjã.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjß.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÜ hjÛ.ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hjú.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj/h]”hŒ atomic64_t *v”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝ hj/ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj3/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j//h´MÝ hj0/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£hj¼.ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjU/h]”hŒ Description”…”�”}”(hjW/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjS/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mß hj¼.ubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjk/h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjs/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk/ubhŒ to (”…”�”}”(hjk/h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj…/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk/ubhŒ + ”…”�”}”(hjk/h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj—/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk/ubhŒ) with full ordering.”…”�”}”(hjk/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÞ hj¼.ubjM)�”}”(hŒCSafe to use in noinstr code; prefer atomic64_fetch_add() elsewhere.”h]”hŒCSafe to use in noinstr code; prefer atomic64_fetch_add() elsewhere.”…”�”}”(hj°/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mà hj¼.ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÁ/h]”hŒReturn”…”�”}”(hjÃ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mâ hj¼.ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj×/h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjß/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×/ubhŒ.”…”�”}”(hj×/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mã hj¼.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_add_acquire (C function)”Œ c.raw_atomic64_fetch_add_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_add_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_add_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j0Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_add_acquire”sbŒ c.raw_atomic64_fetch_add_acquire”†”asbuh1hhj0h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mö ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0h²hh³j<0h´Mö ubhÿ)�”}”(hŒraw_atomic64_fetch_add_acquire”h]”j)�”}”(hj90h]”hŒraw_atomic64_fetch_add_acquire”…”�”}”(hjO0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK0ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0h²hh³j<0h´Mö ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjm0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jo0Œmodname”NŒ classname”Njwjz)�”}”j}]”j70Œ c.raw_atomic64_fetch_add_acquire”†”asbuh1hhjf0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjf0ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj™0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjb0ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj´0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¶0Œmodname”NŒ classname”Njwjz)�”}”j}]”j70Œ c.raw_atomic64_fetch_add_acquire”†”asbuh1hhj­0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­0ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjà0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj­0ubj)�”}”(hjph]”hŒv”…”�”}”(hjí0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjb0ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj0h²hh³j<0h´Mö ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj0h²hh³j<0h´Mö ubah}”(h]”j 0ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j<0h´Mö hj 0h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mö hj1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj 0h²hh³j<0h´Mö ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj.1jHj.1jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX#**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic64_fetch_add_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj81h]”hŒ Parameters”…”�”}”(hj:1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj61ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mú hj21ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjW1h]”hŒs64 i”…”�”}”(hjY1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjU1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M÷ hjQ1ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hjp1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jl1h´M÷ hjm1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jl1h´M÷ hjN1ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj�1h]”hŒ atomic64_t *v”…”�”}”(hj’1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŽ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mø hjŠ1ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj©1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¥1h´Mø hj¦1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŠ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¥1h´Mø hjN1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj21ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjË1h]”hŒ Description”…”�”}”(hjÍ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mú hj21ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjá1h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjé1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjá1ubhŒ to (”…”�”}”(hjá1h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjû1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjá1ubhŒ + ”…”�”}”(hjá1h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjá1ubhŒ) with acquire ordering.”…”�”}”(hjá1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mù hj21ubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_add_acquire() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_add_acquire() elsewhere.”…”�”}”(hj&2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mû hj21ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj72h]”hŒReturn”…”�”}”(hj92h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj52ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mý hj21ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjM2h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjU2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM2ubhŒ.”…”�”}”(hjM2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mþ hj21ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_add_release (C function)”Œ c.raw_atomic64_fetch_add_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_add_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_add_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj‘2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j“2Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_add_release”sbŒ c.raw_atomic64_fetch_add_release”†”asbuh1hhjŠ2h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠ2h²hh³j²2h´M ubhÿ)�”}”(hŒraw_atomic64_fetch_add_release”h]”j)�”}”(hj¯2h]”hŒraw_atomic64_fetch_add_release”…”�”}”(hjÅ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁ2ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŠ2h²hh³j²2h´M ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjã2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjà2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jå2Œmodname”NŒ classname”Njwjz)�”}”j}]”j­2Œ c.raw_atomic64_fetch_add_release”†”asbuh1hhjÜ2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜ2ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜ2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjØ2ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj*3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j,3Œmodname”NŒ classname”Njwjz)�”}”j}]”j­2Œ c.raw_atomic64_fetch_add_release”†”asbuh1hhj#3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#3ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjV3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj#3ubj)�”}”(hjph]”hŒv”…”�”}”(hjc3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjØ2ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŠ2h²hh³j²2h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj†2h²hh³j²2h´M ubah}”(h]”j�2ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j²2h´M hjƒ2h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hjŒ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj‰3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjƒ2h²hh³j²2h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¤3jHj¤3jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX#**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Safe to use in noinstr code; prefer atomic64_fetch_add_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj®3h]”hŒ Parameters”…”�”}”(hj°3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj¨3ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjÍ3h]”hŒs64 i”…”�”}”(hjÏ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjË3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjÇ3ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hjæ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jâ3h´M hjã3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÇ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jâ3h´M hjÄ3ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj4h]”hŒ atomic64_t *v”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj4ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4h´M hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4h´M hjÄ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¨3ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjA4h]”hŒ Description”…”�”}”(hjC4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj¨3ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjW4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj_4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW4ubhŒ to (”…”�”}”(hjW4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjq4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW4ubhŒ + ”…”�”}”(hjW4h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjƒ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW4ubhŒ) with release ordering.”…”�”}”(hjW4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj¨3ubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_add_release() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_add_release() elsewhere.”…”�”}”(hjœ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj¨3ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj­4h]”hŒReturn”…”�”}”(hj¯4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj¨3ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÃ4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjË4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÃ4ubhŒ.”…”�”}”(hjÃ4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj¨3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_add_relaxed (C function)”Œ c.raw_atomic64_fetch_add_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_add_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_add_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j 5Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_add_relaxed”sbŒ c.raw_atomic64_fetch_add_relaxed”†”asbuh1hhj5h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M+ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5h²hh³j(5h´M+ ubhÿ)�”}”(hŒraw_atomic64_fetch_add_relaxed”h]”j)�”}”(hj%5h]”hŒraw_atomic64_fetch_add_relaxed”…”�”}”(hj;5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj75ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj5h²hh³j(5h´M+ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjY5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjV5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j[5Œmodname”NŒ classname”Njwjz)�”}”j}]”j#5Œ c.raw_atomic64_fetch_add_relaxed”†”asbuh1hhjR5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjR5ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj…5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjR5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjN5ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¢5Œmodname”NŒ classname”Njwjz)�”}”j}]”j#5Œ c.raw_atomic64_fetch_add_relaxed”†”asbuh1hhj™5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™5ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÌ5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj™5ubj)�”}”(hjph]”hŒv”…”�”}”(hjÙ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjN5ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj5h²hh³j(5h´M+ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjü4h²hh³j(5h´M+ ubah}”(h]”j÷4ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j(5h´M+ hjù4h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M+ hjÿ5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjù4h²hh³j(5h´M+ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj6jHj6jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX#**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_fetch_add_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj$6h]”hŒ Parameters”…”�”}”(hj&6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M/ hj6ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjC6h]”hŒs64 i”…”�”}”(hjE6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjA6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M, hj=6ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj\6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jX6h´M, hjY6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jX6h´M, hj:6ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj|6h]”hŒ atomic64_t *v”…”�”}”(hj~6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjz6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M- hjv6ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj•6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‘6h´M- hj’6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjv6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‘6h´M- hj:6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj6ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj·6h]”hŒ Description”…”�”}”(hj¹6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M/ hj6ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÍ6h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÕ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍ6ubhŒ to (”…”�”}”(hjÍ6h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjç6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍ6ubhŒ + ”…”�”}”(hjÍ6h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjù6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍ6ubhŒ) with relaxed ordering.”…”�”}”(hjÍ6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M. hj6ubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_add_relaxed() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_add_relaxed() elsewhere.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M0 hj6ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj#7h]”hŒReturn”…”�”}”(hj%7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M2 hj6ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj97h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjA7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj97ubhŒ.”…”�”}”(hj97h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M3 hj6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic64_sub (C function)”Œc.raw_atomic64_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,void raw_atomic64_sub (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ+void raw_atomic64_sub(s64 i, atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjz7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjv7h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MB ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjv7h²hh³jˆ7h´MB ubhÿ)�”}”(hŒraw_atomic64_sub”h]”j)�”}”(hŒraw_atomic64_sub”h]”hŒraw_atomic64_sub”…”�”}”(hj›7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—7ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjv7h²hh³jˆ7h´MB ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjº7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¼7Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj�7sbŒc.raw_atomic64_sub”†”asbuh1hhj³7ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj³7ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjè7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¯7ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j8Œmodname”NŒ classname”Njwjz)�”}”j}]”jÖ7Œc.raw_atomic64_sub”†”asbuh1hhjü7ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjü7ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj/8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjü7ubj)�”}”(hjph]”hŒv”…”�”}”(hj<8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¯7ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjv7h²hh³jˆ7h´MB ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjr7h²hh³jˆ7h´MB ubah}”(h]”jm7ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jˆ7h´MB hjo7h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hje8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MB hjb8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjo7h²hh³jˆ7h´MB ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj}8jHj}8jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_sub() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj‡8h]”hŒ Parameters”…”�”}”(hj‰8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj…8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MF hj�8ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj¦8h]”hŒs64 i”…”�”}”(hj¨8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¤8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MC hj 8ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj¿8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j»8h´MC hj¼8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj 8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j»8h´MC hj�8ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjß8h]”hŒ atomic64_t *v”…”�”}”(hjá8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÝ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MD hjÙ8ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjø8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jô8h´MD hjõ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÙ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jô8h´MD hj�8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�8ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj9h]”hŒ Description”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MF hj�8ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj09h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj89h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj09ubhŒ to (”…”�”}”(hj09h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj09ubhŒ - ”…”�”}”(hj09h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj\9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj09ubhŒ) with relaxed ordering.”…”�”}”(hj09h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´ME hj�8ubjM)�”}”(hŒ=Safe to use in noinstr code; prefer atomic64_sub() elsewhere.”h]”hŒ=Safe to use in noinstr code; prefer atomic64_sub() elsewhere.”…”�”}”(hju9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MG hj�8ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj†9h]”hŒReturn”…”�”}”(hjˆ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MI hj�8ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjœ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MJ hj�8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic64_sub_return (C function)”Œc.raw_atomic64_sub_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 raw_atomic64_sub_return (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ1s64 raw_atomic64_sub_return(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÎ9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjË9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÐ9Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_sub_return”sbŒc.raw_atomic64_sub_return”†”asbuh1hhjÇ9h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MS ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇ9h²hh³jï9h´MS ubhÿ)�”}”(hŒraw_atomic64_sub_return”h]”j)�”}”(hjì9h]”hŒraw_atomic64_sub_return”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ9ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÇ9h²hh³jï9h´MS ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j":Œmodname”NŒ classname”Njwjz)�”}”j}]”jê9Œc.raw_atomic64_sub_return”†”asbuh1hhj:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjL:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjg:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”ji:Œmodname”NŒ classname”Njwjz)�”}”j}]”jê9Œc.raw_atomic64_sub_return”†”asbuh1hhj`:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`:ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj“:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj`:ubj)�”}”(hjph]”hŒv”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj:ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÇ9h²hh³jï9h´MS ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÃ9h²hh³jï9h´MS ubah}”(h]”j¾9ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jï9h´MS hjÀ9h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(hjÉ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MS hjÆ:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÀ9h²hh³jï9h´MS ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjá:jHjá:jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Safe to use in noinstr code; prefer atomic64_sub_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MW hjå:ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj ;h]”hŒs64 i”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MT hj;ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj#;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j;h´MT hj ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j;h´MT hj;ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjC;h]”hŒ atomic64_t *v”…”�”}”(hjE;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjA;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MU hj=;ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj\;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jX;h´MU hjY;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jX;h´MU hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjå:ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MW hjå:ubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj”;h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjœ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”;ubhŒ to (”…”�”}”(hj”;h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj®;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”;ubhŒ - ”…”�”}”(hj”;h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÀ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”;ubhŒ) with full ordering.”…”�”}”(hj”;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MV hjå:ubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic64_sub_return() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic64_sub_return() elsewhere.”…”�”}”(hjÙ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MX hjå:ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjê;h]”hŒReturn”…”�”}”(hjì;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjè;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MZ hjå:ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj<h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<ubhŒ.”…”�”}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M[ hjå:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_sub_return_acquire (C function)”Œ!c.raw_atomic64_sub_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:s64 raw_atomic64_sub_return_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ9s64 raw_atomic64_sub_return_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjD<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjA<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jF<Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_sub_return_acquire”sbŒ!c.raw_atomic64_sub_return_acquire”†”asbuh1hhj=<h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mn ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj=<h²hh³je<h´Mn ubhÿ)�”}”(hŒraw_atomic64_sub_return_acquire”h]”j)�”}”(hjb<h]”hŒraw_atomic64_sub_return_acquire”…”�”}”(hjx<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt<ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj=<h²hh³je<h´Mn ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj–<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j˜<Œmodname”NŒ classname”Njwjz)�”}”j}]”j`<Œ!c.raw_atomic64_sub_return_acquire”†”asbuh1hhj�<ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�<ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÂ<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‹<ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÝ<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jß<Œmodname”NŒ classname”Njwjz)�”}”j}]”j`<Œ!c.raw_atomic64_sub_return_acquire”†”asbuh1hhjÖ<ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖ<ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÖ<ubj)�”}”(hjph]”hŒv”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‹<ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj=<h²hh³je<h´Mn ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj9<h²hh³je<h´Mn ubah}”(h]”j4<ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³je<h´Mn hj6<h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hj?=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mn hj<=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj6<h²hh³je<h´Mn ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjW=jHjW=jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX(**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic64_sub_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hja=h]”hŒ Parameters”…”�”}”(hjc=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mr hj[=ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj€=h]”hŒs64 i”…”�”}”(hj‚=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj~=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mo hjz=ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj™=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j•=h´Mo hj–=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjz=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j•=h´Mo hjw=ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¹=h]”hŒ atomic64_t *v”…”�”}”(hj»=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj·=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mp hj³=ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÒ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÎ=h´Mp hjÏ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj³=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÎ=h´Mp hjw=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj[=ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mr hj[=ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj >h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj >ubhŒ to (”…”�”}”(hj >h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj$>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj >ubhŒ - ”…”�”}”(hj >h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj6>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj >ubhŒ) with acquire ordering.”…”�”}”(hj >h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mq hj[=ubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_sub_return_acquire() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_sub_return_acquire() elsewhere.”…”�”}”(hjO>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Ms hj[=ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj`>h]”hŒReturn”…”�”}”(hjb>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mu hj[=ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjv>h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj~>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjv>ubhŒ.”…”�”}”(hjv>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mv hj[=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_sub_return_release (C function)”Œ!c.raw_atomic64_sub_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:s64 raw_atomic64_sub_return_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ9s64 raw_atomic64_sub_return_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjº>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¼>Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_sub_return_release”sbŒ!c.raw_atomic64_sub_return_release”†”asbuh1hhj³>h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‰ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ>h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj³>h²hh³jÛ>h´M‰ ubhÿ)�”}”(hŒraw_atomic64_sub_return_release”h]”j)�”}”(hjØ>h]”hŒraw_atomic64_sub_return_release”…”�”}”(hjî>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjê>ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj³>h²hh³jÛ>h´M‰ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j?Œmodname”NŒ classname”Njwjz)�”}”j}]”jÖ>Œ!c.raw_atomic64_sub_return_release”†”asbuh1hhj?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj8?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjS?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jU?Œmodname”NŒ classname”Njwjz)�”}”j}]”jÖ>Œ!c.raw_atomic64_sub_return_release”†”asbuh1hhjL?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjL?ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjL?ubj)�”}”(hjph]”hŒv”…”�”}”(hjŒ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjL?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj³>h²hh³jÛ>h´M‰ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¯>h²hh³jÛ>h´M‰ ubah}”(h]”jª>ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÛ>h´M‰ hj¬>h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hjµ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‰ hj²?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¬>h²hh³jÛ>h´M‰ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÍ?jHjÍ?jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX(**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Safe to use in noinstr code; prefer atomic64_sub_return_release() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hjÑ?ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjö?h]”hŒs64 i”…”�”}”(hjø?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjô?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŠ hjð?ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j @h´MŠ hj @ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjð?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j @h´MŠ h•djí?ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj/@h]”hŒ atomic64_t *v”…”�”}”(hj1@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj-@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‹ hj)@ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjH@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jD@h´M‹ hjE@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj)@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jD@h´M‹ hjí?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÑ?ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjj@h]”hŒ Description”…”�”}”(hjl@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hjÑ?ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj€@h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjˆ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€@ubhŒ to (”…”�”}”(hj€@h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjš@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€@ubhŒ - ”…”�”}”(hj€@h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¬@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€@ubhŒ) with release ordering.”…”�”}”(hj€@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒ hjÑ?ubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_sub_return_release() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_sub_return_release() elsewhere.”…”�”}”(hjÅ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŽ hjÑ?ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÖ@h]”hŒReturn”…”�”}”(hjØ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hjÑ?ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjì@h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjô@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjì@ubhŒ.”…”�”}”(hjì@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‘ hjÑ?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_sub_return_relaxed (C function)”Œ!c.raw_atomic64_sub_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:s64 raw_atomic64_sub_return_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ9s64 raw_atomic64_sub_return_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj0Ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j2AŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_sub_return_relaxed”sbŒ!c.raw_atomic64_sub_return_relaxed”†”asbuh1hhj)Ah²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M£ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRAh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)Ah²hh³jQAh´M£ ubhÿ)�”}”(hŒraw_atomic64_sub_return_relaxed”h]”j)�”}”(hjNAh]”hŒraw_atomic64_sub_return_relaxed”…”�”}”(hjdAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`Aubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj)Ah²hh³jQAh´M£ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj‚Ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j„AŒmodname”NŒ classname”Njwjz)�”}”j}]”jLAŒ!c.raw_atomic64_sub_return_relaxed”†”asbuh1hhj{AubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{Aubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj®Ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjwAubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÉAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jËAŒmodname”NŒ classname”Njwjz)�”}”j}]”jLAŒ!c.raw_atomic64_sub_return_relaxed”†”asbuh1hhjÂAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçAh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÂAubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjõAh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÂAubj)�”}”(hjph]”hŒv”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjwAubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj)Ah²hh³jQAh´M£ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj%Ah²hh³jQAh´M£ ubah}”(h]”j Aah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jQAh´M£ hj"Ah²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hj+Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M£ hj(Bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj"Ah²hh³jQAh´M£ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjCBjHjCBjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX(**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_sub_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjMBh]”hŒ Parameters”…”�”}”(hjOBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKBubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M§ hjGBubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjlBh]”hŒs64 i”…”�”}”(hjnBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¤ hjfBubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj…Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�Bh´M¤ hj‚Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjfBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Bh´M¤ hjcBubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¥Bh]”hŒ atomic64_t *v”…”�”}”(hj§Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj£Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¥ hjŸBubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj¾Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jºBh´M¥ hj»Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŸBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jºBh´M¥ hjcBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjGBubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjàBh]”hŒ Description”…”�”}”(hjâBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞBubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M§ hjGBubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjöBh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjþBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjöBubhŒ to (”…”�”}”(hjöBh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjöBubhŒ - ”…”�”}”(hjöBh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj"Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjöBubhŒ) with relaxed ordering.”…”�”}”(hjöBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¦ hjGBubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_sub_return_relaxed() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_sub_return_relaxed() elsewhere.”…”�”}”(hj;Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¨ hjGBubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjLCh]”hŒReturn”…”�”}”(hjNCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJCubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mª hjGBubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjbCh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbCubhŒ.”…”�”}”(hjbCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M« hjGBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#raw_atomic64_fetch_sub (C function)”Œc.raw_atomic64_fetch_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1s64 raw_atomic64_fetch_sub (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ0s64 raw_atomic64_fetch_sub(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¦Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¨CŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_sub”sbŒc.raw_atomic64_fetch_sub”†”asbuh1hhjŸCh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mº ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈCh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŸCh²hh³jÇCh´Mº ubhÿ)�”}”(hŒraw_atomic64_fetch_sub”h]”j)�”}”(hjÄCh]”hŒraw_atomic64_fetch_sub”…”�”}”(hjÚCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖCubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŸCh²hh³jÇCh´Mº ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjøCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”júCŒmodname”NŒ classname”Njwjz)�”}”j}]”jÂCŒc.raw_atomic64_fetch_sub”†”asbuh1hhjñCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjñCubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj$Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjíCubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj?Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjFh²hh³j=Fh´MÕ ubhÿ)�”}”(hŒraw_atomic64_fetch_sub_acquire”h]”j)�”}”(hj:Fh]”hŒraw_atomic64_fetch_sub_acquire”…”�”}”(hjPFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLFubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjFh²hh³j=Fh´MÕ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjnFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jpFŒmodname”NŒ classname”Njwjz)�”}”j}]”j8FŒ c.raw_atomic64_fetch_sub_acquire”†”asbuh1hhjgFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjgFubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjšFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjcFubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjµFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j·FŒmodname”NŒ classname”Njwjz)�”}”j}]”j8FŒ c.raw_atomic64_fetch_sub_acquire”†”asbuh1hhj®FubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj®Fubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjáFh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj®Fubj)�”}”(hjph]”hŒv”…”�”}”(hjîFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjcFubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjFh²hh³j=Fh´MÕ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjFh²hh³j=Fh´MÕ ubah}”(h]”j Fah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j=Fh´MÕ hjFh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÕ hjGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjFh²hh³j=Fh´MÕ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj/GjHj/GjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX(**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic64_fetch_sub_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj9Gh]”hŒ Parameters”…”�”}”(hj;Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÙ hj3Gubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjXGh]”hŒs64 i”…”�”}”(hjZGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjVGubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÖ hjRGubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hjqGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmGh´MÖ hjnGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmGh´MÖ hjOGubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj‘Gh]”hŒ atomic64_t *v”…”�”}”(hj“Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M× hj‹GubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjªGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¦Gh´M× hj§Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‹Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¦Gh´M× hjOGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj3GubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÌGh]”hŒ Description”…”�”}”(hjÎGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊGubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÙ hj3GubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjâGh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjêGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâGubhŒ to (”…”�”}”(hjâGh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjüGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâGubhŒ - ”…”�”}”(hjâGh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâGubhŒ) with acquire ordering.”…”�”}”(hjâGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MØ hj3GubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_sub_acquire() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_sub_acquire() elsewhere.”…”�”}”(hj'Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÚ hj3GubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj8Hh]”hŒReturn”…”�”}”(hj:Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÜ hj3GubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjNHh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjVHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNHubhŒ.”…”�”}”(hjNHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝ hj3Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_sub_release (C function)”Œ c.raw_atomic64_fetch_sub_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_sub_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_sub_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj’Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j”HŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_sub_release”sbŒ c.raw_atomic64_fetch_sub_release”†”asbuh1hhj‹Hh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mð ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‹Hh²hh³j³Hh´Mð ubhÿ)�”}”(hŒraw_atomic64_fetch_sub_release”h]”j)�”}”(hj°Hh]”hŒraw_atomic64_fetch_sub_release”…”�”}”(hjÆHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂHubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‹Hh²hh³j³Hh´Mð ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjäHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jæHŒmodname”NŒ classname”Njwjz)�”}”j}]”j®HŒ c.raw_atomic64_fetch_sub_release”†”asbuh1hhjÝHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝHubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙHubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj+Ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(Iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j-IŒmodname”NŒ classname”Njwjz)�”}”j}]”j®HŒ c.raw_atomic64_fetch_sub_release”†”asbuh1hhj$IubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIIh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$Iubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjWIh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj$Iubj)�”}”(hjph]”hŒv”…”�”}”(hjdIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙHubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‹Hh²hh³j³Hh´Mð ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‡Hh²hh³j³Hh´Mð ubah}”(h]”j‚Hah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j³Hh´Mð hj„Hh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mð hjŠIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj„Hh²hh³j³Hh´Mð ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¥IjHj¥IjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX(**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Safe to use in noinstr code; prefer atomic64_fetch_sub_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj¯Ih]”hŒ Parameters”…”�”}”(hj±Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj­Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mô hj©Iubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjÎIh]”hŒs64 i”…”�”}”(hjÐIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÌIubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mñ hjÈIubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hjçIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jãIh´Mñ hjäIubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÈIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jãIh´Mñ hjÅIubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjJh]”hŒ atomic64_t *v”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mò hjJubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJh´Mò hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJh´Mò hjÅIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj©IubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjBJh]”hŒ Description”…”�”}”(hjDJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mô hj©IubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjXJh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXJubhŒ to (”…”�”}”(hjXJh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjrJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXJubhŒ - ”…”�”}”(hjXJh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj„Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXJubhŒ) with release ordering.”…”�”}”(hjXJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mó hj©IubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_sub_release() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_sub_release() elsewhere.”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mõ hj©IubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj®Jh]”hŒReturn”…”�”}”(hj°Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M÷ hj©IubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÄJh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÌJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÄJubhŒ.”…”�”}”(hjÄJh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mø hj©Iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_sub_relaxed (C function)”Œ c.raw_atomic64_fetch_sub_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_sub_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j KŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_sub_relaxed”sbŒ c.raw_atomic64_fetch_sub_relaxed”†”asbuh1hhjKh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjKh²hh³j)Kh´M ubhÿ)�”}”(hŒraw_atomic64_fetch_sub_relaxed”h]”j)�”}”(hj&Kh]”hŒraw_atomic64_fetch_sub_relaxed”…”�”}”(hjLubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hj]Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jYLh´M hjZLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj>Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jYLh´M hj;Lubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj}Lh]”hŒ atomic64_t *v”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjwLubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj–Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j’Lh´M hj“Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjwLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’Lh´M hj;Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjLubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj¸Lh]”hŒ Description”…”�”}”(hjºLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjLubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÎLh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÖLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎLubhŒ to (”…”�”}”(hjÎLh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjèLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎLubhŒ - ”…”�”}”(hjÎLh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjúLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎLubhŒ) with relaxed ordering.”…”�”}”(hjÎLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjLubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_sub_relaxed() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_sub_relaxed() elsewhere.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjLubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj$Mh]”hŒReturn”…”�”}”(hj&Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjLubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj:Mh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjBMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:MubhŒ.”…”�”}”(hj:Mh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic64_inc (C function)”Œc.raw_atomic64_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ%void raw_atomic64_inc (atomic64_t *v)”h]”hù)�”}”(hŒ$void raw_atomic64_inc(atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj{Mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjwMh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M! ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠMh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjwMh²hh³j‰Mh´M! ubhÿ)�”}”(hŒraw_atomic64_inc”h]”j)�”}”(hŒraw_atomic64_inc”h]”hŒraw_atomic64_inc”…”�”}”(hjœMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜Mubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjwMh²hh³j‰Mh´M! ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj»Mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j½MŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjžMsbŒc.raw_atomic64_inc”†”asbuh1hhj´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛMh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´Mubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjéMh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj´Mubj)�”}”(hjph]”hŒv”…”�”}”(hjöMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj°Mubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjwMh²hh³j‰Mh´M! ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjsMh²hh³j‰Mh´M! ubah}”(h]”jnMah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‰Mh´M! hjpMh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M! hjNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjpMh²hh³j‰Mh´M! ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj7NjHj7NjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒß**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_inc() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjANh]”hŒ Parameters”…”�”}”(hjCNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M% hj;Nubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj`Nh]”hŒ atomic64_t *v”…”�”}”(hjbNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj^Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M" hjZNubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjyNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³juNh´M" hjvNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjZNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³juNh´M" hjWNubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj;NubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj›Nh]”hŒ Description”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$ hj;NubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj±Nh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¹Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj±NubhŒ to (”…”�”}”(hj±Nh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjËNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj±NubhŒ + 1) with relaxed ordering.”…”�”}”(hj±Nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M# hj;NubjM)�”}”(hŒ=Safe to use in noinstr code; prefer atomic64_inc() elsewhere.”h]”hŒ=Safe to use in noinstr code; prefer atomic64_inc() elsewhere.”…”�”}”(hjäNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M% hj;NubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjõNh]”hŒReturn”…”�”}”(hj÷Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóNubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M' hj;NubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M( hj;Nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic64_inc_return (C function)”Œc.raw_atomic64_inc_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+s64 raw_atomic64_inc_return (atomic64_t *v)”h]”hù)�”}”(hŒ*s64 raw_atomic64_inc_return(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj=Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:Oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j?OŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_inc_return”sbŒc.raw_atomic64_inc_return”†”asbuh1hhj6Oh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M5 ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Oh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6Oh²hh³j^Oh´M5 ubhÿ)�”}”(hŒraw_atomic64_inc_return”h]”j)�”}”(hj[Oh]”hŒraw_atomic64_inc_return”…”�”}”(hjqOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmOubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj6Oh²hh³j^Oh´M5 ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj�Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‘OŒmodname”NŒ classname”Njwjz)�”}”j}]”jYOŒc.raw_atomic64_inc_return”†”asbuh1hhjˆOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Oh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjˆOubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj»Oh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjˆOubj)�”}”(hjph]”hŒv”…”�”}”(hjÈOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj„Oubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj6Oh²hh³j^Oh´M5 ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj2Oh²hh³j^Oh´M5 ubah}”(h]”j-Oah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j^Oh´M5 hj/Oh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hjñOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M5 hjîOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj/Oh²hh³j^Oh´M5 ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj PjHj PjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒö**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Safe to use in noinstr code; prefer atomic64_inc_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjPh]”hŒ Parameters”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M9 hj Pubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj2Ph]”hŒ atomic64_t *v”…”�”}”(hj4Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M6 hj,PubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjKPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jGPh´M6 hjHPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jGPh´M6 hj)Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj PubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjmPh]”hŒ Description”…”�”}”(hjoPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkPubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M8 hj PubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjƒPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‹Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒPubhŒ to (”…”�”}”(hjƒPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒPubhŒ + 1) with full ordering.”…”�”}”(hjƒPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M7 hj PubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic64_inc_return() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic64_inc_return() elsewhere.”…”�”}”(hj¶Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M9 hj PubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÇPh]”hŒReturn”…”�”}”(hjÉPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅPubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M; hj PubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÝPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjåPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝPubhŒ.”…”�”}”(hjÝPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M< hj Pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_inc_return_acquire (C function)”Œ!c.raw_atomic64_inc_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3s64 raw_atomic64_inc_return_acquire (atomic64_t *v)”h]”hù)�”}”(hŒ2s64 raw_atomic64_inc_return_acquire(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj!Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j#QŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_inc_return_acquire”sbŒ!c.raw_atomic64_inc_return_acquire”†”asbuh1hhjQh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MO ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCQh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQh²hh³jBQh´MO ubhÿ)�”}”(hŒraw_atomic64_inc_return_acquire”h]”j)�”}”(hj?Qh]”hŒraw_atomic64_inc_return_acquire”…”�”}”(hjUQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQQubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjQh²hh³jBQh´MO ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjsQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjpQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”juQŒmodname”NŒ classname”Njwjz)�”}”j}]”j=QŒ!c.raw_atomic64_inc_return_acquire”†”asbuh1hhjlQubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Qh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjlQubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŸQh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjlQubj)�”}”(hjph]”hŒv”…”�”}”(hj¬Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjhQubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjQh²hh³jBQh´MO ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjQh²hh³jBQh´MO ubah}”(h]”jQah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jBQh´MO hjQh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hjÕQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MO hjÒQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjQh²hh³jBQh´MO ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjíQjHjíQjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with acquire ordering. Safe to use in noinstr code; prefer atomic64_inc_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj÷Qh]”hŒ Parameters”…”�”}”(hjùQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõQubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MS hjñQubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjRh]”hŒ atomic64_t *v”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MP hjRubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj/Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j+Rh´MP hj,Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j+Rh´MP hj Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjñQubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjQRh]”hŒ Description”…”�”}”(hjSRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjORubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MR hjñQubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjgRh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjoRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgRubhŒ to (”…”�”}”(hjgRh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgRubhŒ + 1) with acquire ordering.”…”�”}”(hjgRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MQ hjñQubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_inc_return_acquire() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_inc_return_acquire() elsewhere.”…”�”}”(hjšRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MS hjñQubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj«Rh]”hŒReturn”…”�”}”(hj­Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj©Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MU hjñQubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÁRh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÉRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÁRubhŒ.”…”�”}”(hjÁRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MV hjñQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_inc_return_release (C function)”Œ!c.raw_atomic64_inc_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3s64 raw_atomic64_inc_return_release (atomic64_t *v)”h]”hù)�”}”(hŒ2s64 raw_atomic64_inc_return_release(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jSŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_inc_return_release”sbŒ!c.raw_atomic64_inc_return_release”†”asbuh1hhjþRh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mi ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Sh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþRh²hh³j&Sh´Mi ubhÿ)�”}”(hŒraw_atomic64_inc_return_release”h]”j)�”}”(hj#Sh]”hŒraw_atomic64_inc_return_release”…”�”}”(hj9Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5Subah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjþRh²hh³j&Sh´Mi ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjWSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jYSŒmodname”NŒ classname”Njwjz)�”}”j}]”j!SŒ!c.raw_atomic64_inc_return_release”†”asbuh1hhjPSubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuSh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPSubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjƒSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjPSubj)�”}”(hjph]”hŒv”…”�”}”(hj�Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjLSubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjþRh²hh³j&Sh´Mi ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjúRh²hh³j&Sh´Mi ubah}”(h]”jõRah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j&Sh´Mi hj÷Rh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hj¹Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mi hj¶Sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj÷Rh²hh³j&Sh´Mi ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÑSjHjÑSjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Safe to use in noinstr code; prefer atomic64_inc_return_release() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÛSh]”hŒ Parameters”…”�”}”(hjÝSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙSubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mm hjÕSubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjúSh]”hŒ atomic64_t *v”…”�”}”(hjüSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjøSubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mj hjôSubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jTh´Mj hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjôSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jTh´Mj hjñSubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÕSubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj5Th]”hŒ Description”…”�”}”(hj7Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Ml hjÕSubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjKTh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjSTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKTubhŒ to (”…”�”}”(hjKTh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjeTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKTubhŒ + 1) with release ordering.”…”�”}”(hjKTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mk hjÕSubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_inc_return_release() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_inc_return_release() elsewhere.”…”�”}”(hj~Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mm hjÕSubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�Th]”hŒReturn”…”�”}”(hj‘Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mo hjÕSubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj¥Th²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj­Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥TubhŒ.”…”�”}”(hj¥Th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mp hjÕSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_inc_return_relaxed (C function)”Œ!c.raw_atomic64_inc_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3s64 raw_atomic64_inc_return_relaxed (atomic64_t *v)”h]”hù)�”}”(hŒ2s64 raw_atomic64_inc_return_relaxed(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjéTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jëTŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_inc_return_relaxed”sbŒ!c.raw_atomic64_inc_return_relaxed”†”asbuh1hhjâTh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‚ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâTh²hh³j Uh´M‚ ubhÿ)�”}”(hŒraw_atomic64_inc_return_relaxed”h]”j)�”}”(hjUh]”hŒraw_atomic64_inc_return_relaxed”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjâTh²hh³j Uh´M‚ ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj;Uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j=UŒmodname”NŒ classname”Njwjz)�”}”j}]”jUŒ!c.raw_atomic64_inc_return_relaxed”†”asbuh1hhj4UubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYUh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4Uubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjgUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj4Uubj)�”}”(hjph]”hŒv”…”�”}”(hjtUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0Uubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjâTh²hh³j Uh´M‚ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÞTh²hh³j Uh´M‚ ubah}”(h]”jÙTah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j Uh´M‚ hjÛTh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hj�Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‚ hjšUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÛTh²hh³j Uh´M‚ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjµUjHjµUjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_inc_return_relaxed() elsewhere. **Return** The updated value of **v**.”•h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj¿Uh]”hŒ Parameters”…”�”}”(hjÁUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj½Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M† hj¹Uubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÞUh]”hŒ atomic64_t *v”…”�”}”(hjàUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÜUubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mƒ hjØUubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj÷Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jóUh´Mƒ hjôUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjØUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jóUh´Mƒ hjÕUubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¹UubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjVh]”hŒ Description”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M… hj¹UubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj/Vh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj7Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/VubhŒ to (”…”�”}”(hj/Vh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjIVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/VubhŒ + 1) with relaxed ordering.”…”�”}”(hj/Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M„ hj¹UubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_inc_return_relaxed() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_inc_return_relaxed() elsewhere.”…”�”}”(hjbVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M† hj¹UubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjsVh]”hŒReturn”…”�”}”(hjuVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqVubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mˆ hj¹UubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj‰Vh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‘Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‰VubhŒ.”…”�”}”(hj‰Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‰ hj¹Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#raw_atomic64_fetch_inc (C function)”Œc.raw_atomic64_fetch_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*s64 raw_atomic64_fetch_inc (atomic64_t *v)”h]”hù)�”}”(hŒ)s64 raw_atomic64_fetch_inc(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÍVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÏVŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_inc”sbŒc.raw_atomic64_fetch_inc”†”asbuh1hhjÆVh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M˜ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïVh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆVh²hh³jîVh´M˜ ubhÿ)�”}”(hŒraw_atomic64_fetch_inc”h]”j)�”}”(hjëVh]”hŒraw_atomic64_fetch_inc”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýVubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÆVh²hh³jîVh´M˜ ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j!WŒmodname”NŒ classname”Njwjz)�”}”j}]”jéVŒc.raw_atomic64_fetch_inc”†”asbuh1hhjWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Wh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjWubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjKWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjWubj)�”}”(hjph]”hŒv”…”�”}”(hjXWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjWubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÆVh²hh³jîVh´M˜ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÂVh²hh³jîVh´M˜ ubah}”(h]”j½Vah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jîVh´M˜ hj¿Vh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hj�Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M˜ hj~Wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¿Vh²hh³jîVh´M˜ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj™WjHj™WjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒö**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Safe to use in noinstr code; prefer atomic64_fetch_inc() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj£Wh]”hŒ Parameters”…”�”}”(hj¥Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mœ hj�Wubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÂWh]”hŒ atomic64_t *v”…”�”}”(hjÄWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÀWubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M™ hj¼WubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÛWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j×Wh´M™ hjØWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¼Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j×Wh´M™ hj¹Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�WubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjýWh]”hŒ Description”…”�”}”(hjÿWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûWubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M› hj�WubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXubhŒ to (”…”�”}”(hjXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj-Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXubhŒ + 1) with full ordering.”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mš hj�WubjM)�”}”(hŒCSafe to use in noinstr code; prefer atomic64_fetch_inc() elsewhere.”h]”hŒCSafe to use in noinstr code; prefer atomic64_fetch_inc() elsewhere.”…”�”}”(hjFXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mœ hj�WubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjWXh]”hŒReturn”…”�”}”(hjYXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjUXubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mž hj�WubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjmXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjuXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmXubhŒ.”…”�”}”(hjmXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŸ hj�Wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_inc_acquire (C function)”Œ c.raw_atomic64_fetch_inc_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 raw_atomic64_fetch_inc_acquire (atomic64_t *v)”h]”hù)�”}”(hŒ1s64 raw_atomic64_fetch_inc_acquire(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj±Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j³XŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_inc_acquire”sbŒ c.raw_atomic64_fetch_inc_acquire”†”asbuh1hhjªXh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M² ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓXh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjªXh²hh³jÒXh´M² ubhÿ)�”}”(hŒraw_atomic64_fetch_inc_acquire”h]”j)�”}”(hjÏXh]”hŒraw_atomic64_fetch_inc_acquire”…”�”}”(hjåXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáXubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjªXh²hh³jÒXh´M² ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jYŒmodname”NŒ classname”Njwjz)�”}”j}]”jÍXŒ c.raw_atomic64_fetch_inc_acquire”†”asbuh1hhjüXubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjüXubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj/Yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjüXubj)�”}”(hjph]”hŒv”…”�”}”(hjAtomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj÷Yh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÿYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj÷YubhŒ to (”…”�”}”(hj÷Yh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj÷YubhŒ + 1) with acquire ordering.”…”�”}”(hj÷Yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M´ hj�YubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_inc_acquire() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_inc_acquire() elsewhere.”…”�”}”(hj*Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¶ hj�YubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj;Zh]”hŒReturn”…”�”}”(hj=Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¸ hj�YubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjQZh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjYZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQZubhŒ.”…”�”}”(hjQZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¹ hj�Yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_inc_release (C function)”Œ c.raw_atomic64_fetch_inc_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 raw_atomic64_fetch_inc_release (atomic64_t *v)”h]”hù)�”}”(hŒ1s64 raw_atomic64_fetch_inc_release(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj•Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’Zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j—ZŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_inc_release”sbŒ c.raw_atomic64_fetch_inc_release”†”asbuh1hhjŽZh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÌ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Zh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŽZh²hh³j¶Zh´MÌ ubhÿ)�”}”(hŒraw_atomic64_fetch_inc_release”h]”j)�”}”(hj³Zh]”hŒraw_atomic64_fetch_inc_release”…”�”}”(hjÉZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅZubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŽZh²hh³j¶Zh´MÌ ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjçZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jéZŒmodname”NŒ classname”Njwjz)�”}”j}]”j±ZŒ c.raw_atomic64_fetch_inc_release”†”asbuh1hhjàZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàZubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjàZubj)�”}”(hjph]”hŒv”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÜZubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŽZh²hh³j¶Zh´MÌ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŠZh²hh³j¶Zh´MÌ ubah}”(h]”j…Zah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¶Zh´MÌ hj‡Zh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hjI[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÌ hjF[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‡Zh²hh³j¶Zh´MÌ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGja[jHja[jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Safe to use in noinstr code; prefer atomic64_fetch_inc_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjk[h]”hŒ Parameters”…”�”}”(hjm[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hji[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÐ hje[ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjŠ[h]”hŒ atomic64_t *v”…”�”}”(hjŒ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjˆ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÍ hj„[ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj£[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hje[ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÏ hje[ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÛ[h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjã[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛ[ubhŒ to (”…”�”}”(hjÛ[h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjõ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛ[ubhŒ + 1) with release ordering.”…”�”}”(hjÛ[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÎ hje[ubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_inc_release() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_inc_release() elsewhere.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÐ hje[ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj\h]”hŒReturn”…”�”}”(hj!\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÒ hje[ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj5\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj=\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5\ubhŒ.”…”�”}”(hj5\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÓ hje[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_inc_relaxed (C function)”Œ c.raw_atomic64_fetch_inc_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 raw_atomic64_fetch_inc_relaxed (atomic64_t *v)”h]”hù)�”}”(hŒ1s64 raw_atomic64_fetch_inc_relaxed(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjy\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjv\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j{\Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_inc_relaxed”sbŒ c.raw_atomic64_fetch_inc_relaxed”†”asbuh1hhjr\h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Må ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›\h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjr\h²hh³jš\h´Må ubhÿ)�”}”(hŒraw_atomic64_fetch_inc_relaxed”h]”j)�”}”(hj—\h]”hŒraw_atomic64_fetch_inc_relaxed”…”�”}”(hj­\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©\ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjr\h²hh³jš\h´Må ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjË\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÍ\Œmodname”NŒ classname”Njwjz)�”}”j}]”j•\Œ c.raw_atomic64_fetch_inc_relaxed”†”asbuh1hhjÄ\ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé\h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÄ\ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj÷\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÄ\ubj)�”}”(hjph]”hŒv”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄ\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÀ\ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjr\h²hh³jš\h´Må ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjn\h²hh³jš\h´Må ubah}”(h]”ji\ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jš\h´Må hjk\h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hj-]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Må hj*]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjk\h²hh³jš\h´Må ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjE]jHjE]jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_fetch_inc_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjO]h]”hŒ Parameters”…”�”}”(hjQ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mé hjI]ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjn]h]”hŒ atomic64_t *v”…”�”}”(hjp]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjl]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mæ hjh]ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj‡]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jƒ]h´Mæ hj„]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjh]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jƒ]h´Mæ hje]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjI]ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mè hjI]ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¿]h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÇ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿]ubhŒ to (”…”�”}”(hj¿]h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÙ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿]ubhŒ + 1) with relaxed ordering.”…”�”}”(hj¿]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mç hjI]ubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_inc_relaxed() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_inc_relaxed() elsewhere.”…”�”}”(hjò]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mé hjI]ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj^h]”hŒReturn”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Më hjI]ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj^h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj!^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^ubhŒ.”…”�”}”(hj^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mì hjI]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic64_dec (C function)”Œc.raw_atomic64_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ%void raw_atomic64_dec (atomic64_t *v)”h]”hù)�”}”(hŒ$void raw_atomic64_dec(atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjZ^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjV^h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mû ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjV^h²hh³jh^h´Mû ubhÿ)�”}”(hŒraw_atomic64_dec”h]”j)�”}”(hŒraw_atomic64_dec”h]”hŒraw_atomic64_dec”…”�”}”(hj{^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjw^ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjV^h²hh³jh^h´Mû ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjš^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jœ^Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj}^sbŒc.raw_atomic64_dec”†”asbuh1hhj“^ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“^ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÈ^h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj“^ubj)�”}”(hjph]”hŒv”…”�”}”(hjÕ^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�^ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjV^h²hh³jh^h´Mû ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjR^h²hh³jh^h´Mû ubah}”(h]”jM^ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh^h´Mû hjO^h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hjþ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mû hjû^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjO^h²hh³jh^h´Mû ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj_jHj_jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒß**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_dec() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mÿ hj_ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj?_h]”hŒ atomic64_t *v”…”�”}”(hjA_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mü hj9_ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjX_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jT_h´Mü hjU_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jT_h´Mü hj6_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj_ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjz_h]”hŒ Description”…”�”}”(hj|_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mþ hj_ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj�_h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj˜_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�_ubhŒ to (”…”�”}”(hj�_h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjª_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�_ubhŒ - 1) with relaxed ordering.”…”�”}”(hj�_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mý hj_ubjM)�”}”(hŒ=Safe to use in noinstr code; prefer atomic64_dec() elsewhere.”h]”hŒ=Safe to use in noinstr code; prefer atomic64_dec() elsewhere.”…”�”}”(hjÃ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mÿ hj_ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÔ_h]”hŒReturn”…”�”}”(hjÖ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj_ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjê_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic64_dec_return (C function)”Œc.raw_atomic64_dec_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+s64 raw_atomic64_dec_return (atomic64_t *v)”h]”hù)�”}”(hŒ*s64 raw_atomic64_dec_return(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j`Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_dec_return”sbŒc.raw_atomic64_dec_return”†”asbuh1hhj`h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`h²hh³j=`h´M ubhÿ)�”}”(hŒraw_atomic64_dec_return”h]”j)�”}”(hj:`h]”hŒraw_atomic64_dec_return”…”�”}”(hjP`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjL`ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj`h²hh³j=`h´M ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjn`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jp`Œmodname”NŒ classname”Njwjz)�”}”j}]”j8`Œc.raw_atomic64_dec_return”†”asbuh1hhjg`ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjg`ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjš`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjg`ubj)�”}”(hjph]”hŒv”…”�”}”(hj§`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjc`ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj`h²hh³j=`h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj`h²hh³j=`h´M ubah}”(h]”j `ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j=`h´M hj`h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hjÐ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjÍ`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj`h²hh³j=`h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjè`jHjè`jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒö**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Safe to use in noinstr code; prefer atomic64_dec_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjì`ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjah]”hŒ atomic64_t *v”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj aubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj*ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j&ah´M hj'aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j&ah´M hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjì`ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjLah]”hŒ Description”…”�”}”(hjNah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjì`ubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjbah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbaubhŒ to (”…”�”}”(hjbah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbaubhŒ - 1) with full ordering.”…”�”}”(hjbah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjì`ubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic64_dec_return() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic64_dec_return() elsewhere.”…”�”}”(hj•ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjì`ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¦ah]”hŒReturn”…”�”}”(hj¨ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjì`ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj¼ah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÄah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼aubhŒ.”…”�”}”(hj¼ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjì`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_dec_return_acquire (C function)”Œ!c.raw_atomic64_dec_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3s64 raw_atomic64_dec_return_acquire (atomic64_t *v)”h]”hù)�”}”(hŒ2s64 raw_atomic64_dec_return_acquire(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jbŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_dec_return_acquire”sbŒ!c.raw_atomic64_dec_return_acquire”†”asbuh1hhjùah²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M) ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùah²hh³j!bh´M) ubhÿ)�”}”(hŒraw_atomic64_dec_return_acquire”h]”j)�”}”(hjbh]”hŒraw_atomic64_dec_return_acquire”…”�”}”(hj4bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0bubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjùah²hh³j!bh´M) ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjRbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjObubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jTbŒmodname”NŒ classname”Njwjz)�”}”j}]”jbŒ!c.raw_atomic64_dec_return_acquire”†”asbuh1hhjKbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpbh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjKbubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj~bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjKbubj)�”}”(hjph]”hŒv”…”�”}”(hj‹bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjGbubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjùah²hh³j!bh´M) ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjõah²hh³j!bh´M) ubah}”(h]”jðaah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j!bh´M) hjòah²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hj´bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M) hj±bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjòah²hh³j!bh´M) ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÌbjHjÌbjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Safe to use in noinstr code; prefer atomic64_dec_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÖbh]”hŒ Parameters”…”�”}”(hjØbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔbubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M- hjÐbubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjõbh]”hŒ atomic64_t *v”…”�”}”(hj÷bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjóbubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M* hjïbubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j ch´M* hj cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjïbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j ch´M* hjìbubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÐbubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj0ch]”hŒ Description”…”�”}”(hj2ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M, hjÐbubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjFch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjNch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFcubhŒ to (”…”�”}”(hjFch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFcubhŒ - 1) with acquire ordering.”…”�”}”(hjFch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M+ hjÐbubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_dec_return_acquire() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_dec_return_acquire() elsewhere.”…”�”}”(hjych²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M- hjÐbubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjŠch]”hŒReturn”…”�”}”(hjŒch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆcubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M/ hjÐbubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj ch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¨ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj cubhŒ.”…”�”}”(hj ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M0 hjÐbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_dec_return_release (C function)”Œ!c.raw_atomic64_dec_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3s64 raw_atomic64_dec_return_release (atomic64_t *v)”h]”hù)�”}”(hŒ2s64 raw_atomic64_dec_return_release(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjäch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjácubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jæcŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_dec_return_release”sbŒ!c.raw_atomic64_dec_return_release”†”asbuh1hhjÝch²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MC ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝch²hh³jdh´MC ubhÿ)�”}”(hŒraw_atomic64_dec_return_release”h]”j)�”}”(hjdh]”hŒraw_atomic64_dec_return_release”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÝch²hh³jdh´MC ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj6dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j8dŒmodname”NŒ classname”Njwjz)�”}”j}]”jdŒ!c.raw_atomic64_dec_return_release”†”asbuh1hhj/dubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/dubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjbdh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj/dubj)�”}”(hjph]”hŒv”…”�”}”(hjodh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj+dubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÝch²hh³jdh´MC ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÙch²hh³jdh´MC ubah}”(h]”jÔcah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jdh´MC hjÖch²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hj˜dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MC hj•dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÖch²hh³jdh´MC ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj°djHj°djI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Safe to use in noinstr code; prefer atomic64_dec_return_release() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjºdh]”hŒ Parameters”…”�”}”(hj¼dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸dubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MG hj´dubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÙdh]”hŒ atomic64_t *v”…”�”}”(hjÛdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj×dubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MD hjÓdubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjòdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jîdh´MD hjïdubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÓdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jîdh´MD hjÐdubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj´dubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjeh]”hŒ Description”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MF hj´dubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj*eh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj2eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*eubhŒ to (”…”�”}”(hj*eh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjDeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*eubhŒ - 1) with release ordering.”…”�”}”(hj*eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´ME hj´dubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_dec_return_release() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_dec_return_release() elsewhere.”…”�”}”(hj]eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MG hj´dubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjneh]”hŒReturn”…”�”}”(hjpeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjleubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MI hj´dubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj„eh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„eubhŒ.”…”�”}”(hj„eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MJ hj´dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic64_dec_return_relaxed (C function)”Œ!c.raw_atomic64_dec_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3s64 raw_atomic64_dec_return_relaxed (atomic64_t *v)”h]”hù)�”}”(hŒ2s64 raw_atomic64_dec_return_relaxed(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÈeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÊeŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_dec_return_relaxed”sbŒ!c.raw_atomic64_dec_return_relaxed”†”asbuh1hhjÁeh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M\ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêeh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁeh²hh³jéeh´M\ ubhÿ)�”}”(hŒraw_atomic64_dec_return_relaxed”h]”j)�”}”(hjæeh]”hŒraw_atomic64_dec_return_relaxed”…”�”}”(hjüeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøeubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÁeh²hh³jéeh´M\ ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jfŒmodname”NŒ classname”Njwjz)�”}”j}]”jäeŒ!c.raw_atomic64_dec_return_relaxed”†”asbuh1hhjfubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8fh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjFfh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjfubj)�”}”(hjph]”hŒv”…”�”}”(hjSfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjfubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÁeh²hh³jéeh´M\ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj½eh²hh³jéeh´M\ ubah}”(h]”j¸eah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jéeh´M\ hjºeh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj|fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M\ hjyfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjºeh²hh³jéeh´M\ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj”fjHj”fjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_dec_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjžfh]”hŒ Parameters”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœfubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M` hj˜fubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj½fh]”hŒ atomic64_t *v”…”�”}”(hj¿fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj»fubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M] hj·fubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÖfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÒfh´M] hjÓfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj·fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÒfh´M] hj´fubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj˜fubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjøfh]”hŒ Description”…”�”}”(hjúfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjöfubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M_ hj˜fubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjgh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgubhŒ to (”…”�”}”(hjgh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj(gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgubhŒ - 1) with relaxed ordering.”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M^ hj˜fubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic64_dec_return_relaxed() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic64_dec_return_relaxed() elsewhere.”…”�”}”(hjAgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M` hj˜fubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjRgh]”hŒReturn”…”�”}”(hjTgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPgubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mb hj˜fubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjhgh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjpgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhgubhŒ.”…”�”}”(hjhgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mc hj˜fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#raw_atomic64_fetch_dec (C function)”Œc.raw_atomic64_fetch_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*s64 raw_atomic64_fetch_dec (atomic64_t *v)”h]”hù)�”}”(hŒ)s64 raw_atomic64_fetch_dec(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¬gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j®gŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_dec”sbŒc.raw_atomic64_fetch_dec”†”asbuh1hhj¥gh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mr ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎgh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¥gh²hh³jÍgh´Mr ubhÿ)�”}”(hŒraw_atomic64_fetch_dec”h]”j)�”}”(hjÊgh]”hŒraw_atomic64_fetch_dec”…”�”}”(hjàgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜgubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¥gh²hh³jÍgh´Mr ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjþgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jhŒmodname”NŒ classname”Njwjz)�”}”j}]”jÈgŒc.raw_atomic64_fetch_dec”†”asbuh1hhj÷gubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷gubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj*hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj÷gubj)�”}”(hjph]”hŒv”…”�”}”(hj7hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjógubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¥gh²hh³jÍgh´Mr ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¡gh²hh³jÍgh´Mr ubah}”(h]”jœgah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÍgh´Mr hjžgh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hj`hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mr hj]hh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjžgh²hh³jÍgh´Mr ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjxhjHjxhjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒö**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Safe to use in noinstr code; prefer atomic64_fetch_dec() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj‚hh]”hŒ Parameters”…”�”}”(hj„hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€hubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mv hj|hubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¡hh]”hŒ atomic64_t *v”…”�”}”(hj£hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸhubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Ms hj›hubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjºhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¶hh´Ms hj·hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj›hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¶hh´Ms hj˜hubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj|hubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÜhh]”hŒ Description”…”�”}”(hjÞhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚhubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mu hj|hubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjòhh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjúhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòhubhŒ to (”…”�”}”(hjòhh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòhubhŒ - 1) with full ordering.”…”�”}”(hjòhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mt hj|hubjM)�”}”(hŒCSafe to use in noinstr code; prefer atomic64_fetch_dec() elsewhere.”h]”hŒCSafe to use in noinstr code; prefer atomic64_fetch_dec() elsewhere.”…”�”}”(hj%ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mv hj|hubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj6ih]”hŒReturn”…”�”}”(hj8ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4iubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mx hj|hubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjLih²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjTih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLiubhŒ.”…”�”}”(hjLih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´My hj|hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_dec_acquire (C function)”Œ c.raw_atomic64_fetch_dec_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 raw_atomic64_fetch_dec_acquire (atomic64_t *v)”h]”hù)�”}”(hŒ1s64 raw_atomic64_fetch_dec_acquire(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj�ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j’iŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_dec_acquire”sbŒ c.raw_atomic64_fetch_dec_acquire”†”asbuh1hhj‰ih²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰ih²hh³j±ih´MŒ ubhÿ)�”}”(hŒraw_atomic64_fetch_dec_acquire”h]”j)�”}”(hj®ih]”hŒraw_atomic64_fetch_dec_acquire”…”�”}”(hjÄih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀiubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‰ih²hh³j±ih´MŒ ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjâih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjßiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jäiŒmodname”NŒ classname”Njwjz)�”}”j}]”j¬iŒ c.raw_atomic64_fetch_dec_acquire”†”asbuh1hhjÛiubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛiubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÛiubj)�”}”(hjph]”hŒv”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj×iubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‰ih²hh³j±ih´MŒ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj…ih²hh³j±ih´MŒ ubah}”(h]”j€iah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j±ih´MŒ hj‚ih²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hjDjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒ hjAjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‚ih²hh³j±ih´MŒ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj\jjHj\jjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Safe to use in noinstr code; prefer atomic64_fetch_dec_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjfjh]”hŒ Parameters”…”�”}”(hjhjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hj`jubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj…jh]”hŒ atomic64_t *v”…”�”}”(hj‡jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hjjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjžjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jšjh´M� hj›jubah}”(h]”h ]”h"]”h$•]”h&]”uh1jÈhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jšjh´M� hj|jubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj`jubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÀjh]”hŒ Description”…”�”}”(hjÂjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¾jubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hj`jubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÖjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÞjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖjubhŒ to (”…”�”}”(hjÖjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjðjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖjubhŒ - 1) with acquire ordering.”…”�”}”(hjÖjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŽ hj`jubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_dec_acquire() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_dec_acquire() elsewhere.”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hj`jubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjkh]”hŒReturn”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M’ hj`jubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj0kh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0kubhŒ.”…”�”}”(hj0kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M“ hj`jubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_dec_release (C function)”Œ c.raw_atomic64_fetch_dec_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 raw_atomic64_fetch_dec_release (atomic64_t *v)”h]”hù)�”}”(hŒ1s64 raw_atomic64_fetch_dec_release(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjtkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jvkŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_dec_release”sbŒ c.raw_atomic64_fetch_dec_release”†”asbuh1hhjmkh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¦ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmkh²hh³j•kh´M¦ ubhÿ)�”}”(hŒraw_atomic64_fetch_dec_release”h]”j)�”}”(hj’kh]”hŒraw_atomic64_fetch_dec_release”…”�”}”(hj¨kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤kubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjmkh²hh³j•kh´M¦ ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÆkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÈkŒmodname”NŒ classname”Njwjz)�”}”j}]”j�kŒ c.raw_atomic64_fetch_dec_release”†”asbuh1hhj¿kubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿kubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjòkh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¿kubj)�”}”(hjph]”hŒv”…”�”}”(hjÿkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj»kubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjmkh²hh³j•kh´M¦ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjikh²hh³j•kh´M¦ ubah}”(h]”jdkah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j•kh´M¦ hjfkh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hj(lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¦ hj%lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjfkh²hh³j•kh´M¦ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj@ljHj@ljI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Safe to use in noinstr code; prefer atomic64_fetch_dec_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjJlh]”hŒ Parameters”…”�”}”(hjLlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHlubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mª hjDlubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjilh]”hŒ atomic64_t *v”…”�”}”(hjklh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjglubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M§ hjclubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj‚lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~lh´M§ hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjclubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~lh´M§ hj`lubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjDlubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj¤lh]”hŒ Description”…”�”}”(hj¦lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢lubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M© hjDlubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjºlh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÂlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºlubhŒ to (”…”�”}”(hjºlh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÔlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºlubhŒ - 1) with release ordering.”…”�”}”(hjºlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¨ hjDlubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_dec_release() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_dec_release() elsewhere.”…”�”}”(hjílh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mª hjDlubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjþlh]”hŒReturn”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjülubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¬ hjDlubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjmh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmubhŒ.”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M­ hjDlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_dec_relaxed (C function)”Œ c.raw_atomic64_fetch_dec_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2s64 raw_atomic64_fetch_dec_relaxed (atomic64_t *v)”h]”hù)�”}”(hŒ1s64 raw_atomic64_fetch_dec_relaxed(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjXmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jZmŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_dec_relaxed”sbŒ c.raw_atomic64_fetch_dec_relaxed”†”asbuh1hhjQmh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¿ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQmh²hh³jymh´M¿ ubhÿ)�”}”(hŒraw_atomic64_fetch_dec_relaxed”h]”j)�”}”(hjvmh]”hŒraw_atomic64_fetch_dec_relaxed”…”�”}”(hjŒmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆmubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjQmh²hh³jymh´M¿ ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjªmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¬mŒmodname”NŒ classname”Njwjz)�”}”j}]”jtmŒ c.raw_atomic64_fetch_dec_relaxed”†”asbuh1hhj£mubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj£mubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÖmh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj£mubj)�”}”(hjph]”hŒv”…”�”}”(hjãmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŸmubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjQmh²hh³jymh´M¿ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjMmh²hh³jymh´M¿ ubah}”(h]”jHmah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jymh´M¿ hjJmh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¿ hj nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjJmh²hh³jymh´M¿ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj$njHj$njI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_fetch_dec_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj.nh]”hŒ Parameters”…”�”}”(hj0nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mà hj(nubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjMnh]”hŒ atomic64_t *v”…”�”}”(hjOnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKnubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÀ hjGnubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjfnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jbnh´MÀ hjcnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbnh´MÀ hjDnubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj(nubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjˆnh]”hŒ Description”…”�”}”(hjŠnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj(nubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjžnh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¦nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžnubhŒ to (”…”�”}”(hjžnh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¸nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžnubhŒ - 1) with relaxed ordering.”…”�”}”(hjžnh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÁ hj(nubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_dec_relaxed() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_dec_relaxed() elsewhere.”…”�”}”(hjÑnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mà hj(nubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjânh]”hŒReturn”…”�”}”(hjänh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjànubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÅ hj(nubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjønh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjønubhŒ.”…”�”}”(hjønh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÆ hj(nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic64_and (C function)”Œc.raw_atomic64_and”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,void raw_atomic64_and (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ+void raw_atomic64_and(s64 i, atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj5oh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÕ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHoh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5oh²hh³jGoh´MÕ ubhÿ)�”}”(hŒraw_atomic64_and”h]”j)�”}”(hŒraw_atomic64_and”h]”hŒraw_atomic64_and”…”�”}”(hjZoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVoubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj5oh²hh³jGoh´MÕ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjyoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j{oŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj\osbŒc.raw_atomic64_and”†”asbuh1hhjroubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™oh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjroubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj§oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjroubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjnoubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÂoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÄoŒmodname”NŒ classname”Njwjz)�”}”j}]”j•oŒc.raw_atomic64_and”†”asbuh1hhj»oubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàoh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj»oubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjîoh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj»oubj)�”}”(hjph]”hŒv”…”�”}”(hjûoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjnoubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj5oh²hh³jGoh´MÕ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj1oh²hh³jGoh´MÕ ubah}”(h]”j,oah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jGoh´MÕ hj.oh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hj$ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÕ hj!ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj.oh²hh³jGoh´MÕ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj wubj)�”}”(hjph]”hŒv”…”�”}”(hjKwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÀvubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjrvh²hh³jšvh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjnvh²hh³jšvh´Mubah}”(h]”jivah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jšvh´Mhjkvh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with release ordering”h]”hŒ(atomic bitwise AND with release ordering”…”�”}”(hjtwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjqwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjkvh²hh³jšvh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŒwjHjŒwjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **i**) with release ordering. Safe to use in noinstr code; prefer atomic64_fetch_and_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj–wh]”hŒ Parameters”…”�”}”(hj˜wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”wubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj�wubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjµwh]”hŒs64 i”…”�”}”(hj·wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj³wubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj¯wubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjÎwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÊwh´MhjËwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¯wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÊwh´Mhj¬wubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjîwh]”hŒ atomic64_t *v”…”�”}”(hjðwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjìwubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjèwubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jxh´Mhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjèwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jxh´Mhj¬wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�wubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj)xh]”hŒ Description”…”�”}”(hj+xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'xubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj�wubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj?xh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjGxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?xubhŒ to (”…”�”}”(hj?xh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjYxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?xubhŒ & ”…”�”}”(hj?xh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjkxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?xubhŒ) with release ordering.”…”�”}”(hj?xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj�wubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_and_release() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_and_release() elsewhere.”…”�”}”(hj„xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M!hj�wubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj•xh]”hŒReturn”…”�”}”(hj—xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“xubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M#hj�wubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj«xh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj³xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«xubhŒ.”…”�”}”(hj«xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$hj�wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_and_relaxed (C function)”Œ c.raw_atomic64_fetch_and_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_and_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_and_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjïxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jñxŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_and_relaxed”sbŒ c.raw_atomic64_fetch_and_relaxed”†”asbuh1hhjèxh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjèxh²hh³jyh´M6ubhÿ)�”}”(hŒraw_atomic64_fetch_and_relaxed”h]”j)�”}”(hj yh]”hŒraw_atomic64_fetch_and_relaxed”…”�”}”(hj#yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjèxh²hh³jyh´M6ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjAyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCyŒmodname”NŒ classname”Njwjz)�”}”j}]”j yŒ c.raw_atomic64_fetch_and_relaxed”†”asbuh1hhj:yubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:yubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjmyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj6yubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjˆyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŠyŒmodname”NŒ classname”Njwjz)�”}”j}]”j yŒ c.raw_atomic64_fetch_and_relaxed”†”asbuh1hhj�yubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�yubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj´yh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�yubj)�”}”(hjph]”hŒv”…”�”}”(hjÁyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj6yubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjèxh²hh³jyh´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjäxh²hh³jyh´M6ubah}”(h]”jßxah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jyh´M6hjáxh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hjêyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M6hjçyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjáxh²hh³jyh´M6ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjzjHjzjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_fetch_and_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj zh]”hŒ Parameters”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M:hjzubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj+zh]”hŒs64 i”…”�”}”(hj-zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj)zubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M7hj%zubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjDzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@zh´M7hjAzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j@zh´M7hj"zubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjdzh]”hŒ atomic64_t *v”…”�”}”(hjfzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbzubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M8hj^zubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj}zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jyzh´M8hjzzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jyzh´M8hj"zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjzubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjŸzh]”hŒ Description”…”�”}”(hj¡zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�zubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M:hjzubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjµzh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj½zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµzubhŒ to (”…”�”}”(hjµzh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÏzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµzubhŒ & ”…”�”}”(hjµzh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjázh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµzubhŒ) with relaxed ordering.”…”�”}”(hjµzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M9hjzubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_and_relaxed() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_and_relaxed() elsewhere.”…”�”}”(hjúzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M;hjzubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj {h]”hŒReturn”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj {ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M=hjzubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj!{h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj){h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!{ubhŒ.”…”�”}”(hj!{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M>hjzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ raw_atomic64_andnot (C function)”Œc.raw_atomic64_andnot”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void raw_atomic64_andnot (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ.void raw_atomic64_andnot(s64 i, atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjb{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj^{h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj^{h²hh³jp{h´MMubhÿ)�”}”(hŒraw_atomic64_andnot”h]”j)�”}”(hŒraw_atomic64_andnot”h]”hŒraw_atomic64_andnot”…”�”}”(hjƒ{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj^{h²hh³jp{h´MMubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¢{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸ{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¤{Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj…{sbŒc.raw_atomic64_andnot”†”asbuh1hhj›{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›{ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÐ{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj—{ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjë{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jí{Œmodname”NŒ classname”Njwjz)�”}”j}]”j¾{Œc.raw_atomic64_andnot”†”asbuh1hhjä{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjä{ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjä{ubj)�”}”(hjph]”hŒv”…”�”}”(hj$|h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj—{ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj^{h²hh³jp{h´MMubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjZ{h²hh³jp{h´MMubah}”(h]”jU{ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jp{h´MMhjW{h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed ordering”…”�”}”(hjM|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MMhjJ|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjW{h²hh³jp{h´MMubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGje|jHje|jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒþ**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **~i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_andnot() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjo|h]”hŒ Parameters”…”�”}”(hjq|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MQhji|ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjŽ|h]”hŒs64 i”…”�”}”(hj�|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MNhjˆ|ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj§|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j£|h´MNhj¤|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjˆ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j£|h´MNhj…|ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÇ|h]”hŒ atomic64_t *v”…”�”}”(hjÉ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÅ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MOhjÁ|ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjà|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÜ|h´MOhjÝ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÁ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÜ|h´MOhj…|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hji|ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MQhji|ubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj}h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ubhŒ to (”…”�”}”(hj}h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj2}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ubhŒ & ”…”�”}”(hj}h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjD}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}ubhŒ) with relaxed ordering.”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MPhji|ubjM)�”}”(hŒ@Safe to use in noinstr code; prefer atomic64_andnot() elsewhere.”h]”hŒ@Safe to use in noinstr code; prefer atomic64_andnot() elsewhere.”…”�”}”(hj]}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MRhji|ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjn}h]”hŒReturn”…”�”}”(hjp}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MThji|ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj„}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MUhji|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic64_fetch_andnot (C function)”Œc.raw_atomic64_fetch_andnot”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4s64 raw_atomic64_fetch_andnot (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ3s64 raw_atomic64_fetch_andnot(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¶}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¸}Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_andnot”sbŒc.raw_atomic64_fetch_andnot”†”asbuh1hhj¯}h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯}h²hh³j×}h´Mbubhÿ)�”}”(hŒraw_atomic64_fetch_andnot”h]”j)�”}”(hjÔ}h]”hŒraw_atomic64_fetch_andnot”…”�”}”(hjê}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæ}ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¯}h²hh³j×}h´Mbubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j ~Œmodname”NŒ classname”Njwjz)�”}”j}]”jÒ}Œc.raw_atomic64_fetch_andnot”†”asbuh1hhj~ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&~h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj4~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjý}ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjO~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjL~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jQ~Œmodname”NŒ classname”Njwjz)�”}”j}]”jÒ}Œc.raw_atomic64_fetch_andnot”†”asbuh1hhjH~ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm~h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjH~ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj{~h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjH~ubj)�”}”(hjph]”hŒv”…”�”}”(hjˆ~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjH~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjý}ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¯}h²hh³j×}h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj«}h²hh³j×}h´Mbubah}”(h]”j¦}ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j×}h´Mbhj¨}h²hubj4)�”}”(hhh]”jM)�”}”(hŒ)atomic bitwise AND NOT with full ordering”h]”hŒ)atomic bitwise AND NOT with full ordering”…”�”}”(hj±~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mbhj®~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨}h²hh³j×}h´Mbubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÉ~jHjÉ~jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** & **~i**) with full ordering. Safe to use in noinstr code; prefer atomic64_fetch_andnot() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MfhjÍ~ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjò~h]”hŒs64 i”…”�”}”(hjô~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjð~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mchjì~ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´Mchjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjì~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´Mchjé~ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj+h]”hŒ atomic64_t *v”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mdhj%ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@h´MdhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j@h´Mdhjé~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÍ~ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjfh]”hŒ Description”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MfhjÍ~ubjM)�”}”(hŒ@Atomically updates **v** to (**v** & **~i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj|h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj|ubhŒ to (”…”�”}”(hj|h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj|ubhŒ & ”…”�”}”(hj|h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj|ubhŒ) with full ordering.”…”�”}”(hj|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MehjÍ~ubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic64_fetch_andnot() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_fetch_andnot() elsewhere.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MghjÍ~ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÒh]”hŒReturn”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MihjÍ~ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjèh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjèubhŒ.”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MjhjÍ~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic64_fetch_andnot_acquire (C function)”Œ#c.raw_atomic64_fetch_andnot_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj:�ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjY�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jU�h´MhjV�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jU�h´Mhjþ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjâ�ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj{�h]”hŒ Description”…”�”}”(hj}�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjâ�ubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj‘�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘�ubhŒ to (”…”�”}”(hj‘�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘�ubhŒ | ”…”�”}”(hj‘�h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘�ubhŒ) with release ordering.”…”�”}”(hj‘�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjâ�ubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic64_fetch_or_release() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic64_fetch_or_release() elsewhere.”…”�”}”(hjÖ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjâ�ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjç�h]”hŒReturn”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjå�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjâ�ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjý�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjý�ubhŒ.”…”�”}”(hjý�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhjâ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ*raw_atomic64_fetch_or_relaxed (C function)”Œc.raw_atomic64_fetch_or_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8s64 raw_atomic64_fetch_or_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ7s64 raw_atomic64_fetch_or_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjA‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jC‘Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_or_relaxed”sbŒc.raw_atomic64_fetch_or_relaxed”†”asbuh1hhj:‘h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M*ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:‘h²hh³jb‘h´M*ubhÿ)�”}”(hŒraw_atomic64_fetch_or_relaxed”h]”j)�”}”(hj_‘h]”hŒraw_atomic64_fetch_or_relaxed”…”�”}”(hju‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq‘ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj:‘h²hh³jb‘h´M*ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj“‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j•‘Œmodname”NŒ classname”Njwjz)�”}”j}]”j]‘Œc.raw_atomic64_fetch_or_relaxed”†”asbuh1hhjŒ‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŒ‘ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¿‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒ‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjˆ‘ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÚ‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjבubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÜ‘Œmodname”NŒ classname”Njwjz)�”}”j}]”j]‘Œc.raw_atomic64_fetch_or_relaxed”†”asbuh1hhjÓ‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÓ‘ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÓ‘ubj)�”}”(hjph]”hŒv”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjˆ‘ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj:‘h²hh³jb‘h´M*ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj6‘h²hh³jb‘h´M*ubah}”(h]”j1‘ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jb‘h´M*hj3‘h²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with relaxed ordering”h]”hŒ'atomic bitwise OR with relaxed ordering”…”�”}”(hj<’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M*hj9’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj3‘h²hh³jb‘h´M*ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjT’jHjT’jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** | **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_fetch_or_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M.hjX’ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj}’h]”hŒs64 i”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M+hjw’ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj–’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j’’h´M+hj“’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjw’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’’h´M+hjt’ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¶’h]”hŒ atomic64_t *v”…”�”}”(hj¸’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj´’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M,hj°’ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÏ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jË’h´M,hjÌ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj°’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jË’h´M,hjt’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjX’ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M.hjX’ubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“ubhŒ to (”…”�”}”(hj“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj!“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“ubhŒ | ”…”�”}”(hj“h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj3“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“ubhŒ) with relaxed ordering.”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M-hjX’ubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic64_fetch_or_relaxed() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic64_fetch_or_relaxed() elsewhere.”…”�”}”(hjL“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M/hjX’ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj]“h]”hŒReturn”…”�”}”(hj_“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M1hjX’ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjs“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj{“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjs“ubhŒ.”…”�”}”(hjs“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M2hjX’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic64_xor (C function)”Œc.raw_atomic64_xor”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,void raw_atomic64_xor (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ+void raw_atomic64_xor(s64 i, atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj´“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj°“h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°“h²hh³j“h´MAubhÿ)�”}”(hŒraw_atomic64_xor”h]”j)�”}”(hŒraw_atomic64_xor”h]”hŒraw_atomic64_xor”…”�”}”(hjÕ“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑ“ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj°“h²hh³j“h´MAubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjô“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jö“Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjדsbŒc.raw_atomic64_xor”†”asbuh1hhjí“ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjí“ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj"”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjí“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjé“ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj=”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j?”Œmodname”NŒ classname”Njwjz)�”}”j}]”j”Œc.raw_atomic64_xor”†”asbuh1hhj6”ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6”ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hji”h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj6”ubj)�”}”(hjph]”hŒv”…”�”}”(hjv”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjé“ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj°“h²hh³j“h´MAubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¬“h²hh³j“h´MAubah}”(h]”j§“ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j“h´MAhj©“h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(hjŸ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MAhjœ”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj©“h²hh³j“h´MAubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj·”jHj·”jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒú**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** ^ **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_xor() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MEhj»”ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjà”h]”hŒs64 i”…”�”}”(hjâ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÞ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MBhjÚ”ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjù”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jõ”h´MBhjö”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÚ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jõ”h´MBhj×”ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj•h]”hŒ atomic64_t *v”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MChj•ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj2•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j.•h´MChj/•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j.•h´MChj×”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj»”ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjT•h]”hŒ Description”…”�”}”(hjV•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MEhj»”ubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjj•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjr•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj•ubhŒ to (”…”�”}”(hjj•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj„•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj•ubhŒ ^ ”…”�”}”(hjj•h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj–•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj•ubhŒ) with relaxed ordering.”…”�”}”(hjj•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MDhj»”ubjM)�”}”(hŒ=Safe to use in noinstr code; prefer atomic64_xor() elsewhere.”h]”hŒ=Safe to use in noinstr code; prefer atomic64_xor() elsewhere.”…”�”}”(hj¯•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MFhj»”ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÀ•h]”hŒReturn”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¾•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MHhj»”ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjÖ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MIhj»”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#raw_atomic64_fetch_xor (C function)”Œc.raw_atomic64_fetch_xor”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1s64 raw_atomic64_fetch_xor (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ0s64 raw_atomic64_fetch_xor(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j –Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_xor”sbŒc.raw_atomic64_fetch_xor”†”asbuh1hhj–h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj–h²hh³j)–h´MRubhÿ)�”}”(hŒraw_atomic64_fetch_xor”h]”j)�”}”(hj&–h]”hŒraw_atomic64_fetch_xor”…”�”}”(hj<–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj–h²hh³j)–h´MRubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjZ–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j\–Œmodname”NŒ classname”Njwjz)�”}”j}]”j$–Œc.raw_atomic64_fetch_xor”†”asbuh1hhjS–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjS–ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj†–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjS–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjO–ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj¡–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjž–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j£–Œmodname”NŒ classname”Njwjz)�”}”j}]”j$–Œc.raw_atomic64_fetch_xor”†”asbuh1hhjš–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjš–ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÍ–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjš–ubj)�”}”(hjph]”hŒv”…”�”}”(hjÚ–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjš–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”• ˆjjuh1j9hjO–ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj–h²hh³j)–h´MRubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjý•h²hh³j)–h´MRubah}”(h]”jø•ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j)–h´MRhjú•h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic bitwise XOR with full ordering”h]”hŒ%atomic bitwise XOR with full ordering”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MRhj—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjú•h²hh³j)–h´MRubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj—jHj—jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** ^ **i**) with full ordering. Safe to use in noinstr code; prefer atomic64_fetch_xor() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MVhj—ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjD—h]”hŒs64 i”…”�”}”(hjF—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjB—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MShj>—ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj]—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jY—h´MShjZ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj>—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jY—h´MShj;—ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj}—h]”hŒ atomic64_t *v”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MThjw—ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj–—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j’—h´MThj“—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjw—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’—h´MThj;—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj—ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MVhj—ubjM)�”}”(hŒ?Atomically updates **v** to (**v** ^ **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjΗh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÖ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjΗubhŒ to (”…”�”}”(hjΗh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjè—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjΗubhŒ ^ ”…”�”}”(hjΗh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjú—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjΗubhŒ) with full ordering.”…”�”}”(hjΗh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MUhj—ubjM)�”}”(hŒCSafe to use in noinstr code; prefer atomic64_fetch_xor() elsewhere.”h]”hŒCSafe to use in noinstr code; prefer atomic64_fetch_xor() elsewhere.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MWhj—ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj$˜h]”hŒReturn”…”�”}”(hj&˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MYhj—ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj:˜h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjB˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:˜ubhŒ.”…”�”}”(hj:˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MZhj—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_xor_acquire (C function)”Œ c.raw_atomic64_fetch_xor_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_xor_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_xor_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj~˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j€˜Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_xor_acquire”sbŒ c.raw_atomic64_fetch_xor_acquire”†”asbuh1hhjw˜h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ˜h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjw˜h²hh³jŸ˜h´Mmubhÿ)�”}”(hŒraw_atomic64_fetch_xor_acquire”h]”j)�”}”(hjœ˜h]”hŒraw_atomic64_fetch_xor_acquire”…”�”}”(hj²˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®˜ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjw˜h²hh³jŸ˜h´Mmubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjИh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj͘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÒ˜Œmodname”NŒ classname”Njwjz)�”}”j}]”jš˜Œ c.raw_atomic64_fetch_xor_acquire”†”asbuh1hhjɘubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî˜h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjɘubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjü˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjɘubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŘubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j™Œmodname”NŒ classname”Njwjz)�”}”j}]”jš˜Œ c.raw_atomic64_fetch_xor_acquire”†”asbuh1hhj™ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjC™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj™ubj)�”}”(hjph]”hŒv”…”�”}”(hjP™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŘubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjw˜h²hh³jŸ˜h´Mmubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjs˜h²hh³jŸ˜h´Mmubah}”(h]”jn˜ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŸ˜h´Mmhjp˜h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with acquire ordering”h]”hŒ(atomic bitwise XOR with acquire ordering”…”�”}”(hjy™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mmhjv™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjp˜h²hh³jŸ˜h´Mmubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‘™jHj‘™jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** ^ **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic64_fetch_xor_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mqhj•™ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjº™h]”hŒs64 i”…”�”}”(hj¼™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¸™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mnhj´™ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjÓ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÏ™h´MnhjЙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj´™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÏ™h´Mnhj±™ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjó™h]”hŒ atomic64_t *v”…”�”}”(hjõ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjñ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mohjí™ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jšh´Mohj šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjí™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jšh´Mohj±™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj•™ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj.šh]”hŒ Description”…”�”}”(hj0šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,šubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mqhj•™ubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjDšh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjLšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDšubhŒ to (”…”�”}”(hjDšh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj^šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDšubhŒ ^ ”…”�”}”(hjDšh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjpšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDšubhŒ) with acquire ordering.”…”�”}”(hjDšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mphj•™ubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_xor_acquire() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_xor_acquire() elsewhere.”…”�”}”(hj‰šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mrhj•™ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjššh]”hŒReturn”…”�”}”(hjœšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˜šubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mthj•™ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj°šh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¸šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°šubhŒ.”…”�”}”(hj°šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Muhj•™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_xor_release (C function)”Œ c.raw_atomic64_fetch_xor_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_xor_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_xor_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjôšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jöšŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_xor_release”sbŒ c.raw_atomic64_fetch_xor_release”†”asbuh1hhjíšh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MˆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjíšh²hh³j›h´Mˆubhÿ)�”}”(hŒraw_atomic64_fetch_xor_release”h]”j)�”}”(hj›h]”hŒraw_atomic64_fetch_xor_release”…”�”}”(hj(›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$›ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjíšh²hh³j›h´Mˆubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjF›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjC›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jH›Œmodname”NŒ classname”Njwjz)�”}”j}]”j›Œ c.raw_atomic64_fetch_xor_release”†”asbuh1hhj?›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?›ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjr›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj;›ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj�›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�›Œmodname”NŒ classname”Njwjz)�”}”j}]”j›Œ c.raw_atomic64_fetch_xor_release”†”asbuh1hhj†›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†›ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¹›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj†›ubj)�”}”(hjph]”hŒv”…”�”}”(hjÆ›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj;›ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjíšh²hh³j›h´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjéšh²hh³j›h´Mˆubah}”(h]”jäšah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j›h´Mˆhjæšh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with release ordering”h]”hŒ(atomic bitwise XOR with release ordering”…”�”}”(hjï›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mˆhjì›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjæšh²hh³j›h´Mˆubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjœjHjœjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** ^ **i**) with release ordering. Safe to use in noinstr code; prefer atomic64_fetch_xor_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒhj œubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj0œh]”hŒs64 i”…”�”}”(hj2œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj.œubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‰hj*œubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjIœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jEœh´M‰hjFœubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jEœh´M‰hj'œubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjiœh]”hŒ atomic64_t *v”…”�”}”(hjkœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgœubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŠhjcœubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj‚œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~œh´MŠhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~œh´MŠhj'œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj œubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒhj œubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjºœh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºœubhŒ to (”…”�”}”(hjºœh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÔœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºœubhŒ ^ ”…”�”}”(hjºœh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjæœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºœubhŒ) with release ordering.”…”�”}”(hjºœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‹hj œubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_xor_release() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_xor_release() elsewhere.”…”�”}”(hjÿœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hj œubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�h]”hŒReturn”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hj œubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj&�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj.�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&�ubhŒ.”…”�”}”(hj&�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hj œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+raw_atomic64_fetch_xor_relaxed (C function)”Œ c.raw_atomic64_fetch_xor_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_xor_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jl�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_xor_relaxed”sbŒ c.raw_atomic64_fetch_xor_relaxed”†”asbuh1hhjc�h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjc�h²hh³j‹�h´M¢ubhÿ)�”}”(hŒraw_atomic64_fetch_xor_relaxed”h]”j)�”}”(hjˆ�h]”hŒraw_atomic64_fetch_xor_relaxed”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjš�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjc�h²hh³j‹�h´M¢ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¼�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¾�Œmodname”NŒ classname”Njwjz)�”}”j}]”j†�Œ c.raw_atomic64_fetch_xor_relaxed”†”asbuh1hhjµ�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµ�ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjè�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±�ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jžŒmodname”NŒ classname”Njwjz)�”}”j}]”j†�Œ c.raw_atomic64_fetch_xor_relaxed”†”asbuh1hhjü�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjü�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj/žh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjü�ubj)�”}”(hjph]”hŒv”…”�”}”(hj<žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjc�h²hh³j‹�h´M¢ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj_�h²hh³j‹�h´M¢ubah}”(h]”jZ�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‹�h´M¢hj\�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(hježh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¢hjbžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj\�h²hh³j‹�h´M¢ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj}žjHj}žjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``s64 i`` s64 value ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** ^ **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic64_fetch_xor_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¦hj�žubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj¦žh]”hŒs64 i”…”�”}”(hj¨žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¤žubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M£hj žubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj¿žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjßžh]”hŒ atomic64_t *v”…”�”}”(hjážh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÝžubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¤hjÙžubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjøžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj�žubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¦hj�žubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj0Ÿh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ŸubhŒ to (”…”�”}”(hj0Ÿh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ŸubhŒ ^ ”…”�”}”(hj0Ÿh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj\Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ŸubhŒ) with relaxed ordering.”…”�”}”(hj0Ÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¥hj�žubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_xor_relaxed() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_xor_relaxed() elsewhere.”…”�”}”(hjuŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M§hj�žubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj†Ÿh]”hŒReturn”…”�”}”(hjˆŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M©hj�žubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjœŸh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¤Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœŸubhŒ.”…”�”}”(hjœŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mªhj�žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒraw_atomic64_xchg (C function)”Œc.raw_atomic64_xchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.s64 raw_atomic64_xchg (atomic64_t *v, s64 new)”h]”hù)�”}”(hŒ-s64 raw_atomic64_xchg(atomic64_t *v, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjàŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j⟌modname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_xchg”sbŒc.raw_atomic64_xchg”†”asbuh1hhjÙŸh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÙŸh²hh³j h´M¹ubhÿ)�”}”(hŒraw_atomic64_xchg”h]”j)�”}”(hjþŸh]”hŒraw_atomic64_xchg”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÙŸh²hh³j h´M¹ubj4)�”}”(hŒ(atomic64_t *v, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j4 Œmodname”NŒ classname”Njwjz)�”}”j}]”jüŸŒc.raw_atomic64_xchg”†”asbuh1hhj+ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+ ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj+ ubj)�”}”(hjph]”hŒv”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj' ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jˆ Œmodname”NŒ classname”Njwjz)�”}”j}]”jüŸŒc.raw_atomic64_xchg”†”asbuh1hhj ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj' ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÙŸh²hh³j h´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÕŸh²hh³j h´M¹ubah}”(h]”jПah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j h´M¹hjÒŸh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic exchange with full ordering”h]”hŒ"atomic exchange with full ordering”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¹hjÙ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÒŸh²hh³j h´M¹ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjô jHjô jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 new`` s64 value to assign **Description** Atomically updates **v** to **new** with full ordering. Safe to use in noinstr code; prefer atomic64_xchg() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M½hjø ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¡h]”hŒ atomic64_t *v”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mºhj¡ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj6¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j2¡h´Mºhj3¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j2¡h´Mºhj¡ubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hjV¡h]”hŒs64 new”…”�”}”(hjX¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjT¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M»hjP¡ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjo¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jk¡h´M»hjl¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjP¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jk¡h´M»hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjø ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M½hjø ubjM)�”}”(hŒ7Atomically updates **v** to **new** with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj§¡h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¯¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§¡ubhŒ to ”…”�”}”(hj§¡h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjÁ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§¡ubhŒ with full ordering.”…”�”}”(hj§¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¼hjø ubjM)�”}”(hŒ>Safe to use in noinstr code; prefer atomic64_xchg() elsewhere.”h]”hŒ>Safe to use in noinstr code; prefer atomic64_xchg() elsewhere.”…”�”}”(hjÚ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¾hjø ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjë¡h]”hŒReturn”…”�”}”(hjí¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjé¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÀhjø ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¢h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢ubhŒ.”…”�”}”(hj¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÁhjø ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic64_xchg_acquire (C function)”Œc.raw_atomic64_xchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6s64 raw_atomic64_xchg_acquire (atomic64_t *v, s64 new)”h]”hù)�”}”(hŒ5s64 raw_atomic64_xchg_acquire(atomic64_t *v, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjE¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jG¢Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_xchg_acquire”sbŒc.raw_atomic64_xchg_acquire”†”asbuh1hhj>¢h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÔubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>¢h²hh³jf¢h´MÔubhÿ)�”}”(hŒraw_atomic64_xchg_acquire”h]”j)�”}”(hjc¢h]”hŒraw_atomic64_xchg_acquire”…”�”}”(hjy¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhju¢ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj>¢h²hh³jf¢h´MÔubj4)�”}”(hŒ(atomic64_t *v, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj—¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j™¢Œmodname”NŒ classname”Njwjz)�”}”j}]”ja¢Œc.raw_atomic64_xchg_acquire”†”asbuh1hhj�¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�¢ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�¢ubj)�”}”(hjph]”hŒv”…”�”}”(hjТh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŒ¢ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjë¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jí¢Œmodname”NŒ classname”Njwjz)�”}”j}]”ja¢Œc.raw_atomic64_xchg_acquire”†”asbuh1hhjä¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj £h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjä¢ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŒ¢ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj>¢h²hh³jf¢h´MÔubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj:¢h²hh³jf¢h´MÔubah}”(h]”j5¢ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jf¢h´MÔhj7¢h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with acquire ordering”h]”hŒ%atomic exchange with acquire ordering”…”�”}”(hjA£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÔhj>£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj7¢h²hh³jf¢h´MÔubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjY£jHjY£jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 new`` s64 value to assign **Description** Atomically updates **v** to **new** with acquire ordering. Safe to use in noinstr code; prefer atomic64_xchg_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjc£h]”hŒ Parameters”…”�”}”(hje£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MØhj]£ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj‚£h]”hŒ atomic64_t *v”…”�”}”(hj„£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj€£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÕhj|£ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj›£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j—£h´MÕhj˜£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj|£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j—£h´MÕhjy£ubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj»£h]”hŒs64 new”…”�”}”(hj½£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¹£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÖhjµ£ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjÔ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jУh´MÖhjÑ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjµ£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jУh´MÖhjy£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj]£ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MØhj]£ubjM)�”}”(hŒ:Atomically updates **v** to **new** with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj ¤h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ¤ubhŒ to ”…”�”}”(hj ¤h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj&¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ¤ubhŒ with acquire ordering.”…”�”}”(hj ¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M×hj]£ubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic64_xchg_acquire() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_xchg_acquire() elsewhere.”…”�”}”(hj?¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÙhj]£ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjP¤h]”hŒReturn”…”�”}”(hjR¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÛhj]£ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjf¤h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjn¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjf¤ubhŒ.”…”�”}”(hjf¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÜhj]£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic64_xchg_release (C function)”Œc.raw_atomic64_xchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6s64 raw_atomic64_xchg_release (atomic64_t *v, s64 new)”h]”hù)�”}”(hŒ5s64 raw_atomic64_xchg_release(atomic64_t *v, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjª¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¬¤Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_xchg_release”sbŒc.raw_atomic64_xchg_release”†”asbuh1hhj£¤h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj̤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj£¤h²hh³jˤh´Mïubhÿ)�”}”(hŒraw_atomic64_xchg_release”h]”j)�”}”(hjȤh]”hŒraw_atomic64_xchg_release”…”�”}”(hjÞ¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ¤ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj£¤h²hh³jˤh´Mïubj4)�”}”(hŒ(atomic64_t *v, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjü¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjù¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jþ¤Œmodname”NŒ classname”Njwjz)�”}”j}]”jƤŒc.raw_atomic64_xchg_release”†”asbuh1hhjõ¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjõ¤ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj(¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjõ¤ubj)�”}”(hjph]”hŒv”…”�”}”(hj5¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõ¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjñ¤ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjP¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjM¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jR¥Œmodname”NŒ classname”Njwjz)�”}”j}]”jƤŒc.raw_atomic64_xchg_release”†”asbuh1hhjI¥ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn¥h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjI¥ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj|¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjI¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjñ¤ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj£¤h²hh³jˤh´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŸ¤h²hh³jˤh´Mïubah}”(h]”jš¤ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jˤh´Mïhjœ¤h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with release ordering”h]”hŒ%atomic exchange with release ordering”…”�”}”(hj¦¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mïhj£¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjœ¤h²hh³jˤh´Mïubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¾¥jHj¾¥jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 new`` s64 value to assign **Description** Atomically updates **v** to **new** with release ordering. Safe to use in noinstr code; prefer atomic64_xchg_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MóhjÂ¥ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjç¥h]”hŒ atomic64_t *v”…”�”}”(hjé¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjå¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mðhjá¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj ¦h]”hŒs64 new”…”�”}”(hj"¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mñhj¦ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hj9¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j5¦h´Mñhj6¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j5¦h´MñhjÞ¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÂ¥ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj[¦h]”hŒ Description”…”�”}”(hj]¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjY¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MóhjÂ¥ubjM)�”}”(hŒ:Atomically updates **v** to **new** with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjq¦h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjy¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjq¦ubhŒ to ”…”�”}”(hjq¦h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj‹¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjq¦ubhŒ with release ordering.”…”�”}”(hjq¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MòhjÂ¥ubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic64_xchg_release() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_xchg_release() elsewhere.”…”�”}”(hj¤¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MôhjÂ¥ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjµ¦h]”hŒReturn”…”�”}”(hj·¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MöhjÂ¥ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj˦h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÓ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˦ubhŒ.”…”�”}”(hj˦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M÷hjÂ¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic64_xchg_relaxed (C function)”Œc.raw_atomic64_xchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6s64 raw_atomic64_xchg_relaxed (atomic64_t *v, s64 new)”h]”hù)�”}”(hŒ5s64 raw_atomic64_xchg_relaxed(atomic64_t *v, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj §ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j§Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_xchg_relaxed”sbŒc.raw_atomic64_xchg_relaxed”†”asbuh1hhj§h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§h²hh³j0§h´M ubhÿ)�”}”(hŒraw_atomic64_xchg_relaxed”h]”j)�”}”(hj-§h]”hŒraw_atomic64_xchg_relaxed”…”�”}”(hjC§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?§ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj§h²hh³j0§h´M ubj4)�”}”(hŒ(atomic64_t *v, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hja§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jc§Œmodname”NŒ classname”Njwjz)�”}”j}]”j+§Œc.raw_atomic64_xchg_relaxed”†”asbuh1hhjZ§ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZ§ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjZ§ubj)�”}”(hjph]”hŒv”…”�”}”(hjš§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjV§ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjµ§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j·§Œmodname”NŒ classname”Njwjz)�”}”j}]”j+§Œc.raw_atomic64_xchg_relaxed”†”asbuh1hhj®§ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj®§ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjá§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjV§ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj§h²hh³j0§h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj§h²hh³j0§h´M ubah}”(h]”jÿ¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j0§h´M hj§h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with relaxed ordering”h]”hŒ%atomic exchange with relaxed ordering”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj§h²hh³j0§h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj#¨jHj#¨jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 new`` s64 value to assign **Description** Atomically updates **v** to **new** with relaxed ordering. Safe to use in noinstr code; prefer atomic64_xchg_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj'¨ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjL¨h]”hŒ atomic64_t *v”…”�”}”(hjN¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjF¨ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hje¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ja¨h´M hjb¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjF¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ja¨h´M hjC¨ubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj…¨h]”hŒs64 new”…”�”}”(hj‡¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj¨ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjž¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jš¨h´M hj›¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jš¨h´M hjC¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj'¨ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj'¨ubjM)�”}”(hŒ:Atomically updates **v** to **new** with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÖ¨h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÞ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ¨ubhŒ to ”…”�”}”(hjÖ¨h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjð¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ¨ubhŒ with relaxed ordering.”…”�”}”(hjÖ¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj'¨ubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic64_xchg_relaxed() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_xchg_relaxed() elsewhere.”…”�”}”(hj ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj'¨ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj©h]”hŒReturn”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj'¨ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj0©h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0©ubhŒ.”…”�”}”(hj0©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj'¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!raw_atomic64_cmpxchg (C function)”Œc.raw_atomic64_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:s64 raw_atomic64_cmpxchg (atomic64_t *v, s64 old, s64 new)”h]”hù)�”}”(hŒ9s64 raw_atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjt©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jv©Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_cmpxchg”sbŒc.raw_atomic64_cmpxchg”†”asbuh1hhjm©h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjm©h²hh³j•©h´M ubhÿ)�”}”(hŒraw_atomic64_cmpxchg”h]”j)�”}”(hj’©h]”hŒraw_atomic64_cmpxchg”…”�”}”(hj¨©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤©ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjm©h²hh³j•©h´M ubj4)�”}”(hŒ!(atomic64_t *v, s64 old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÆ©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÈ©Œmodname”NŒ classname”Njwjz)�”}”j}]”j�©Œc.raw_atomic64_cmpxchg”†”asbuh1hhj¿©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿©ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjò©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¿©ubj)�”}”(hjph]”hŒv”…”�”}”(hjÿ©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj»©ubj:)�”}”(hŒs64 old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jªŒmodname”NŒ classname”Njwjz)�”}”j}]”j�©Œc.raw_atomic64_cmpxchg”†”asbuh1hhjªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8ªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjªubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjFªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj»©ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjbªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jdªŒmodname”NŒ classname”Njwjz)�”}”j}]”j�©Œc.raw_atomic64_cmpxchg”†”asbuh1hhj[ªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[ªubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjŽªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj»©ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjm©h²hh³j•©h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hji©h²hh³j•©h´M ubah}”(h]”jd©ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j•©h´M hjf©h²hubj4)�”}”(hhh]”jM)�”}”(hŒ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hj¸ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hjµªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjf©h²hh³j•©h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjЪjHjЪjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX–**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 old`` s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_cmpxchg() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$hjÔªubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjùªh]”hŒ atomic64_t *v”…”�”}”(hjûªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj÷ªubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M!hjóªubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hj2«h]”hŒs64 old”…”�”}”(hj4«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M"hj,«ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hjK«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jG«h´M"hjH«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jG«h´M"hjðªubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hjk«h]”hŒs64 new”…”�”}”(hjm«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhji«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M#hje«ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hj„«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€«h´M#hj�«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhje«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€«h´M#hjðªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÔªubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M%hjÔªubjM)�”}”(hŒ‘If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj¼«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÄ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼«ubhŒ == ”…”�”}”(hj¼«h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjÖ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼«ubhŒ), atomically updates ”…”�”}”(hj¼«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjè«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼«ubhŒ to ”…”�”}”(hj¼«h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjú«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼«ubhŒ with full ordering. Otherwise, ”…”�”}”(hj¼«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼«ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj¼«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$hjÔªubjM)�”}”(hŒASafe to use in noinstr code; prefer atomic64_cmpxchg() elsewhere.”h]”hŒASafe to use in noinstr code; prefer atomic64_cmpxchg() elsewhere.”…”�”}”(hj%¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M'hjÔªubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj6¬h]”hŒReturn”…”�”}”(hj8¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M)hjÔªubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjL¬h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjT¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjL¬ubhŒ.”…”�”}”(hjL¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M*hjÔªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic64_cmpxchg_acquire (C function)”Œc.raw_atomic64_cmpxchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBs64 raw_atomic64_cmpxchg_acquire (atomic64_t *v, s64 old, s64 new)”h]”hù)�”}”(hŒAs64 raw_atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj�¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j’¬Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_cmpxchg_acquire”sbŒc.raw_atomic64_cmpxchg_acquire”†”asbuh1hhj‰¬h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰¬h²hh³j±¬h´M=ubhÿ)�”}”(hŒraw_atomic64_cmpxchg_acquire”h]”j)�”}”(hj®¬h]”hŒraw_atomic64_cmpxchg_acquire”…”�”}”(hjĬh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀ¬ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‰¬h²hh³j±¬h´M=ubj4)�”}”(hŒ!(atomic64_t *v, s64 old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”•h]”hŒ atomic64_t”…”�”}”(hjâ¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj߬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j䬌modname”NŒ classname”Njwjz)�”}”j}]”j¬¬Œc.raw_atomic64_cmpxchg_acquire”†”asbuh1hhjÛ¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛ¬ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÛ¬ubj)�”}”(hjph]”hŒv”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛ¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj׬ubj:)�”}”(hŒs64 old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj6­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j8­Œmodname”NŒ classname”Njwjz)�”}”j}]”j¬¬Œc.raw_atomic64_cmpxchg_acquire”†”asbuh1hhj/­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/­ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjb­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj׬ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj~­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j€­Œmodname”NŒ classname”Njwjz)�”}”j}]”j¬¬Œc.raw_atomic64_cmpxchg_acquire”†”asbuh1hhjw­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjw­ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjª­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjw­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj׬ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‰¬h²hh³j±¬h´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj…¬h²hh³j±¬h´M=ubah}”(h]”j€¬ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j±¬h´M=hj‚¬h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(hjÔ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M=hjÑ­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‚¬h²hh³j±¬h´M=ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjì­jHjì­jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX¡**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 old`` s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_cmpxchg_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MAhjð­ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj®h]”hŒ atomic64_t *v”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M>hj®ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj.®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hjN®h]”hŒs64 old”…”�”}”(hjP®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjL®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M?hjH®ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hjg®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jc®h´M?hjd®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjH®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jc®h´M?hj ®ubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj‡®h]”hŒs64 new”…”�”}”(hj‰®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj…®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M@hj�®ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hj ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjð­ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MBhjð­ubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjØ®h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjà®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØ®ubhŒ == ”…”�”}”(hjØ®h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjò®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØ®ubhŒ), atomically updates ”…”�”}”(hjØ®h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØ®ubhŒ to ”…”�”}”(hjØ®h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØ®ubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hjØ®h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj(¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØ®ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjØ®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MAhjð­ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic64_cmpxchg_acquire() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic64_cmpxchg_acquire() elsewhere.”…”�”}”(hjA¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MDhjð­ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjR¯h]”hŒReturn”…”�”}”(hjT¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MFhjð­ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjh¯h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjp¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh¯ubhŒ.”…”�”}”(hjh¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MGhjð­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic64_cmpxchg_release (C function)”Œc.raw_atomic64_cmpxchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBs64 raw_atomic64_cmpxchg_release (atomic64_t *v, s64 old, s64 new)”h]”hù)�”}”(hŒAs64 raw_atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¬¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j®¯Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_cmpxchg_release”sbŒc.raw_atomic64_cmpxchg_release”†”asbuh1hhj¥¯h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjίh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¥¯h²hh³jͯh´MZubhÿ)�”}”(hŒraw_atomic64_cmpxchg_release”h]”j)�”}”(hjʯh]”hŒraw_atomic64_cmpxchg_release”…”�”}”(hjà¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjܯubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¥¯h²hh³jͯh´MZubj4)�”}”(hŒ!(atomic64_t *v, s64 old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjþ¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjû¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j°Œmodname”NŒ classname”Njwjz)�”}”j}]”jȯŒc.raw_atomic64_cmpxchg_release”†”asbuh1hhj÷¯ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷¯ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj*°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj÷¯ubj)�”}”(hjph]”hŒv”…”�”}”(hj7°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjó¯ubj:)�”}”(hŒs64 old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjR°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jT°Œmodname”NŒ classname”Njwjz)�”}”j}]”jȯŒc.raw_atomic64_cmpxchg_release”†”asbuh1hhjK°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjK°ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj~°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjó¯ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjš°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jœ°Œmodname”NŒ classname”Njwjz)�”}”j}]”jȯŒc.raw_atomic64_cmpxchg_release”†”asbuh1hhj“°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“°ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjưh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjó¯ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¥¯h²hh³jͯh´MZubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¡¯h²hh³jͯh´MZubah}”(h]”jœ¯ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jͯh´MZhjž¯h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release ordering”…”�”}”(hjð°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MZhjí°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjž¯h²hh³jͯh´MZubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj±jHj±jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX¡**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 old`` s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_cmpxchg_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M^hj ±ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj1±h]”hŒ atomic64_t *v”…”�”}”(hj3±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj/±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M[hj+±ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjJ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jF±h´M[hjG±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj+±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jF±h´M[hj(±ubj©)�”}”(hŒ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hjj±h]”hŒs64 old”…”�”}”(hjl±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjh±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M\hjd±ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hjƒ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j±h´M\hj€±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjd±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j±h´M\hj(±ubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj£±h]”hŒs64 new”…”�”}”(hj¥±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¡±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M]hj�±ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hj¼±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj ±ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M_hj ±ubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjô±h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjü±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjô±ubhŒ == ”…”�”}”(hjô±h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjô±ubhŒ), atomically updates ”…”�”}”(hjô±h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjô±ubhŒ to ”…”�”}”(hjô±h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj2²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjô±ubhŒ# with release ordering. Otherwise, ”…”�”}”(hjô±h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjD²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjô±ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjô±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M^hj ±ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic64_cmpxchg_release() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic64_cmpxchg_release() elsewhere.”…”�”}”(hj]²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mahj ±ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjn²h]”hŒReturn”…”�”}”(hjp²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mchj ±ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj„²h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„²ubhŒ.”…”�”}”(hj„²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mdhj ±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic64_cmpxchg_relaxed (C function)”Œc.raw_atomic64_cmpxchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBs64 raw_atomic64_cmpxchg_relaxed (atomic64_t *v, s64 old, s64 new)”h]”hù)�”}”(hŒAs64 raw_atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjȲh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŲubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jʲŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_cmpxchg_relaxed”sbŒc.raw_atomic64_cmpxchg_relaxed”†”asbuh1hhjÁ²h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê²h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁ²h²hh³jé²h´Mvubhÿ)�”}”(hŒraw_atomic64_cmpxchg_relaxed”h]”j)�”}”(hjæ²h]”hŒraw_atomic64_cmpxchg_relaxed”…”�”}”(hjü²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjø²ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÁ²h²hh³jé²h´Mvubj4)�”}”(hŒ!(atomic64_t *v, s64 old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j³Œmodname”NŒ classname”Njwjz)�”}”j}]”j䲌c.raw_atomic64_cmpxchg_relaxed”†”asbuh1hhj³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj³ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjF³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj³ubj)�”}”(hjph]”hŒv”…”�”}”(hjS³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj³ubj:)�”}”(hŒs64 old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjn³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jp³Œmodname”NŒ classname”Njwjz)�”}”j}]”j䲌c.raw_atomic64_cmpxchg_relaxed”†”asbuh1hhjg³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjg³ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjš³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj³ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj¶³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¸³Œmodname”NŒ classname”Njwjz)�”}”j}]”j䲌c.raw_atomic64_cmpxchg_relaxed”†”asbuh1hhj¯³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯³ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjâ³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj³ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÁ²h²hh³jé²h´Mvubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj½²h²hh³jé²h´Mvubah}”(h]”j¸²ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jé²h´Mvhjº²h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with relaxed ordering”h]”hŒ1atomic compare and exchange with relaxed ordering”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mvhj ´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjº²h²hh³jé²h´Mvubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj$´jHj$´jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX¡**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 old`` s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_cmpxchg_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj.´h]”hŒ Parameters”…”�”}”(hj0´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mzhj(´ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjM´h]”hŒ atomic64_t *v”…”�”}”(hjO´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjK´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MwhjG´ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjf´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jb´h´Mwhjc´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjG´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jb´h´MwhjD´ubj©)�”}”(hŒ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hj†´h]”hŒs64 old”…”�”}”(hjˆ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj„´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mxhj€´ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hjŸ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j›´h´Mxhjœ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj€´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›´h´MxhjD´ubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj¿´h]”hŒs64 new”…”�”}”(hjÁ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj½´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Myhj¹´ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjØ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÔ´h´MyhjÕ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¹´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÔ´h´MyhjD´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj(´ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M{hj(´ubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjµh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµubhŒ == ”…”�”}”(hjµh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj*µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµubhŒ), atomically updates ”…”�”}”(hjµh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj<µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµubhŒ to ”…”�”}”(hjµh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjNµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hjµh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjµh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mzhj(´ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic64_cmpxchg_relaxed() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic64_cmpxchg_relaxed() elsewhere.”…”�”}”(hjyµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M}hj(´ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjеh]”hŒReturn”…”�”}”(hjŒµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆµubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj(´ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj µh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¨µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj µubhŒ.”…”�”}”(hj µh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M€hj(´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%raw_atomic64_try_cmpxchg (C function)”Œc.raw_atomic64_try_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@bool raw_atomic64_try_cmpxchg (atomic64_t *v, s64 *old, s64 new)”h]”hù)�”}”(hŒ?bool raw_atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjáµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjݵh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjݵh²hh³jîµh´M�ubhÿ)�”}”(hŒraw_atomic64_try_cmpxchg”h]”j)�”}”(hŒraw_atomic64_try_cmpxchg”h]”hŒraw_atomic64_try_cmpxchg”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýµubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjݵh²hh³jîµh´M�ubj4)�”}”(hŒ"(atomic64_t *v, s64 *old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj ¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j"¶Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¶sbŒc.raw_atomic64_try_cmpxchg”†”asbuh1hhj¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@¶h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¶ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjN¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¶ubj)�”}”(hjph]”hŒv”…”�”}”(hj[¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¶ubj:)�”}”(hŒs64 *old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjv¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jx¶Œmodname”NŒ classname”Njwjz)�”}”j}]”j<¶Œc.raw_atomic64_try_cmpxchg”†”asbuh1hhjo¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”¶h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjo¶ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¢¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjo¶ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj¯¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjo¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¶ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj˶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjȶubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jͶŒmodname”NŒ classname”Njwjz)�”}”j}]”j<¶Œc.raw_atomic64_try_cmpxchg”†”asbuh1hhjĶubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé¶h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjĶubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj÷¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjĶubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjݵh²hh³jîµh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÙµh²hh³jîµh´M�ubah}”(h]”jÔµah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jîµh´M�hjÖµh²hubj4)�”}”(hhh]”jM)�”}”(hŒ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hj!·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hj·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÖµh²hh³jîµh´M�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj9·jHj9·jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXô**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 *old`` pointer to s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_try_cmpxchg() elsewhere. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjC·h]”hŒ Parameters”…”�”}”(hjE·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjA·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M“hj=·ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjb·h]”hŒ atomic64_t *v”…”�”}”(hjd·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj`·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M�hj\·ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj{·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jw·h´M�hjx·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj\·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jw·h´M�hjY·ubj©)�”}”(hŒ2``s64 *old`` pointer to s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 *old``”h]”jS)�”}”(hj›·h]”hŒs64 *old”…”�”}”(hj�·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj™·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M‘hj•·ubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to s64 value to compare with”h]”hŒ$pointer to s64 value to compare with”…”�”}”(hj´·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j°·h´M‘hj±·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj•·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j°·h´M‘hjY·ubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hjÔ·h]”hŒs64 new”…”�”}”(hjÖ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÒ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M’hjηubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjí·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jé·h´M’hjê·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjηubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jé·h´M’hjY·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj=·ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M”hj=·ubjM)�”}”(hŒÄIf (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj%¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj-¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%¸ubhŒ == ”…”�”}”(hj%¸h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj?¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%¸ubhŒ), atomically updates ”…”�”}”(hj%¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjQ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%¸ubhŒ to ”…”�”}”(hj%¸h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjc¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%¸ubhŒ with full ordering. Otherwise, ”…”�”}”(hj%¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hju¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%¸ubhŒ is not modified, ”…”�”}”(hj%¸h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj‡¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%¸ubhŒ$ is updated to the current value of ”…”�”}”(hj%¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%¸ubhŒ#, and relaxed ordering is provided.”…”�”}”(hj%¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M“hj=·ubjM)�”}”(hŒESafe to use in noinstr code; prefer atomic64_try_cmpxchg() elsewhere.”h]”hŒESafe to use in noinstr code; prefer atomic64_try_cmpxchg() elsewhere.”…”�”}”(hj²¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M—hj=·ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjøh]”hŒReturn”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÁ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M™hj=·ubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjݸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙ¸ubhŒ if the exchange occurred, ”…”�”}”(hjÙ¸h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjï¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙ¸ubhŒ otherwise.”…”�”}”(hjÙ¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mšhj=·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-raw_atomic64_try_cmpxchg_acquire (C function)”Œ"c.raw_atomic64_try_cmpxchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒHbool raw_atomic64_try_cmpxchg_acquire (atomic64_t *v, s64 *old, s64 new)”h]”hù)�”}”(hŒGbool raw_atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj(¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$¹h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M±ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$¹h²hh³j5¹h´M±ubhÿ)�”}”(hŒ raw_atomic64_try_cmpxchg_acquire”h]”j)�”}”(hŒ raw_atomic64_try_cmpxchg_acquire”h]”hŒ raw_atomic64_try_cmpxchg_acquire”…”�”}”(hjH¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjD¹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj$¹h²hh³j5¹h´M±ubj4)�”}”(hŒ"(atomic64_t *v, s64 *old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjg¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”ji¹Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjJ¹sbŒ"c.raw_atomic64_try_cmpxchg_acquire”†”asbuh1hhj`¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`¹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj•¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj`¹ubj)�”}”(hjph]”hŒv”…”�”}”(hj¢¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj\¹ubj:)�”}”(hŒs64 *old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj½¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjº¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¿¹Œmodname”NŒ classname”Njwjz)�”}”j}]”jƒ¹Œ"c.raw_atomic64_try_cmpxchg_acquire”†”asbuh1hhj¶¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¶¹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjé¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¶¹ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjö¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj\¹ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jºŒmodname”NŒ classname”Njwjz)�”}”j}]”jƒ¹Œ"c.raw_atomic64_try_cmpxchg_acquire”†”asbuh1hhj ºubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0ºh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ºubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj>ºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj\¹ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj$¹h²hh³j5¹h´M±ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj ¹h²hh³j5¹h´M±ubah}”(h]”j¹ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j5¹h´M±hj¹h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(hjhºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M±hjeºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¹h²hh³j5¹h´M±ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj€ºjHj€ºjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXÿ**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 *old`` pointer to s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_try_cmpxchg_acquire() elsewhere. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mµhj„ºubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj©ºh]”hŒ atomic64_t *v”…”�”}”(hj«ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj§ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M²hj£ºubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ2``s64 *old`` pointer to s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 *old``”h]”jS)�”}”(hjâºh]”hŒs64 *old”…”�”}”(hjäºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjàºubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M³hjܺubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to s64 value to compare with”h]”hŒ$pointer to s64 value to compare with”…”�”}”(hjûºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj»h]”hŒs64 new”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M´hj»ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hj4»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j0»h´M´hj1»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j0»h´M´hj ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj„ºubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjV»h]”hŒ Description”…”�”}”(hjX»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjT»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¶hj„ºubjM)�”}”(hŒÇIf (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjl»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjt»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl»ubhŒ == ”…”�”}”(hjl»h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj†»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl»ubhŒ), atomically updates ”…”�”}”(hjl»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj˜»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl»ubhŒ to ”…”�”}”(hjl»h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjª»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl»ubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hjl»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¼»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl»ubhŒ is not modified, ”…”�”}”(hjl»h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjλh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl»ubhŒ$ is updated to the current value of ”…”�”}”(hjl»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjà»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl»ubhŒ#, and relaxed ordering is provided.”…”�”}”(hjl»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mµhj„ºubjM)�”}”(hŒMSafe to use in noinstr code; prefer atomic64_try_cmpxchg_acquire() elsewhere.”h]”hŒMSafe to use in noinstr code; prefer atomic64_try_cmpxchg_acquire() elsewhere.”…”�”}”(hjù»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¹hj„ºubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj ¼h]”hŒReturn”…”�”}”(hj ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M»hj„ºubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj$¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ¼ubhŒ if the exchange occurred, ”…”�”}”(hj ¼h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj6¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ¼ubhŒ otherwise.”…”�”}”(hj ¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¼hj„ºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-raw_atomic64_try_cmpxchg_release (C function)”Œ"c.raw_atomic64_try_cmpxchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒHbool raw_atomic64_try_cmpxchg_release (atomic64_t *v, s64 *old, s64 new)”h]”hù)�”}”(hŒGbool raw_atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjo¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjk¼h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}¼h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjk¼h²hh³j|¼h´MÓubhÿ)�”}”(hŒ raw_atomic64_try_cmpxchg_release”h]”j)�”}”(hŒ raw_atomic64_try_cmpxchg_release”h]”hŒ raw_atomic64_try_cmpxchg_release”…”�”}”(hj�¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹¼ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjk¼h²hh³j|¼h´MÓubj4)�”}”(hŒ"(atomic64_t *v, s64 *old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj®¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j°¼Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‘¼sbŒ"c.raw_atomic64_try_cmpxchg_release”†”asbuh1hhj§¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjμh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§¼ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjܼh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj§¼ubj)�”}”(hjph]”hŒv”…”�”}”(hjé¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj£¼ubj:)�”}”(hŒs64 *old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j½Œmodname”NŒ classname”Njwjz)�”}”j}]”jʼŒ"c.raw_atomic64_try_cmpxchg_release”†”asbuh1hhjý¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjý¼ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj0½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjý¼ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj=½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjý¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj£¼ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjY½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjV½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j[½Œmodname”NŒ classname”Njwjz)�”}”j}]”jʼŒ"c.raw_atomic64_try_cmpxchg_release”†”asbuh1hhjR½ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjR½ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj…½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjR½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj£¼ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjk¼h²hh³j|¼h´MÓubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjg¼h²hh³j|¼h´MÓubah}”(h]”jb¼ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j|¼h´MÓhjd¼h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release ordering”…”�”}”(hj¯½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÓhj¬½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjd¼h²hh³j|¼h´MÓubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjǽjHjǽjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXÿ**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 *old`` pointer to s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_try_cmpxchg_release() elsewhere. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M×hj˽ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjð½h]”hŒ atomic64_t *v”…”�”}”(hjò½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjî½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÔhjê½ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ2``s64 *old`` pointer to s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 *old``”h]”jS)�”}”(hj)¾h]”hŒs64 *old”…”�”}”(hj+¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj'¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÕhj#¾ubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to s64 value to compare with”h]”hŒ$pointer to s64 value to compare with”…”�”}”(hjB¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hjb¾h]”hŒs64 new”…”�”}”(hjd¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj`¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÖhj\¾ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hj{¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jw¾h´MÖhjx¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj\¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jw¾h´MÖhjç½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj˽ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MØhj˽ubjM)�”}”(hŒÇIf (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj³¾h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj»¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³¾ubhŒ == ”…”�”}”(hj³¾h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³¾ubhŒ), atomically updates ”…”�”}”(hj³¾h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjß¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³¾ubhŒ to ”…”�”}”(hj³¾h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjñ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³¾ubhŒ# with release ordering. Otherwise, ”…”�”}”(hj³¾h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³¾ubhŒ is not modified, ”…”�”}”(hj³¾h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³¾ubhŒ$ is updated to the current value of ”…”�”}”(hj³¾h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj'¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³¾ubhŒ#, and relaxed ordering is provided.”…”�”}”(hj³¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M×hj˽ubjM)�”}”(hŒMSafe to use in noinstr code; prefer atomic64_try_cmpxchg_release() elsewhere.”h]”hŒMSafe to use in noinstr code; prefer atomic64_try_cmpxchg_release() elsewhere.”…”�”}”(hj@¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÛhj˽ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjQ¿h]”hŒReturn”…”�”}”(hjS¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjO¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝhj˽ubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjk¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjg¿ubhŒ if the exchange occurred, ”…”�”}”(hjg¿h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj}¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjg¿ubhŒ otherwise.”…”�”}”(hjg¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÞhj˽ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-raw_atomic64_try_cmpxchg_relaxed (C function)”Œ"c.raw_atomic64_try_cmpxchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒHbool raw_atomic64_try_cmpxchg_relaxed (atomic64_t *v, s64 *old, s64 new)”h]”hù)�”}”(hŒGbool raw_atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj¶¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj²¿h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MôubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ¿h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²¿h²hh³jÿh´Môubhÿ)�”}”(hŒ raw_atomic64_try_cmpxchg_relaxed”h]”j)�”}”(hŒ raw_atomic64_try_cmpxchg_relaxed”h]”hŒ raw_atomic64_try_cmpxchg_relaxed”…”�”}”(hjÖ¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒ¿ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj²¿h²hh³jÿh´Môubj4)�”}”(hŒ"(atomic64_t *v, s64 *old, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjõ¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j÷¿Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjØ¿sbŒ"c.raw_atomic64_try_cmpxchg_relaxed”†”asbuh1hhjî¿ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî¿ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj#Àh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjî¿ubj)�”}”(hjph]”hŒv”…”�”}”(hj0Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê¿ubj:)�”}”(hŒs64 *old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjKÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jMÀŒmodname”NŒ classname”Njwjz)�”}”j}]”jÀŒ"c.raw_atomic64_try_cmpxchg_relaxed”†”asbuh1hhjDÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjDÀubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjwÀh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjDÀubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj„Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê¿ubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¢ÀŒmodname”NŒ classname”Njwjz)�”}”j}]”jÀŒ"c.raw_atomic64_try_cmpxchg_relaxed”†”asbuh1hhj™ÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Àh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™Àubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjÌÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê¿ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj²¿h²hh³jÿh´Môubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj®¿h²hh³jÿh´Môubah}”(h]”j©¿ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÿh´Môhj«¿h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with relaxed ordering”h]”hŒ1atomic compare and exchange with relaxed ordering”…”�”}”(hjöÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MôhjóÀh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj«¿h²hh³jÿh´Môubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÁjHjÁjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXÿ**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 *old`` pointer to s64 value to compare with ``s64 new`` s64 value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_try_cmpxchg_relaxed() elsewhere. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MøhjÁubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj7Áh]”hŒ atomic64_t *v”…”�”}”(hj9Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mõhj1ÁubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjPÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jLÁh´MõhjMÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jLÁh´Mõhj.Áubj©)�”}”(hŒ2``s64 *old`` pointer to s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 *old``”h]”jS)�”}”(hjpÁh]”hŒs64 *old”…”�”}”(hjrÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjnÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MöhjjÁubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to s64 value to compare with”h]”hŒ$pointer to s64 value to compare with”…”�”}”(hj‰Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j…Áh´Möhj†Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…Áh´Möhj.Áubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj©Áh]”hŒs64 new”…”�”}”(hj«Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj§Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M÷hj£ÁubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjÂÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjÁubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MùhjÁubjM)�”}”(hŒÇIf (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified, **old** is updated to the current value of **v**, and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjúÁh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjúÁubhŒ == ”…”�”}”(hjúÁh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjúÁubhŒ), atomically updates ”…”�”}”(hjúÁh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj&Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjúÁubhŒ to ”…”�”}”(hjúÁh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj8Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjúÁubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hjúÁh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjúÁubhŒ is not modified, ”…”�”}”(hjúÁh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj\Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjúÁubhŒ$ is updated to the current value of ”…”�”}”(hjúÁh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjnÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjúÁubhŒ#, and relaxed ordering is provided.”…”�”}”(hjúÁh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MøhjÁubjM)�”}”(hŒMSafe to use in noinstr code; prefer atomic64_try_cmpxchg_relaxed() elsewhere.”h]”hŒMSafe to use in noinstr code; prefer atomic64_try_cmpxchg_relaxed() elsewhere.”…”�”}”(hj‡Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MühjÁubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj˜Âh]”hŒReturn”…”�”}”(hjšÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MþhjÁubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj²Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®ÂubhŒ if the exchange occurred, ”…”�”}”(hj®Âh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjÄÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®ÂubhŒ otherwise.”…”�”}”(hj®Âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÿhjÁubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic64_sub_and_test (C function)”Œc.raw_atomic64_sub_and_test”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5bool raw_atomic64_sub_and_test (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4bool raw_atomic64_sub_and_test(s64 i, atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjýÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjù•h²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùÂh²hh³j Ãh´Mubhÿ)�”}”(hŒraw_atomic64_sub_and_test”h]”j)�”}”(hŒraw_atomic64_sub_and_test”h]”hŒraw_atomic64_sub_and_test”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjùÂh²hh³j Ãh´Mubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj<Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9Ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j>ÃŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÃsbŒc.raw_atomic64_sub_and_test”†”asbuh1hhj5ÃubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5Ãubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj1Ãubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj…Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚Ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‡ÃŒmodname”NŒ classname”Njwjz)�”}”j}]”jXÃŒc.raw_atomic64_sub_and_test”†”asbuh1hhj~ÃubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£Ãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~Ãubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj±Ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj~Ãubj)�”}”(hjph]”hŒv”…”�”}”(hj¾Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj1Ãubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjùÂh²hh³j Ãh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjõÂh²hh³j Ãh´Mubah}”(h]”jðÂah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j Ãh´MhjòÂh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic subtract and test if zero with full ordering”h]”hŒ3atomic subtract and test if zero with full ordering”…”�”}”(hjçÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjäÃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjòÂh²hh³j Ãh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÿÃjHjÿÃjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXJ**Parameters** ``s64 i`` s64 value to subtract ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Safe to use in noinstr code; prefer atomic64_sub_and_test() elsewhere. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÄubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj(Äh]”hŒs64 i”…”�”}”(hj*Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj&Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj"ÄubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hjAÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j=Äh´Mhj>Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj"Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j=Äh´MhjÄubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjaÄh]”hŒ atomic64_t *v”…”�”}”(hjcÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj_Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj[ÄubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjzÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jvÄh´MhjwÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj[Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jvÄh´MhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÄubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÄubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj²Äh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjºÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj²ÄubhŒ to (”…”�”}”(hj²Äh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÌÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj²ÄubhŒ - ”…”�”}”(hj²Äh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÞÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj²ÄubhŒ) with full ordering.”…”�”}”(hj²Äh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÄubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic64_sub_and_test() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_sub_and_test() elsewhere.”…”�”}”(hj÷Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÄubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÅh]”hŒReturn”…”�”}”(hj Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÄubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj"Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubhŒ if the resulting value of ”…”�”}”(hjÅh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj4Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubhŒ is zero, ”…”�”}”(hjÅh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjFÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubhŒ otherwise.”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÄubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic64_dec_and_test (C function)”Œc.raw_atomic64_dec_and_test”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.bool raw_atomic64_dec_and_test (atomic64_t *v)”h]”hù)�”}”(hŒ-bool raw_atomic64_dec_and_test(atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj{Åh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M'ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Åh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{Åh²hh³jŒÅh´M'ubhÿ)�”}”(hŒraw_atomic64_dec_and_test”h]”j)�”}”(hŒraw_atomic64_dec_and_test”h]”hŒraw_atomic64_dec_and_test”…”�”}”(hjŸÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›Åubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj{Åh²hh³jŒÅh´M'ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj¾Åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»Åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÀÅŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¡ÅsbŒc.raw_atomic64_dec_and_test”†”asbuh1hhj·ÅubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞÅh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·Åubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjìÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj·Åubj)�”}”(hjph]”hŒv”…”�”}”(hjùÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj³Åubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj{Åh²hh³jŒÅh´M'ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjwÅh²hh³jŒÅh´M'ubah}”(h]”jrÅah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŒÅh´M'hjtÅh²hubj4)�”}”(hhh]”jM)�”}”(hŒ4atomic decrement and test if zero with full ordering”h]”hŒ4atomic decrement and test if zero with full ordering”…”�”}”(hj"Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M'hjÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjtÅh²hh³jŒÅh´M'ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj:ÆjHj:ÆjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX#**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Safe to use in noinstr code; prefer atomic64_dec_and_test() elsewhere. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjDÆh]”hŒ Parameters”…”�”}”(hjFÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M+hj>Æubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjcÆh]”hŒ atomic64_t *v”…”�”}”(hjeÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjaÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M(hj]ÆubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj|Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jxÆh´M(hjyÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jxÆh´M(hjZÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj>ÆubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M*hj>ÆubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj´Æh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¼Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´ÆubhŒ to (”…”�”}”(hj´Æh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÎÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´ÆubhŒ - 1) with full ordering.”…”�”}”(hj´Æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M)hj>ÆubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic64_dec_and_test() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_dec_and_test() elsewhere.”…”�”}”(hjçÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M+hj>ÆubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjøÆh]”hŒReturn”…”�”}”(hjúÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjöÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M-hj>ÆubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÇubhŒ if the resulting value of ”…”�”}”(hjÇh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj$Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÇubhŒ is zero, ”…”�”}”(hjÇh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj6Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÇubhŒ otherwise.”…”�”}”(hjÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M.hj>Æubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic64_inc_and_test (C function)”Œc.raw_atomic64_inc_and_test”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.bool raw_atomic64_inc_and_test (atomic64_t *v)”h]”hù)�”}”(hŒ-bool raw_atomic64_inc_and_test(atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjoÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjkÇh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Çh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjkÇh²hh³j|Çh´M;ubhÿ)�”}”(hŒraw_atomic64_inc_and_test”h]”j)�”}”(hŒraw_atomic64_inc_and_test”h]”hŒraw_atomic64_inc_and_test”…”�”}”(hj�Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹Çubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjkÇh²hh³j|Çh´M;ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj®Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«Çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j°ÇŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‘ÇsbŒc.raw_atomic64_inc_and_test”†”asbuh1hhj§ÇubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§Çubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÜÇh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj§Çubj)�”}”(hjph]”hŒv”…”�”}”(hjéÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj£Çubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjkÇh²hh³j|Çh´M;ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjgÇh²hh³j|Çh´M;ubah}”(h]”jbÇah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j|Çh´M;hjdÇh²hubj4)�”}”(hhh]”jM)�”}”(hŒ4atomic increment and test if zero with full ordering”h]”hŒ4atomic increment and test if zero with full ordering”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M;hjÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjdÇh²hh³j|Çh´M;ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj*ÈjHj*ÈjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX#**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Safe to use in noinstr code; prefer atomic64_inc_and_test() elsewhere. **Return** **true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj4Èh]”hŒ Parameters”…”�”}”(hj6Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M?hj.Èubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjSÈh]”hŒ atomic64_t *v”…”�”}”(hjUÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjQÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M<hjMÈubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjlÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jhÈh´M<hjiÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjMÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jhÈh´M<hjJÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj.ÈubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M>hj.ÈubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¤Èh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¬Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤ÈubhŒ to (”…”�”}”(hj¤Èh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¾Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤ÈubhŒ + 1) with full ordering.”…”�”}”(hj¤Èh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M=hj.ÈubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic64_inc_and_test() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_inc_and_test() elsewhere.”…”�”}”(hj×Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M?hj.ÈubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjèÈh]”hŒReturn”…”�”}”(hjêÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MAhj.ÈubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþÈubhŒ if the resulting value of ”…”�”}”(hjþÈh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþÈubhŒ is zero, ”…”�”}”(hjþÈh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj&Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþÈubhŒ otherwise.”…”�”}”(hjþÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MBhj.Èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic64_add_negative (C function)”Œc.raw_atomic64_add_negative”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5bool raw_atomic64_add_negative (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4bool raw_atomic64_add_negative(s64 i, atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj_Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj[Éh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmÉh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[Éh²hh³jlÉh´MOubhÿ)�”}”(hŒraw_atomic64_add_negative”h]”j)�”}”(hŒraw_atomic64_add_negative”h]”hŒraw_atomic64_add_negative”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{Éubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj[Éh²hh³jlÉh´MOubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjžÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›Éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j ÉŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj�ÉsbŒc.raw_atomic64_add_negative”†”asbuh1hhj—ÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Éh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj—Éubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÌÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj“Éubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjçÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jéÉŒmodname”NŒ classname”Njwjz)�”}”j}]”jºÉŒc.raw_atomic64_add_negative”†”asbuh1hhjàÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàÉubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjàÉubj)�”}”(hjph]”hŒv”…”�”}”(hj Êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj“Éubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj[Éh²hh³jlÉh´MOubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjWÉh²hh³jlÉh´MOubah}”(h]”jRÉah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jlÉh´MOhjTÉh²hubj4)�”}”(hhh]”jM)�”}”(hŒ2atomic add and test if negative with full ordering”h]”hŒ2atomic add and test if negative with full ordering”…”�”}”(hjIÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MOhjFÊh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjTÉh²hh³jlÉh´MOubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjaÊjHjaÊjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXI**Parameters** ``s64 i`` s64 value to add ``atomic64_t *v`` pointer to atomic64_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Safe to use in noinstr code; prefer atomic64_add_negative() elsewhere. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjkÊh]”hŒ Parameters”…”�”}”(hjmÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjiÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MShjeÊubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjŠÊh]”hŒs64 i”…”�”}”(hjŒÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjˆÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MPhj„ÊubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj£Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŸÊh´MPhj Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj„Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŸÊh´MPhj�Êubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÃÊh]”hŒ atomic64_t *v”…”�”}”(hjÅÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÁÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MQhj½ÊubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÜÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jØÊh´MQhjÙÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj½Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jØÊh´MQhj�Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjeÊubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MShjeÊubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjËh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËubhŒ to (”…”�”}”(hjËh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj.Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËubhŒ + ”…”�”}”(hjËh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj@Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËubhŒ) with full ordering.”…”�”}”(hjËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MRhjeÊubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic64_add_negative() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_add_negative() elsewhere.”…”�”}”(hjYËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MThjeÊubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjjËh]”hŒReturn”…”�”}”(hjlËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhËubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MVhjeÊubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj„Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€ËubhŒ if the resulting value of ”…”�”}”(hj€Ëh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj–Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€ËubhŒ is negative, ”…”�”}”(hj€Ëh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj¨Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€ËubhŒ otherwise.”…”�”}”(hj€Ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MWhjeÊubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic64_add_negative_acquire (C function)”Œ#c.raw_atomic64_add_negative_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=bool raw_atomic64_add_negative_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒs64 raw_atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjjÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgÓubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jlÓŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_add_unless”sbŒc.raw_atomic64_fetch_add_unless”†”asbuh1hhjcÓh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcÓh²hh³j‹Óh´M¶ubhÿ)�”}”(hŒraw_atomic64_fetch_add_unless”h]”j)�”}”(hjˆÓh]”hŒraw_atomic64_fetch_add_unless”…”�”}”(hjžÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšÓubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjcÓh²hh³j‹Óh´M¶ubj4)�”}”(hŒ(atomic64_t *v, s64 a, s64 u)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj¼Óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹Óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¾ÓŒmodname”NŒ classname”Njwjz)�”}”j}]”j†ÓŒc.raw_atomic64_fetch_add_unless”†”asbuh1hhjµÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµÓubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjèÓh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjµÓubj)�”}”(hjph]”hŒv”…”�”}”(hjõÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±Óubj:)�”}”(hŒs64 a”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÔŒmodname”NŒ classname”Njwjz)�”}”j}]”j†ÓŒc.raw_atomic64_fetch_add_unless”†”asbuh1hhj ÔubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Ôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Ôubj)�”}”(hj¯Ãh]”hŒa”…”�”}”(hj<Ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±Óubj:)�”}”(hŒs64 u”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjWÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jYÔŒmodname”NŒ classname”Njwjz)�”}”j}]”j†ÓŒc.raw_atomic64_fetch_add_unless”†”asbuh1hhjPÔubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuÔh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPÔubj)�”}”(hj÷lh]”hŒu”…”�”}”(hjƒÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±Óubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjcÓh²hh³j‹Óh´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj_Óh²hh³j‹Óh´M¶ubah}”(h]”jZÓah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‹Óh´M¶hj\Óh²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hj¬Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¶hj©Ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj\Óh²hh³j‹Óh´M¶ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÄÔjHjÄÔjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXž**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 a`` s64 value to add ``s64 u`` s64 value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_fetch_add_unless() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MºhjÈÔubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjíÔh]”hŒ atomic64_t *v”…”�”}”(hjïÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjëÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M·hjçÔubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``s64 a`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 a``”h]”jS)�”}”(hj&Õh]”hŒs64 a”…”�”}”(hj(Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj$Õubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¸hj ÕubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hj?Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``s64 u`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 u``”h]”jS)�”}”(hj_Õh]”hŒs64 u”…”�”}”(hjaÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj]Õubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¹hjYÕubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hjxÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jtÕh´M¹hjuÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjYÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jtÕh´M¹hjäÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÈÔubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M»hjÈÔubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj°Õh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¸Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°ÕubhŒ != ”…”�”}”(hj°Õh²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hjÊÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°ÕubhŒ), atomically updates ”…”�”}”(hj°Õh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÜÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°ÕubhŒ to (”…”�”}”(hj°Õh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjîÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°ÕubhŒ + ”…”�”}”(hj°Õh²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°ÕubhŒ!) with full ordering. Otherwise, ”…”�”}”(hj°Õh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°ÕubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj°Õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MºhjÈÔubjM)�”}”(hŒJSafe to use in noinstr code; prefer atomic64_fetch_add_unless() elsewhere.”h]”hŒJSafe to use in noinstr code; prefer atomic64_fetch_add_unless() elsewhere.”…”�”}”(hj+Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M½hjÈÔubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj<Öh]”hŒReturn”…”�”}”(hj>Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¿hjÈÔubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjRÖh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRÖubhŒ.”…”�”}”(hjRÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÀhjÈÔubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic64_add_unless (C function)”Œc.raw_atomic64_add_unless”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:bool raw_atomic64_add_unless (atomic64_t *v, s64 a, s64 u)”h]”hù)�”}”(hŒ9bool raw_atomic64_add_unless(atomic64_t *v, s64 a, s64 u)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj“Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�Öh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÔubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Öh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Öh²hh³j Öh´MÔubhÿ)�”}”(hŒraw_atomic64_add_unless”h]”j)�”}”(hŒraw_atomic64_add_unless”h]”hŒraw_atomic64_add_unless”…”�”}”(hj³Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯Öubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�Öh²hh³j Öh´MÔubj4)�”}”(hŒ(atomic64_t *v, s64 a, s64 u)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÒÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÔÖŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjµÖsbŒc.raw_atomic64_add_unless”†”asbuh1hhjËÖubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòÖh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjËÖubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjËÖubj)�”}”(hjph]”hŒv”…”�”}”(hj ×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjËÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÇÖubj:)�”}”(hŒs64 a”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj(×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j*׌modname”NŒ classname”Njwjz)�”}”j}]”jîÖŒc.raw_atomic64_add_unless”†”asbuh1hhj!×ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF×h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!×ubj)�”}”(hj¯Ãh]”hŒa”…”�”}”(hjT×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj!×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÇÖubj:)�”}”(hŒs64 u”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjo×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jq׌modname”NŒ classname”Njwjz)�”}”j}]”jîÖŒc.raw_atomic64_add_unless”†”asbuh1hhjh×ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�×h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh×ubj)�”}”(hj÷lh]”hŒu”…”�”}”(hj›×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÇÖubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�Öh²hh³j Öh´MÔubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‹Öh²hh³j Öh´MÔubah}”(h]”j†Öah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j Öh´MÔhjˆÖh²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hjÄ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÔhjÁ×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjˆÖh²hh³j Öh´MÔubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÜ×jHjÜ×jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX¯**Parameters** ``atomic64_t *v`` pointer to atomic64_t ``s64 a`` s64 value to add ``s64 u`` s64 value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_add_unless() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MØhjà×ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjØh]”hŒ atomic64_t *v”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÕhjÿ×ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``s64 a`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 a``”h]”jS)�”}”(hj>Øh]”hŒs64 a”…”�”}”(hj@Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj<Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÖhj8ØubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hjWØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jSØh´MÖhjTØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj8Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jSØh´MÖhjü×ubj©)�”}”(hŒ$``s64 u`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 u``”h]”jS)�”}”(hjwØh]”hŒs64 u”…”�”}”(hjyØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjuØubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M×hjqØubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŒØh´M×hj�Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjqØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŒØh´M×hjü×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjà×ubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÙhjà×ubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjÈØh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÐØh²hh³Nh´Nubah}”(h]”h ]”h"]”•Hh$]”h&]”uh1j�hjÈØubhŒ != ”…”�”}”(hjÈØh²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hjâØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈØubhŒ), atomically updates ”…”�”}”(hjÈØh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjôØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈØubhŒ to (”…”�”}”(hjÈØh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈØubhŒ + ”…”�”}”(hjÈØh²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈØubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjÈØh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj*Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈØubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjÈØh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MØhjà×ubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic64_add_unless() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic64_add_unless() elsewhere.”…”�”}”(hjCÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÛhjà×ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjTÙh]”hŒReturn”…”�”}”(hjVÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝhjà×ubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjnÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjÙubhŒ if ”…”�”}”(hjjÙh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjÙubhŒ was updated, ”…”�”}”(hjjÙh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj’Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjÙubhŒ otherwise.”…”�”}”(hjjÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÞhjà×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic64_inc_not_zero (C function)”Œc.raw_atomic64_inc_not_zero”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ.bool raw_atomic64_inc_not_zero (atomic64_t *v)”h]”hù)�”}”(hŒ-bool raw_atomic64_inc_not_zero(atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjËÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÇÙh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MëubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙÙh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇÙh²hh³jØÙh´Mëubhÿ)�”}”(hŒraw_atomic64_inc_not_zero”h]”j)�”}”(hŒraw_atomic64_inc_not_zero”h]”hŒraw_atomic64_inc_not_zero”…”�”}”(hjëÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçÙubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÇÙh²hh³jØÙh´Mëubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj Úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j ÚŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjíÙsbŒc.raw_atomic64_inc_not_zero”†”asbuh1hhjÚubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Úh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj8Úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÚubj)�”}”(hjph]”hŒv”…”�”}”(hjEÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÿÙubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÇÙh²hh³jØÙh´Mëubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÃÙh²hh³jØÙh´Mëubah}”(h]”j¾Ùah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jØÙh´MëhjÀÙh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic increment unless zero with full ordering”h]”hŒ/atomic increment unless zero with full ordering”…”�”}”(hjnÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MëhjkÚh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÀÙh²hh³jØÙh´Mëubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj†ÚjHj†ÚjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXd**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_inc_not_zero() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MïhjŠÚubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj¯Úh]”hŒ atomic64_t *v”…”�”}”(hj±Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj­Úubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mìhj©ÚubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÈÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjŠÚubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MîhjŠÚubjM)�”}”(hŒ�If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ != 0), atomically updates ”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ to (”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj,Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hjÛh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj>Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MíhjŠÚubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic64_inc_not_zero() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_inc_not_zero() elsewhere.”…”�”}”(hjWÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MðhjŠÚubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjhÛh]”hŒReturn”…”�”}”(hjjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MòhjŠÚubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj‚Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ÛubhŒ if ”…”�”}”(hj~Ûh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj”Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ÛubhŒ was updated, ”…”�”}”(hj~Ûh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj¦Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ÛubhŒ otherwise.”…”�”}”(hj~Ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MóhjŠÚubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-raw_atomic64_inc_unless_negative (C function)”Œ"c.raw_atomic64_inc_unless_negative”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5bool raw_atomic64_inc_unless_negative (atomic64_t *v)”h]”hù)�”}”(hŒ4bool raw_atomic64_inc_unless_negative(atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjßÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÛÛh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíÛh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛÛh²hh³jìÛh´Mubhÿ)�”}”(hŒ raw_atomic64_inc_unless_negative”h]”j)�”}”(hŒ raw_atomic64_inc_unless_negative”h]”hŒ raw_atomic64_inc_unless_negative”…”�”}”(hjÿÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûÛubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÛÛh²hh³jìÛh´Mubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j ÜŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÜsbŒ"c.raw_atomic64_inc_unless_negative”†”asbuh1hhjÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Üh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjLÜh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÜubj)�”}”(hjph]”hŒv”…”�”}”(hjYÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÜubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÛÛh²hh³jìÛh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj×Ûh²hh³jìÛh´Mubah}”(h]”jÒÛah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jìÛh´MhjÔÛh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic increment unless negative with full ordering”h]”hŒ3atomic increment unless negative with full ordering”…”�”}”(hj‚Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÜh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÔÛh²hh³jìÛh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjšÜjHjšÜjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXk**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_inc_unless_negative() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjžÜubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÃÜh]”hŒ atomic64_t *v”…”�”}”(hjÅÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÁÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj½ÜubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjÜÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jØÜh´MhjÙÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj½Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jØÜh´MhjºÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjžÜubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjžÜubjM)�”}”(hŒ�If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjÝh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝubhŒ >= 0), atomically updates ”…”�”}”(hjÝh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj.Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝubhŒ to (”…”�”}”(hjÝh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj@Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hjÝh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjRÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjžÜubjM)�”}”(hŒMSafe to use in noinstr code; prefer atomic64_inc_unless_negative() elsewhere.”h]”hŒMSafe to use in noinstr code; prefer atomic64_inc_unless_negative() elsewhere.”…”�”}”(hjkÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjžÜubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj|Ýh]”hŒReturn”…”�”}”(hj~Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjžÜubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj–Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ÝubhŒ if ”…”�”}”(hj’Ýh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¨Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ÝubhŒ was updated, ”…”�”}”(hj’Ýh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjºÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’ÝubhŒ otherwise.”…”�”}”(hj’Ýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjžÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-raw_atomic64_dec_unless_positive (C function)”Œ"c.raw_atomic64_dec_unless_positive”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5bool raw_atomic64_dec_unless_positive (atomic64_t *v)”h]”hù)�”}”(hŒ4bool raw_atomic64_dec_unless_positive(atomic64_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjóÝh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjïÝh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjïÝh²hh³jÞh´Mubhÿ)�”}”(hŒ raw_atomic64_dec_unless_positive”h]”j)�”}”(hŒ raw_atomic64_dec_unless_positive”h]”hŒ raw_atomic64_dec_unless_positive”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjïÝh²hh³jÞh´Mubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj2Þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j4ÞŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÞsbŒ"c.raw_atomic64_dec_unless_positive”†”asbuh1hhj+ÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+Þubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj`Þh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj+Þubj)�”}”(hjph]”hŒv”…”�”}”(hjmÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj'Þubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjïÝh²hh³jÞh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjëÝh²hh³jÞh´Mubah}”(h]”jæÝah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÞh´MhjèÝh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic decrement unless positive with full ordering”h]”hŒ3atomic decrement unless positive with full ordering”…”�”}”(hj–Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj“Þh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjèÝh²hh³jÞh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj®ÞjHj®ÞjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXk**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** If (**v** <= 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_dec_unless_positive() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj²Þubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj×Þh]”hŒ atomic64_t *v”…”�”}”(hjÙÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÕÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjÑÞubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjðÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jìÞh´MhjíÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÑÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jìÞh´MhjÎÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj²ÞubjM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj²ÞubjM)�”}”(hŒ�If (**v** <= 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj(ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj0ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(ßubhŒ <= 0), atomically updates ”…”�”}”(hj(ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjBßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(ßubhŒ to (”…”�”}”(hj(ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjTßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(ßubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hj(ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjfßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(ßubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj(ßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj²ÞubjM)�”}”(hŒMSafe to use in noinstr code; prefer atomic64_dec_unless_positive() elsewhere.”h]”hŒMSafe to use in noinstr code; prefer atomic64_dec_unless_positive() elsewhere.”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M!hj²ÞubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�ßh]”hŒReturn”…”�”}”(hj’ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽßubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M#hj²ÞubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjªßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦ßubhŒ if ”…”�”}”(hj¦ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¼ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦ßubhŒ was updated, ”…”�”}”(hj¦ßh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjÎßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦ßubhŒ otherwise.”…”�”}”(hj¦ßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M$hj²Þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic64_dec_if_positive (C function)”Œc.raw_atomic64_dec_if_positive”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0s64 raw_atomic64_dec_if_positive (atomic64_t *v)”h]”hù)�”}”(hŒ/s64 raw_atomic64_dec_if_positive(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j àŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_dec_if_positive”sbŒc.raw_atomic64_dec_if_positive”†”asbuh1hhjàh²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,àh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàh²hh³j+àh´M8ubhÿ)�”}”(hŒraw_atomic64_dec_if_positive”h]”j)�”}”(hj(àh]”hŒraw_atomic64_dec_if_positive”…”�”}”(hj>àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:àubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjàh²hh³j+àh´M8ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj\àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j^àŒmodname”NŒ classname”Njwjz)�”}”j}]”j&àŒc.raw_atomic64_dec_if_positive”†”asbuh1hhjUàubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzàh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjUàubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjˆàh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjUàubj)�”}”(hjph]”hŒv”…”�”}”(hj•àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjUàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjQàubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjàh²hh³j+àh´M8ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÿßh²hh³j+àh´M8ubah}”(h]”júßah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j+àh´M8hjüßh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic decrement if positive with full ordering”h]”hŒ/atomic decrement if positive with full ordering”…”�”}”(hj¾àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M8hj»àh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjüßh²hh³j+àh´M8ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÖàjHjÖàjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXy**Parameters** ``atomic64_t *v`` pointer to atomic64_t **Description** If (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic64_dec_if_positive() elsewhere. **Return** The old value of (**v** - 1), regardless of whether **v** was updated.”h]”(jM)�”}”(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&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M<hjÚàubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjÿàh]”hŒ atomic64_t *v”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjýàubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M9hjùàubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jáh´M9hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjùàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jáh´M9hjöàubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÚàubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj:áh]”hŒ Description”…”�”}”(hj<áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8áubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M;hjÚàubjM)�”}”(hŒŽIf (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjPáh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjXáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPáubhŒ > 0), atomically updates ”…”�”}”(hjPáh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPáubhŒ to (”…”�”}”(hjPáh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPáubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hjPáh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŽáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPáubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjPáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M:hjÚàubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic64_dec_if_positive() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic64_dec_if_positive() elsewhere.”…”�”}”(hj§áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M=hjÚàubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¸áh]”hŒReturn”…”�”}”(hjºáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶áubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M?hjÚàubjM)�”}”(hŒFThe old value of (**v** - 1), regardless of whether **v** was updated.”h]”(hŒThe old value of (”…”�”}”(hjÎáh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÖáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎáubhŒ - 1), regardless of whether ”…”�”}”(hjÎáh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjèáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎáubhŒ was updated.”…”�”}”(hjÎáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M@hjÚàubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!raw_atomic_long_read (C function)”Œc.raw_atomic_long_read”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2long raw_atomic_long_read (const atomic_long_t *v)”h]”hù)�”}”(hŒ1long raw_atomic_long_read(const atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj!âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjâh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0âh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâh²hh³j/âh´Kubhÿ)�”}”(hŒraw_atomic_long_read”h]”j)�”}”(hŒraw_atomic_long_read”h]”hŒraw_atomic_long_read”…”�”}”(hjBâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>âubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjâh²hh³j/âh´Kubj4)�”}”(hŒ(const atomic_long_t *v)”h]”j:)�”}”(hŒconst atomic_long_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj^âh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjZâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkâh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZâubh)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj|âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j~âŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjDâsbŒc.raw_atomic_long_read”†”asbuh1hhjZâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœâh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZâubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjªâh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjZâubj)�”}”(hjph]”hŒv”…”�”}”(hj·âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjVâubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjâh²hh³j/âh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjâh²hh³j/âh´Kubah}”(h]”jâah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j/âh´Khjâh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with relaxed ordering”h]”hŒ!atomic load with relaxed ordering”…”�”}”(hjàâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KhjÝâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjâh²hh³j/âh´Kubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjøâjHjøâjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÿ**Parameters** ``const atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically loads the value of **v** with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_read() elsewhere. **Return** The value loaded from **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Khjüâubj¤)�”}”(hhh]”j©)�”}”(hŒ4``const atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``const atomic_long_t *v``”h]”jS)�”}”(hj!ãh]”hŒconst atomic_long_t *v”…”�”}”(hj#ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KhjãubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj:ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6ãh´Khj7ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6ãh´Khjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjüâubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj\ãh]”hŒ Description”…”�”}”(hj^ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZãubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KhjüâubjM)�”}”(hŒ:Atomically loads the value of **v** with relaxed ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hjrãh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjzãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrãubhŒ with relaxed ordering.”…”�”}”(hjrãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KhjüâubjM)�”}”(hŒASafe to use in noinstr code; prefer atomic_long_read() elsewhere.”h]”hŒASafe to use in noinstr code; prefer atomic_long_read() elsewhere.”…”�”}”(hj“ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KhjüâubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¤ãh]”hŒReturn”…”�”}”(hj¦ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KhjüâubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hjºãh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÂãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºãubhŒ.”…”�”}”(hjºãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K hjüâubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_long_read_acquire (C function)”Œc.raw_atomic_long_read_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long raw_atomic_long_read_acquire (const atomic_long_t *v)”h]”hù)�”}”(hŒ9long raw_atomic_long_read_acquire(const atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjûãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj÷ãh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K-ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷ãh²hh³j äh´K-ubhÿ)�”}”(hŒraw_atomic_long_read_acquire”h]”j)�”}”(hŒraw_atomic_long_read_acquire”h]”hŒraw_atomic_long_read_acquire”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj÷ãh²hh³j äh´K-ubj4)�”}”(hŒ(const atomic_long_t *v)”h]”j:)�”}”(hŒconst atomic_long_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj8äh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj4äubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEäh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4äubh)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjVäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jXäŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjäsbŒc.raw_atomic_long_read_acquire”†”asbuh1hhj4äubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjväh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4äubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj„äh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj4äubj)�”}”(hjph]”hŒv”…”�”}”(hj‘äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0äubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj÷ãh²hh³j äh´K-ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjóãh²hh³j äh´K-ubah}”(h]”jîãah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j äh´K-hjðãh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!atomic load with acquire ordering”h]”hŒ!atomic load with acquire ordering”…”�”}”(hjºäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K-hj·äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjðãh²hh³j äh´K-ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÒäjHjÒäjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``const atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically loads the value of **v** with acquire ordering. Safe to use in noinstr code; prefer atomic_long_read_acquire() elsewhere. **Return** The value loaded from **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K1hjÖäubj¤)�”}”(hhh]”j©)�”}”(hŒ4``const atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``const atomic_long_t *v``”h]”jS)�”}”(hjûäh]”hŒconst atomic_long_t *v”…”�”}”(hjýäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjùäubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K.hjõäubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ÖäubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj6åh]”hŒ Description”…”�”}”(hj8åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4åubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K0hjÖäubjM)�”}”(hŒ:Atomically loads the value of **v** with acquire ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hjLåh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjTåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLåubhŒ with acquire ordering.”…”�”}”(hjLåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K/hjÖäubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_long_read_acquire() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_long_read_acquire() elsewhere.”…”�”}”(hjmåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K1hjÖäubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj~åh]”hŒReturn”…”�”}”(hj€åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj|åubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K3hjÖäubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(hj”åh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjœåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”åubhŒ.”…”�”}”(hj”åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K4hjÖäubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ raw_atomic_long_set (C function)”Œc.raw_atomic_long_set”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3void raw_atomic_long_set (atomic_long_t *v, long i)”h]”hù)�”}”(hŒ2void raw_atomic_long_set(atomic_long_t *v, long i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÕåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÑåh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäåh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÑåh²hh³jãåh´KAubhÿ)�”}”(hŒraw_atomic_long_set”h]”j)�”}”(hŒraw_atomic_long_set”h]”hŒraw_atomic_long_set”…”�”}”(hjöåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòåubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÑåh²hh³jãåh´KAubj4)�”}”(hŒ(atomic_long_t *v, long i)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jæŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjøåsbŒc.raw_atomic_long_set”†”asbuh1hhjæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjæubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjCæh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjæubj)�”}”(hjph]”hŒv”…”�”}”(hjPæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj æubj:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjhæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjdæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvæh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdæubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj„æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj æubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÑåh²hh³jãåh´KAubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÍåh²hh³jãåh´KAubah}”(h]”jÈåah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jãåh´KAhjÊåh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with relaxed ordering”h]”hŒ atomic set with relaxed ordering”…”�”}”(hj­æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KAhjªæh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÊåh²hh³jãåh´KAubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÅæjHjÅæjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long i`` long value to assign **Description** Atomically sets **v** to **i** with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_set() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KEhjÉæubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjîæh]”hŒatomic_long_t *v”…”�”}”(hjðæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjìæubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KBhjèæubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jçh´KBhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjèæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jçh´KBhjåæubj©)�”}”(hŒ ``long i`` long value to assign ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj'çh]”hŒlong i”…”�”}”(hj)çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj%çubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KChj!çubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hj@çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j<çh´KChj=çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj!çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j<çh´KChjåæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÉæubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjbçh]”hŒ Description”…”�”}”(hjdçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`çubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KEhjÉæubjM)�”}”(hŒ5Atomically sets **v** to **i** with relaxed ordering.”h]”(hŒAtomically sets ”…”�”}”(hjxçh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxçubhŒ to ”…”�”}”(hjxçh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj’çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxçubhŒ with relaxed ordering.”…”�”}”(hjxçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KDhjÉæubjM)�”}”(hŒ@Safe to use in noinstr code; prefer atomic_long_set() elsewhere.”h]”hŒ@Safe to use in noinstr code; prefer atomic_long_set() elsewhere.”…”�”}”(hj«çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KFhjÉæubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¼çh]”hŒReturn”…”�”}”(hj¾çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºçubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KHhjÉæubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjÒçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KIhjÉæubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(raw_atomic_long_set_release (C function)”Œc.raw_atomic_long_set_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;void raw_atomic_long_set_release (atomic_long_t *v, long i)”h]”hù)�”}”(hŒ:void raw_atomic_long_set_release(atomic_long_t *v, long i)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjýçh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KVubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjýçh²hh³jèh´KVubhÿ)�”}”(hŒraw_atomic_long_set_release”h]”j)�”}”(hŒraw_atomic_long_set_release”h]”hŒraw_atomic_long_set_release”…”�”}”(hj"èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjýçh²hh³jèh´KVubj4)�”}”(hŒ(atomic_long_t *v, long i)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjAèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCèŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj$èsbŒc.raw_atomic_long_set_release”†”asbuh1hhj:èubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaèh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:èubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjoèh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj:èubj)�”}”(hjph]”hŒv”…”�”}”(hj|èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj6èubj:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj”èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�èubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢èh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�èubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj°èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj6èubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjýçh²hh³jèh´KVubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjùçh²hh³jèh´KVubah}”(h]”jôçah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jèh´KVhjöçh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with release ordering”h]”hŒ atomic set with release ordering”…”�”}”(hjÙèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KVhjÖèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjöçh²hh³jèh´KVubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjñèjHjñèjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long i`` long value to assign **Description** Atomically sets **v** to **i** with release ordering. Safe to use in noinstr code; prefer atomic_long_set_release() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KZhjõèubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjéh]”hŒatomic_long_t *v”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KWhjéubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj3éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j/éh´KWhj0éubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j/éh´KWhjéubj©)�”}”(hŒ ``long i`` long value to assign ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjSéh]”hŒlong i”…”�”}”(hjUéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjQéubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KXhjMéubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjléh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jhéh´KXhjiéubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjMéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jhéh´KXhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjõèubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KZhjõèubjM)�”}”(hŒ5Atomically sets **v** to **i** with release ordering.”h]”(hŒAtomically sets ”…”�”}”(hj¤éh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¬éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤éubhŒ to ”…”�”}”(hj¤éh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¾éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¤éubhŒ with release ordering.”…”�”}”(hj¤éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KYhjõèubjM)�”}”(hŒHSafe to use in noinstr code; prefer atomic_long_set_release() elsewhere.”h]”hŒHSafe to use in noinstr code; prefer atomic_long_set_release() elsewhere.”…”�”}”(hj×éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K[hjõèubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjèéh]”hŒReturn”…”�”}”(hjêéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæéubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K]hjõèubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjþéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K^hjõèubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ raw_atomic_long_add (C function)”Œc.raw_atomic_long_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3void raw_atomic_long_add (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ2void raw_atomic_long_add(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj)êh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<êh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)êh²hh³j;êh´Kkubhÿ)�”}”(hŒraw_atomic_long_add”h]”j)�”}”(hŒraw_atomic_long_add”h]”hŒraw_atomic_long_add”…”�”}”(hjNêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJêubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj)êh²hh³j;êh´Kkubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjjêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjfêubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxêh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfêubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj†êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjbêubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj¡êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j£êŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjPêsbŒc.raw_atomic_long_add”†”asbuh1hhjšêubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁêh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjšêubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÏêh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjšêubj)�”}”(hjph]”hŒv”…”�”}”(hjÜêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjbêubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj)êh²hh³j;êh´Kkubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj%êh²hh³j;êh´Kkubah}”(h]”j êah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j;êh´Kkhj"êh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kkhjëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj"êh²hh³j;êh´Kkubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjëjHjëjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_add() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kohj!ëubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjFëh]”hŒlong i”…”�”}”(hjHëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjDëubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Klhj@ëubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj_ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j[ëh´Klhj\ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj@ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j[ëh´Klhj=ëubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjëh]”hŒatomic_long_t *v”…”�”}”(hj�ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj}ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KmhjyëubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj˜ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j”ëh´Kmhj•ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjyëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”ëh´Kmhj=ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj!ëubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kohj!ëubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÐëh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjØëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐëubhŒ to (”…”�”}”(hjÐëh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjêëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐëubhŒ + ”…”�”}”(hjÐëh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjüëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÐëubhŒ) with relaxed ordering.”…”�”}”(hjÐëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Knhj!ëubjM)�”}”(hŒ@Safe to use in noinstr code; prefer atomic_long_add() elsewhere.”h]”hŒ@Safe to use in noinstr code; prefer atomic_long_add() elsewhere.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kphj!ëubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj&ìh]”hŒReturn”…”�”}”(hj(ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Krhj!ëubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj<ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kshj!ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'raw_atomic_long_add_return (C function)”Œc.raw_atomic_long_add_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long raw_atomic_long_add_return (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ9long raw_atomic_long_add_return(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjkìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjgìh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K€ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjgìh²hh³jyìh´K€ubhÿ)�”}”(hŒraw_atomic_long_add_return”h]”j)�”}”(hŒraw_atomic_long_add_return”h]”hŒraw_atomic_long_add_return”…”�”}”(hjŒìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjˆìubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjgìh²hh³jyìh´K€ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¨ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¤ìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤ìubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÄìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ìubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjßìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jáìŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŽìsbŒc.raw_atomic_long_add_return”†”asbuh1hhjØìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjØìubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj íh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjØìubj)�”}”(hjph]”hŒv”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ìubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjgìh²hh³jyìh´K€ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjcìh²hh³jyìh´K€ubah}”(h]”j^ìah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jyìh´K€hj`ìh²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hjCíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K€hj@íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj`ìh²hh³jyìh´K€ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj[íjHj[íjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX#**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Safe to use in noinstr code; prefer atomic_long_add_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjeíh]”hŒ Parameters”…”�”}”(hjgíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjcíubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K„hj_íubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj„íh]”hŒlong i”…”�”}”(hj†íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‚íubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K�hj~íubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj�íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj½íh]”hŒatomic_long_t *v”…”�”}”(hj¿íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj»íubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K‚hj·íubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÖíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj_íubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K„hj_íubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjîh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîubhŒ to (”…”�”}”(hjîh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj(îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîubhŒ + ”…”�”}”(hjîh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj:îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîubhŒ) with full ordering.”…”�”}”(hjîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kƒhj_íubjM)�”}”(hŒGSafe to use in noinstr code; prefer atomic_long_add_return() elsewhere.”•-h]”hŒGSafe to use in noinstr code; prefer atomic_long_add_return() elsewhere.”…”�”}”(hjSîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K…hj_íubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjdîh]”hŒReturn”…”�”}”(hjfîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbîubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K‡hj_íubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjzîh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‚îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzîubhŒ.”…”�”}”(hjzîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kˆhj_íubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_add_return_acquire (C function)”Œ$c.raw_atomic_long_add_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBlong raw_atomic_long_add_return_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒAlong raw_atomic_long_add_return_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj»îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj·îh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K•ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·îh²hh³jÉîh´K•ubhÿ)�”}”(hŒ"raw_atomic_long_add_return_acquire”h]”j)�”}”(hŒ"raw_atomic_long_add_return_acquire”h]”hŒ"raw_atomic_long_add_return_acquire”…”�”}”(hjÜîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØîubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj·îh²hh³jÉîh´K•ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjøîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjôîubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôîubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjðîubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj/ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j1ïŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÞîsbŒ$c.raw_atomic_long_add_return_acquire”†”asbuh1hhj(ïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj(ïubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj]ïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj(ïubj)�”}”(hjph]”hŒv”…”�”}”(hjjïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjðîubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj·îh²hh³jÉîh´K•ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj³îh²hh³jÉîh´K•ubah}”(h]”j®îah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÉîh´K•hj°îh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hj“ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K•hj�ïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj°îh²hh³jÉîh´K•ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj«ïjHj«ïjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX.**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_add_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K™hj¯ïubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjÔïh]”hŒlong i”…”�”}”(hjÖïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÒïubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K–hjÎïubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjíïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj ðh]”hŒatomic_long_t *v”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K—hjðubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj&ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¯ïubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjHðh]”hŒ Description”…”�”}”(hjJðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFðubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K™hj¯ïubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj^ðh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjfðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^ðubhŒ to (”…”�”}”(hj^ðh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjxðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^ðubhŒ + ”…”�”}”(hj^ðh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjŠðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^ðubhŒ) with acquire ordering.”…”�”}”(hj^ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K˜hj¯ïubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_add_return_acquire() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_add_return_acquire() elsewhere.”…”�”}”(hj£ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kšhj¯ïubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj´ðh]”hŒReturn”…”�”}”(hj¶ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj²ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kœhj¯ïubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÊðh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÒðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊðubhŒ.”…”�”}”(hjÊðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K�hj¯ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_add_return_release (C function)”Œ$c.raw_atomic_long_add_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBlong raw_atomic_long_add_return_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒAlong raw_atomic_long_add_return_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjñh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjñh²hh³jñh´Kªubhÿ)�”}”(hŒ"raw_atomic_long_add_return_release”h]”j)�”}”(hŒ"raw_atomic_long_add_return_release”h]”hŒ"raw_atomic_long_add_return_release”…”�”}”(hj,ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(ñubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjñh²hh³jñh´Kªubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjHñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjDñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjDñubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjdñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj@ñubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�ñŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj.ñsbŒ$c.raw_atomic_long_add_return_release”†”asbuh1hhjxñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjxñubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj­ñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjxñubj)�”}”(hjph]”hŒv”…”�”}”(hjºñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjxñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj@ñubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjñh²hh³jñh´Kªubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjñh²hh³jñh´Kªubah}”(h]”jþðah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jñh´Kªhjñh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hjãñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kªhjàñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjñh²hh³jñh´Kªubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjûñjHjûñjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX.**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Safe to use in noinstr code; prefer atomic_long_add_return_release() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K®hjÿñubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj$òh]”hŒlong i”…”�”}”(hj&òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj"òubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K«hjòubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj=òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j9òh´K«hj:òubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j9òh´K«hjòubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj]òh]”hŒatomic_long_t *v”…”�”}”(hj_òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj[òubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K¬hjWòubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjvòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jròh´K¬hjsòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjWòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jròh´K¬hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÿñubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K®hjÿñubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj®òh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¶òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®òubhŒ to (”…”�”}”(hj®òh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÈòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®òubhŒ + ”…”�”}”(hj®òh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÚòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®òubhŒ) with release ordering.”…”�”}”(hj®òh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K­hjÿñubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_add_return_release() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_add_return_release() elsewhere.”…”�”}”(hjóòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K¯hjÿñubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjóh]”hŒReturn”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K±hjÿñubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjóh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj"óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóubhŒ.”…”�”}”(hjóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K²hjÿñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_add_return_relaxed (C function)”Œ$c.raw_atomic_long_add_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBlong raw_atomic_long_add_return_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒAlong raw_atomic_long_add_return_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj[óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjWóh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K¿ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjóh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjWóh²hh³jióh´K¿ubhÿ)�”}”(hŒ"raw_atomic_long_add_return_relaxed”h]”j)�”}”(hŒ"raw_atomic_long_add_return_relaxed”h]”hŒ"raw_atomic_long_add_return_relaxed”…”�”}”(hj|óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjxóubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjWóh²hh³jióh´K¿ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj˜óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj”óubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦óh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj”óubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj´óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�óubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÏóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÑóŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj~ósbŒ$c.raw_atomic_long_add_return_relaxed”†”asbuh1hhjÈóubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïóh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÈóubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjýóh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÈóubj)�”}”(hjph]”hŒv”…”�”}”(hj ôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�óubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjWóh²hh³jióh´K¿ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjSóh²hh³jióh´K¿ubah}”(h]”jNóah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jióh´K¿hjPóh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj3ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K¿hj0ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjPóh²hh³jióh´K¿ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjKôjHjKôjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX.**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_add_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjUôh]”hŒ Parameters”…”�”}”(hjWôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSôubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÃhjOôubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjtôh]”hŒlong i”…”�”}”(hjvôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjrôubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÀhjnôubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj�ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‰ôh´KÀhjŠôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjnôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‰ôh´KÀhjkôubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj­ôh]”hŒatomic_long_t *v”…”�”}”(hj¯ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj«ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÁhj§ôubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÆôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÂôh´KÁhjÃôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj§ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÂôh´KÁhjkôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjOôubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÃhjOôubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjþôh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþôubhŒ to (”…”�”}”(hjþôh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþôubhŒ + ”…”�”}”(hjþôh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj*õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþôubhŒ) with relaxed ordering.”…”�”}”(hjþôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÂhjOôubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_add_return_relaxed() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_add_return_relaxed() elsewhere.”…”�”}”(hjCõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÄhjOôubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjTõh]”hŒReturn”…”�”}”(hjVõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRõubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÆhjOôubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjjõh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjrõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjõubhŒ.”…”�”}”(hjjõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÇhjOôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic_long_fetch_add (C function)”Œc.raw_atomic_long_fetch_add”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9long raw_atomic_long_fetch_add (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ8long raw_atomic_long_fetch_add(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj«õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj§õh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÔubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºõh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§õh²hh³j¹õh´KÔubhÿ)�”}”(hŒraw_atomic_long_fetch_add”h]”j)�”}”(hŒraw_atomic_long_fetch_add”h]”hŒraw_atomic_long_fetch_add”…”�”}”(hjÌõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈõubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj§õh²hh³j¹õh´KÔubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjèõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjäõubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöõh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjäõubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjàõubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j!öŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÎõsbŒc.raw_atomic_long_fetch_add”†”asbuh1hhjöubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?öh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjöubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjMöh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjöubj)�”}”(hjph]”hŒv”…”�”}”(hjZöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjàõubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj§õh²hh³j¹õh´KÔubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj£õh²hh³j¹õh´KÔubah}”(h]”jžõah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¹õh´KÔhj õh²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(hjƒöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÔhj€öh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj õh²hh³j¹õh´KÔubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj›öjHj›öjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX#**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Safe to use in noinstr code; prefer atomic_long_fetch_add() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KØhjŸöubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjÄöh]”hŒlong i”…”�”}”(hjÆöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÂöubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÕhj¾öubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjÝöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjýöh]”hŒatomic_long_t *v”…”�”}”(hjÿöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjûöubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÖhj÷öubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjŸöubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj8÷h]”hŒ Description”…”�”}”(hj:÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KØhjŸöubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjN÷h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjV÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN÷ubhŒ to (”…”�”}”(hjN÷h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN÷ubhŒ + ”…”�”}”(hjN÷h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjz÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN÷ubhŒ) with full ordering.”…”�”}”(hjN÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K×hjŸöubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic_long_fetch_add() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic_long_fetch_add() elsewhere.”…”�”}”(hj“÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÙhjŸöubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¤÷h]”hŒReturn”…”�”}”(hj¦÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÛhjŸöubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjº÷h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÂ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjº÷ubhŒ.”…”�”}”(hjº÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KÜhjŸöubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_add_acquire (C function)”Œ#c.raw_atomic_long_fetch_add_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_add_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_add_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjû÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj÷÷h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KéubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj øh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷÷h²hh³j øh´Kéubhÿ)�”}”(hŒ!raw_atomic_long_fetch_add_acquire”h]”j)�”}”(hŒ!raw_atomic_long_fetch_add_acquire”h]”hŒ!raw_atomic_long_fetch_add_acquire”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj÷÷h²hh³j øh´Kéubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj8øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj4øubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFøh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4øubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjTøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0øubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjoøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjløubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jqøŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjøsbŒ#c.raw_atomic_long_fetch_add_acquire”†”asbuh1hhjhøubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjhøubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjhøubj)�”}”(hjph]”hŒv”…”�”}”(hjªøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0øubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj÷÷h²hh³j øh´Kéubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjó÷h²hh³j øh´Kéubah}”(h]”jî÷ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j øh´Kéhjð÷h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hjÓøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KéhjÐøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjð÷h²hh³j øh´Kéubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjëøjHjëøjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX.**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_fetch_add_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kíhjïøubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjùh]”hŒlong i”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KêhjùubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj-ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjMùh]”hŒatomic_long_t *v”…”�”}”(hjOùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKùubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KëhjGùubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjfùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jbùh´Këhjcùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbùh´Këhj ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjïøubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KíhjïøubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjžùh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¦ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžùubhŒ to (”…”�”}”(hjžùh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¸ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžùubhŒ + ”…”�”}”(hjžùh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÊùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžùubhŒ) with acquire ordering.”…”�”}”(hjžùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KìhjïøubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_add_acquire() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_add_acquire() elsewhere.”…”�”}”(hjãùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KîhjïøubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjôùh]”hŒReturn”…”�”}”(hjöùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòùubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KðhjïøubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj úh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj úubhŒ.”…”�”}”(hj úh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kñhjïøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_add_release (C function)”Œ#c.raw_atomic_long_fetch_add_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_add_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_add_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjKúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjGúh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KþubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZúh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGúh²hh³jYúh´Kþubhÿ)�”}”(hŒ!raw_atomic_long_fetch_add_release”h]”j)�”}”(hŒ!raw_atomic_long_fetch_add_release”h]”hŒ!raw_atomic_long_fetch_add_release”…”�”}”(hjlúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhúubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjGúh²hh³jYúh´Kþubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjˆúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj„úubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–úh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„úubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¤úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj€úubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj¿úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÁúŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjnúsbŒ#c.raw_atomic_long_fetch_add_release”†”asbuh1hhj¸úubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßúh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸úubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjíúh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¸úubj)�”}”(hjph]”hŒv”…”�”}”(hjúúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj€úubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjGúh²hh³jYúh´Kþubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjCúh²hh³jYúh´Kþubah}”(h]”j>úah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jYúh´Kþhj@úh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with release ordering”h]”hŒ atomic add with release ordering”…”�”}”(hj#ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kþhj ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj@úh²hh³jYúh´Kþubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj;ûjHj;ûjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX.**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Safe to use in noinstr code; prefer atomic_long_fetch_add_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjEûh]”hŒ Parameters”…”�”}”(hjGûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCûubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj?ûubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjdûh]”hŒlong i”…”�”}”(hjfûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbûubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Kÿhj^ûubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj}ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jyûh´Kÿhjzûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jyûh´Kÿhj[ûubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj�ûh]”hŒatomic_long_t *v”…”�”}”(hjŸûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj›ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj—ûubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj¶ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j²ûh´Mhj³ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj—ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j²ûh´Mhj[ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj?ûubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj?ûubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjîûh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjöûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîûubhŒ to (”…”�”}”(hjîûh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîûubhŒ + ”…”�”}”(hjîûh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîûubhŒ) with release ordering.”…”�”}”(hjîûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj?ûubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_add_release() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_add_release() elsewhere.”…”�”}”(hj3üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj?ûubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjDüh]”hŒReturn”…”�”}”(hjFüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBüubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj?ûubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjZüh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjbüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZüubhŒ.”…”�”}”(hjZüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj?ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_add_relaxed (C function)”Œ#c.raw_atomic_long_fetch_add_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_add_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj›üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj—üh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj—üh²hh³j©üh´Mubhÿ)�”}”(hŒ!raw_atomic_long_fetch_add_relaxed”h]”j)�”}”(hŒ!raw_atomic_long_fetch_add_relaxed”h]”hŒ!raw_atomic_long_fetch_add_relaxed”…”�”}”(hj¼üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸üubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj—üh²hh³j©üh´Mubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjØüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÔüubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔüubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjôüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÐüubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jýŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¾üsbŒ#c.raw_atomic_long_fetch_add_relaxed”†”asbuh1hhjýubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/ýh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjýubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj=ýh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjýubj)�”}”(hjph]”hŒv”…”�”}”(hjJýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÐüubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj—üh²hh³j©üh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj“üh²hh³j©üh´Mubah}”(h]”jŽüah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j©üh´Mhj�üh²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hjsýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhjpýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�üh²hh³j©üh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj‹ýjHj‹ýjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX.**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_fetch_add_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj�ýubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj´ýh]”hŒlong i”…”�”}”(hj¶ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj®ýubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjÍýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÉýh´MhjÊýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj®ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÉýh´Mhj«ýubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjíýh]”hŒatomic_long_t *v”…”�”}”(hjïýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjëýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjçýubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jþh´Mhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjçýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jþh´Mhj«ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�ýubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj�ýubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj>þh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjFþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>þubhŒ to (”…”�”}”(hj>þh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjXþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>þubhŒ + ”…”�”}”(hj>þh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>þubhŒ) with relaxed ordering.”…”�”}”(hj>þh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj�ýubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_add_relaxed() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_add_relaxed() elsewhere.”…”�”}”(hjƒþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj�ýubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj”þh]”hŒReturn”…”�”}”(hj–þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’þubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj�ýubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjªþh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj²þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªþubhŒ.”…”�”}”(hjªþh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj�ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ raw_atomic_long_sub (C function)”Œc.raw_atomic_long_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3void raw_atomic_long_sub (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ2void raw_atomic_long_sub(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjëþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjçþh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M(ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjçþh²hh³jùþh´M(ubhÿ)�”}”(hŒraw_atomic_long_sub”h]”j)�”}”(hŒraw_atomic_long_sub”h]”hŒraw_atomic_long_sub”…”�”}”(hj ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjçþh²hh³jùþh´M(ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj(ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$ÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$ÿubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjDÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ÿubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj_ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jaÿŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÿsbŒc.raw_atomic_long_sub”†”asbuh1hhjXÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjXÿubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�ÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjXÿubj)�”}”(hjph]”hŒv”…”�”}”(hjšÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ÿubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjçþh²hh³jùþh´M(ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjãþh²hh³jùþh´M(ubah}”(h]”jÞþah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jùþh´M(hjàþh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hjÃÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M(hjÀÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjàþh²hh³jùþh´M(ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÛÿjHjÛÿjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_sub() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M,hjßÿubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjh]”hŒlong i”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M)hjþÿubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´M)hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjþÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´M)hjûÿubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj=h]”hŒatomic_long_t *v”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M*hj7ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jRh´M*hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jRh´M*hjûÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjßÿubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjxh]”hŒ Description”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M,hjßÿubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjŽh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽubhŒ to (”…”�”}”(hjŽh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽubhŒ - ”…”�”}”(hjŽh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽubhŒ) with relaxed ordering.”…”�”}”(hjŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M+hjßÿubjM)�”}”(hŒ@Safe to use in noinstr code; prefer atomic_long_sub() elsewhere.”h]”hŒ@Safe to use in noinstr code; prefer atomic_long_sub() elsewhere.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M-hjßÿubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjäh]”hŒReturn”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M/hjßÿubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M0hjßÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'raw_atomic_long_sub_return (C function)”Œc.raw_atomic_long_sub_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long raw_atomic_long_sub_return (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ9long raw_atomic_long_sub_return(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj%h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj%h²hh³j7h´M=ubhÿ)�”}”(hŒraw_atomic_long_sub_return”h]”j)�”}”(hŒraw_atomic_long_sub_return”h]”hŒraw_atomic_long_sub_return”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj%h²hh³j7h´M=ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjbubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj^ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŸŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjLsbŒc.raw_atomic_long_sub_return”†”asbuh1hhj–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj–ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj–ubj)�”}”(hjph]”hŒv”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj^ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj%h²hh³j7h´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj!h²hh³j7h´M=ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j7h´M=hjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M=hjþh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j7h´M=ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX(**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Safe to use in noinstr code; prefer atomic_long_sub_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MAhjubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjBh]”hŒlong i”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M>hj<ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jWh´M>hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jWh´M>hj9ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj{h]”hŒatomic_long_t *v”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M?hjuubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�h´M?hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�h´M?hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MAhjubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÌh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌubhŒ to (”…”�”}”(hjÌh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌubhŒ - ”…”�”}”(hjÌh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌubhŒ) with full ordering.”…”�”}”(hjÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M@hjubjM)�”}”(hŒGSafe to use in noinstr code; prefer atomic_long_sub_return() elsewhere.”h]”hŒGSafe to use in noinstr code; prefer atomic_long_sub_return() elsewhere.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MBhjubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj"h]”hŒReturn”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MDhjubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MEhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_sub_return_acquire (C function)”Œ$c.raw_atomic_long_sub_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBlong raw_atomic_long_sub_return_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒAlong raw_atomic_long_sub_return_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjuh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjuh²hh³j‡h´MRubhÿ)�”}”(hŒ"raw_atomic_long_sub_return_acquire”h]”j)�”}”(hŒ"raw_atomic_long_sub_return_acquire”h]”hŒ"raw_atomic_long_sub_return_acquire”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjuh²hh³j‡h´MRubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj²ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jïŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjœsbŒ$c.raw_atomic_long_sub_return_acquire”†”asbuh1hhjæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjæubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjæubj)�”}”(hjph]”hŒv”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj®ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjuh²hh³j‡h´MRubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjqh²hh³j‡h´MRubah}”(h]”jlah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‡h´MRhjnh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”•!h´MRhjNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjnh²hh³j‡h´MRubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjijHjijI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX3**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_sub_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjsh]”hŒ Parameters”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MVhjmubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj’h]”hŒlong i”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MShjŒubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j§h´MShj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j§h´MShj‰ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjËh]”hŒatomic_long_t *v”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MThjÅubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jàh´MThjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jàh´MThj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjmubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MVhjmubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ to (”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ - ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ) with acquire ordering.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MUhjmubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_sub_return_acquire() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_sub_return_acquire() elsewhere.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MWhjmubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjrh]”hŒReturn”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MYhjmubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjˆh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆubhŒ.”…”�”}”(hjˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MZhjmubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_sub_return_release (C function)”Œ$c.raw_atomic_long_sub_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBlong raw_atomic_long_sub_return_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒAlong raw_atomic_long_sub_return_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÅh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MgubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅh²hh³j×h´Mgubhÿ)�”}”(hŒ"raw_atomic_long_sub_return_release”h]”j)�”}”(hŒ"raw_atomic_long_sub_return_release”h]”hŒ"raw_atomic_long_sub_return_release”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÅh²hh³j×h´Mgubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjþubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j?Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjìsbŒ$c.raw_atomic_long_sub_return_release”†”asbuh1hhj6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj6ubj)�”}”(hjph]”hŒv”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjþubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÅh²hh³j×h´Mgubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÁh²hh³j×h´Mgubah}”(h]”j¼ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j×h´Mghj¾h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mghjžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¾h²hh³j×h´Mgubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¹jHj¹jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX3**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Safe to use in noinstr code; prefer atomic_long_sub_return_release() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mkhj½ubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjâh]”hŒlong i”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhhjÜubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j÷h´Mhhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j÷h´MhhjÙubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjh]”hŒatomic_long_t *v”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MihjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j0h´Mihj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j0h´MihjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj½ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjVh]”hŒ Description”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mkhj½ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjlh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlubhŒ to (”…”�”}”(hjlh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlubhŒ - ”…”�”}”(hjlh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlubhŒ) with release ordering.”…”�”}”(hjlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mjhj½ubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_sub_return_release() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_sub_return_release() elsewhere.”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mlhj½ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÂh]”hŒReturn”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mnhj½ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjØh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØubhŒ.”…”�”}”(hjØh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mohj½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_sub_return_relaxed (C function)”Œ$c.raw_atomic_long_sub_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBlong raw_atomic_long_sub_return_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒAlong raw_atomic_long_sub_return_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M|ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j'h´M|ubhÿ)�”}”(hŒ"raw_atomic_long_sub_return_relaxed”h]”j)�”}”(hŒ"raw_atomic_long_sub_return_relaxed”h]”hŒ"raw_atomic_long_sub_return_relaxed”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j'h´M|ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjNubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj<sbŒ$c.raw_atomic_long_sub_return_relaxed”†”asbuh1hhj†ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj†ubj)�”}”(hjph]”hŒv”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjNubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³j'h´M|ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j'h´M|ubah}”(h]”j ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j'h´M|hjh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M|hjîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j'h´M|ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj jHj jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX3**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_sub_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M€hj ubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj2 h]”hŒlong i”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M}hj, ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jG h´M}hjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj, ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jG h´M}hj) ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjk h]”hŒatomic_long_t *v”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhji ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M~hje ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€ h´M~hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhje ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€ h´M~hj) ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M€hj ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¼ h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼ ubhŒ to (”…”�”}”(hj¼ h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼ ubhŒ - ”…”�”}”(hj¼ h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼ ubhŒ) with relaxed ordering.”…”�”}”(hj¼ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj ubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_sub_return_relaxed() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_sub_return_relaxed() elsewhere.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M�hj ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mƒhj ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj( h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj( ubhŒ.”…”�”}”(hj( h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M„hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic_long_fetch_sub (C function)”Œc.raw_atomic_long_fetch_sub”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9long raw_atomic_long_fetch_sub (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ8long raw_atomic_long_fetch_sub(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhje h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhje h²hh³jw h´M‘ubhÿ)�”}”(hŒraw_atomic_long_fetch_sub”h]”j)�”}”(hŒraw_atomic_long_fetch_sub”h]”hŒraw_atomic_long_fetch_sub”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj† ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhje h²hh³jw h´M‘ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¢ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¢ ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjž ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jß Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŒ sbŒc.raw_atomic_long_fetch_sub”†”asbuh1hhjÖ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖ ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÖ ubj)�”}”(hjph]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjž ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hje h²hh³jw h´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hja h²hh³jw h´M‘ubah}”(h]”j\ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jw h´M‘hj^ h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M‘hj> h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj^ h²hh³jw h´M‘ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjY jHjY jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX(**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with full ordering. Safe to use in noinstr code; prefer atomic_long_fetch_sub() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjc h]”hŒ Parameters”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M•hj] ubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj‚ h]”hŒlong i”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M’hj| ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j— h´M’hj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj| ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j— h´M’hjy ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj» h]”hŒatomic_long_t *v”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M“hjµ ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÐ h´M“hjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjµ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÐ h´M“hjy ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj] ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M•hj] ubjM)�”}”(hŒ?Atomically updates **v** to (**v** - **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ to (”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ - ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ) with full ordering.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M”hj] ubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic_long_fetch_sub() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic_long_fetch_sub() elsewhere.”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M–hj] ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjb h]”hŒReturn”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj` ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M˜hj] ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjx h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx ubhŒ.”…”�”}”(hjx h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M™hj] ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_sub_acquire (C function)”Œ#c.raw_atomic_long_fetch_sub_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_sub_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµ h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµ h²hh³jÇ h´M¦ubhÿ)�”}”(hŒ!raw_atomic_long_fetch_sub_acquire”h]”j)�”}”(hŒ!raw_atomic_long_fetch_sub_acquire”h]”hŒ!raw_atomic_long_fetch_sub_acquire”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjµ h²hh³jÇ h´M¦ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjò ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjò ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjî ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj* ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j/ Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÜ sbŒ#c.raw_atomic_long_fetch_sub_acquire”†”asbuh1hhj& ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj& ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj& ubj)�”}”(hjph]”hŒv”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj& ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjî ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjµ h²hh³jÇ h´M¦ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj± h²hh³jÇ h´M¦ubah}”(h]”j¬ ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÇ h´M¦hj® h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¦hjŽ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj® h²hh³jÇ h´M¦ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj© jHj© jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX3**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_fetch_sub_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mªhj­ ubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjÒ h]”hŒlong i”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÐ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M§hjÌ ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj h]”hŒatomic_long_t *v”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¨hjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j h´M¨hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j h´M¨hjÉ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj­ ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjFh]”hŒ Description”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mªhj­ ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ to (”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ - ”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ) with acquire ordering.”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M©hj­ ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_sub_acquire() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_sub_acquire() elsewhere.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M«hj­ ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj²h]”hŒReturn”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M­hj­ ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÈh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈubhŒ.”…”�”}”(hjÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M®hj­ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_sub_release (C function)”Œ#c.raw_atomic_long_fetch_sub_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_sub_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_sub_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³jh´M»ubhÿ)�”}”(hŒ!raw_atomic_long_fetch_sub_release”h]”j)�”}”(hŒ!raw_atomic_long_fetch_sub_release”h]”hŒ!raw_atomic_long_fetch_sub_release”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³jh´M»ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjBubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjBubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj,sbŒ#c.raw_atomic_long_fetch_sub_release”†”asbuh1hhjvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjvubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjvubj)�”}”(hjph]”hŒv”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³jh´M»ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³jh´M»ubah}”(h]”jüah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´M»hjþh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M»hjÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjþh²hh³jh´M»ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjùjHjùjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX3**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with release ordering. Safe to use in noinstr code; prefer atomic_long_fetch_sub_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¿hjýubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj"h]”hŒlong i”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¼hjubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j7h´M¼hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j7h´M¼hjubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj[h]”hŒatomic_long_t *v”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M½hjUubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jph´M½hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jph´M½hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjýubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¿hjýubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¬h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬ubhŒ to (”…”�”}”(hj¬h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬ubhŒ - ”…”�”}”(hj¬h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬ubhŒ) with release ordering.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¾hjýubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_sub_release() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_sub_release() elsewhere.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÀhjýubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÂhjýubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÃhjýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_sub_relaxed (C function)”Œ#c.raw_atomic_long_fetch_sub_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_sub_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjUh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÐubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjUh²hh³jgh´MÐubhÿ)�”}”(hŒ!raw_atomic_long_fetch_sub_relaxed”h]”j)�”}”(hŒ!raw_atomic_long_fetch_sub_relaxed”h]”hŒ!raw_atomic_long_fetch_sub_relaxed”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjUh²hh³jgh´MÐubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj’ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÏŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj|sbŒ#c.raw_atomic_long_fetch_sub_relaxed”†”asbuh1hhjÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÆubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÆubj)�”}”(hjph]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjUh²hh³jgh´MÐubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjQh²hh³jgh´MÐubah}”(h]”jLah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jgh´MÐhjNh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÐhj.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjNh²hh³jgh´MÐubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjIjHjIjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX3**Parameters** ``long i`` long value to subtract ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_fetch_sub_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjSh]”hŒ Parameters”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÔhjMubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjrh]”hŒlong i”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÑhjlubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‡h´MÑhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‡h´MÑhjiubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj«h]”hŒatomic_long_t *v”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÒhj¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÀh´MÒhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÀh´MÒhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjMubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÔhjMubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjüh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüubhŒ to (”…”�”}”(hjüh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüubhŒ - ”…”�”}”(hjüh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüubhŒ) with relaxed ordering.”…”�”}”(hjüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÓhjMubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_sub_relaxed() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_sub_relaxed() elsewhere.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÕhjMubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjRh]”hŒReturn”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M×hjMubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ.”…”�”}”(hjhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MØhjMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ raw_atomic_long_inc (C function)”Œc.raw_atomic_long_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void raw_atomic_long_inc (atomic_long_t *v)”h]”hù)�”}”(hŒ*void raw_atomic_long_inc(atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¥h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¥h²hh³j·h´Måubhÿ)�”}”(hŒraw_atomic_long_inc”h]”j)�”}”(hŒraw_atomic_long_inc”h]”hŒraw_atomic_long_inc”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¥h²hh³j·h´Måubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jëŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÌsbŒc.raw_atomic_long_inc”†”asbuh1hhjâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjâubj)�”}”(hjph]”hŒv”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÞubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¥h²hh³j·h´Måubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¡h²hh³j·h´Måubah}”(h]”jœah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j·h´Måhjžh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MåhjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjžh²hh³j·h´Måubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjejHjejI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒè**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_inc() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjoh]”hŒ Parameters”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Méhjiubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjŽh]”hŒatomic_long_t *v”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MæhjˆubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjiubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MèhjiubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjßubhŒ to (”…”�”}”(hjßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjßubhŒ + 1) with relaxed ordering.”…”�”}”(hjßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MçhjiubjM)�”}”(hŒ@Safe to use in noinstr code; prefer atomic_long_inc() elsewhere.”h]”hŒ@Safe to use in noinstr code; prefer atomic_long_inc() elsewhere.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MéhjiubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj#h]”hŒReturn”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MëhjiubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mìhjiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'raw_atomic_long_inc_return (C function)”Œc.raw_atomic_long_inc_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2long raw_atomic_long_inc_return (atomic_long_t *v)”h]”hù)�”}”(hŒ1long raw_atomic_long_inc_return(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjdh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdh²hh³jvh´Mùubhÿ)�”}”(hŒraw_atomic_long_inc_return”h]”j)�”}”(hŒraw_atomic_long_inc_return”h]”hŒraw_atomic_long_inc_return”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjdh²hh³jvh´Mùubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jªŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‹sbŒc.raw_atomic_long_inc_return”†”asbuh1hhj¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¡ubj)�”}”(hjph]”hŒv”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjdh²hh³jvh´Mùubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj`h²hh³jvh´Mùubah}”(h]”j[ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jvh´Mùhj]h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mùhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj]h²hh³jvh´Mùubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj$jHj$jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÿ**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Safe to use in noinstr code; prefer atomic_long_inc_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj.h]”hŒ Parameters”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mýhj(ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjMh]”hŒatomic_long_t *v”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MúhjGubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jbh´Múhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbh´MúhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj(ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mühj(ubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjžh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžubhŒ to (”…”�”}”(hjžh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžubhŒ + 1) with full ordering.”…”�”}”(hjžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mûhj(ubjM)�”}”(hŒGSafe to use in noinstr code; prefer atomic_long_inc_return() elsewhere.”h]”hŒGSafe to use in noinstr code; prefer atomic_long_inc_return() elsewhere.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mýhj(ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjâh]”hŒReturn”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mÿhj(ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjøh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjøubhŒ.”…”�”}”(hjøh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_inc_return_acquire (C function)”Œ$c.raw_atomic_long_inc_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long raw_atomic_long_inc_return_acquire (atomic_long_t *v)”h]”hù)�”}”(hŒ9long raw_atomic_long_inc_return_acquire(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj5h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5h²hh³jGh´M ubhÿ)�”}”(hŒ"raw_atomic_long_inc_return_acquire”h]”j)�”}”(hŒ"raw_atomic_long_inc_return_acquire”h]”hŒ"raw_atomic_long_inc_return_acquire”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj5h²hh³jGh´M ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j{Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj\sbŒ$c.raw_atomic_long_inc_return_acquire”†”asbuh1hhjrubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjrubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjrubj)�”}”(hjph]”hŒv”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjnubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj5h²hh³jGh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj1h²hh³jGh´M ubah}”(h]”j,ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jGh´M hj.h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M hjÚh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj.h²hh³jGh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjõjHjõjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_inc_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÿh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhjùubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjh]”hŒatomic_long_t *v”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j3h´Mhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j3h´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjùubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjYh]”hŒ Description”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjùubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjoh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjoubhŒ to (”…”�”}”(hjoh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjoubhŒ + 1) with acquire ordering.”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjùubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_inc_return_acquire() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_inc_return_acquire() elsewhere.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjùubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj³h]”hŒReturn”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjùubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjÉh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉubhŒ.”…”�”}”(hjÉh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhjùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_inc_return_release (C function)”Œ$c.raw_atomic_long_inc_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long raw_atomic_long_inc_return_release (atomic_long_t *v)”h]”hù)�”}”(hŒ9long raw_atomic_long_inc_return_release(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M!ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³jh´M!ubhÿ)�”}”(hŒ"raw_atomic_long_inc_return_release”h]”j)�”}”(hŒ"raw_atomic_long_inc_return_release”h]”hŒ"raw_atomic_long_inc_return_release”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³jh´M!ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jLŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj-sbŒ$c.raw_atomic_long_inc_return_release”†”asbuh1hhjCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjCubj)�”}”(hjph]”hŒv”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³jh´M!ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³jh´M!ubah}”(h]”jýah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´M!hjÿh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M!hj«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÿh²hh³jh´M!ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÆjHjÆjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Safe to use in noinstr code; prefer atomic_long_inc_return_release() elsewhere. **Return** The updated value of **v**.”•>h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M%hjÊubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjïh]”hŒatomic_long_t *v”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M"hjéubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´M"hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´M"hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÊubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M$hjÊubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj@h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@ubhŒ to (”…”�”}”(hj@h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@ubhŒ + 1) with release ordering.”…”�”}”(hj@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M#hjÊubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_inc_return_release() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_inc_return_release() elsewhere.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M%hjÊubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj„h]”hŒReturn”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M'hjÊubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjšh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšubhŒ.”…”�”}”(hjšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M(hjÊubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_inc_return_relaxed (C function)”Œ$c.raw_atomic_long_inc_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long raw_atomic_long_inc_return_relaxed (atomic_long_t *v)”h]”hù)�”}”(hŒ9long raw_atomic_long_inc_return_relaxed(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj×h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj×h²hh³jéh´M5ubhÿ)�”}”(hŒ"raw_atomic_long_inc_return_relaxed”h]”j)�”}”(hŒ"raw_atomic_long_inc_return_relaxed”h]”hŒ"raw_atomic_long_inc_return_relaxed”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj×h²hh³jéh´M5ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjþsbŒ$c.raw_atomic_long_inc_return_relaxed”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hjph]”hŒv”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj×h²hh³jéh´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÓh²hh³jéh´M5ubah}”(h]”jÎah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jéh´M5hjÐh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M5hj|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÐh²hh³jéh´M5ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj—jHj—jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_inc_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M9hj›ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjÀh]”hŒatomic_long_t *v”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M6hjºubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÕh´M6hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÕh´M6hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj›ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M8hj›ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ to (”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ + 1) with relaxed ordering.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M7hj›ubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_inc_return_relaxed() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_inc_return_relaxed() elsewhere.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M9hj›ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjUh]”hŒReturn”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M;hj›ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjkh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkubhŒ.”…”�”}”(hjkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M<hj›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic_long_fetch_inc (C function)”Œc.raw_atomic_long_fetch_inc”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1long raw_atomic_long_fetch_inc (atomic_long_t *v)”h]”hù)�”}”(hŒ0long raw_atomic_long_fetch_inc(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¨h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MIubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¨h²hh³jºh´MIubhÿ)�”}”(hŒraw_atomic_long_fetch_inc”h]”j)�”}”(hŒraw_atomic_long_fetch_inc”h]”hŒraw_atomic_long_fetch_inc”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¨h²hh³jºh´MIubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jîŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÏsbŒc.raw_atomic_long_fetch_inc”†”asbuh1hhjåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjåubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjåubj)�”}”(hjph]”hŒv”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjáubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¨h²hh³jºh´MIubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¤h²hh³jºh´MIubah}”(h]”jŸah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jºh´MIhj¡h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment with full ordering”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MIhjMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¡h²hh³jºh´MIubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjhjHjhjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÿ**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with full ordering. Safe to use in noinstr code; prefer atomic_long_fetch_inc() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjrh]”hŒ Parameters”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MMhjlubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj‘h]”hŒatomic_long_t *v”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MJhj‹ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¦h´MJhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¦h´MJhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjlubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MLhjlubjM)�”}”(hŒ;Atomically updates **v** to (**v** + 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjâh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâubhŒ to (”…”�”}”(hjâh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâubhŒ + 1) with full ordering.”…”�”}”(hjâh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MKhjlubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic_long_fetch_inc() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic_long_fetch_inc() elsewhere.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MMhjlubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj&h]”hŒReturn”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MOhjlubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj<h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<ubhŒ.”…”�”}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MPhjlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_inc_acquire (C function)”Œ#c.raw_atomic_long_fetch_inc_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9long raw_atomic_long_fetch_inc_acquire (atomic_long_t *v)”h]”hù)�”}”(hŒ8long raw_atomic_long_fetch_inc_acquire(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjyh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyh²hh³j‹h´M]ubhÿ)�”}”(hŒ!raw_atomic_long_fetch_inc_acquire”h]”j)�”}”(hŒ!raw_atomic_long_fetch_inc_acquire”h]”hŒ!raw_atomic_long_fetch_inc_acquire”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjšubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjyh²hh³j‹h´M]ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¿Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj sbŒ#c.raw_atomic_long_fetch_inc_acquire”†”asbuh1hhj¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¶ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¶ubj)�”}”(hjph]”hŒv”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj²ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjyh²hh³j‹h´M]ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjuh²hh³j‹h´M]ubah}”(h]”jpah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‹h´M]hjrh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M]hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjrh²hh³j‹h´M]ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj9jHj9jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_fetch_inc_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjCh]”hŒ Parameters”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mahj=ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjbh]”hŒatomic_long_t *v”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M^hj\ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jwh´M^hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jwh´M^hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj=ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M`hj=ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj³h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³ubhŒ to (”…”�”}”(hj³h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³ubhŒ + 1) with acquire ordering.”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M_hj=ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_inc_acquire() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_inc_acquire() elsewhere.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mahj=ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj÷h]”hŒReturn”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mchj=ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mdhj=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_inc_release (C function)”Œ#c.raw_atomic_long_fetch_inc_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9long raw_atomic_long_fetch_inc_release (atomic_long_t *v)”h]”hù)�”}”(hŒ8long raw_atomic_long_fetch_inc_release(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjJ h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJ h²hh³j\ h´Mqubhÿ)�”}”(hŒ!raw_atomic_long_fetch_inc_release”h]”j)�”}”(hŒ!raw_atomic_long_fetch_inc_release”h]”hŒ!raw_atomic_long_fetch_inc_release”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjJ h²hh³j\ h´Mqubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j� Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjq sbŒ#c.raw_atomic_long_fetch_inc_release”†”asbuh1hhj‡ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡ ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‡ ubj)�”}”(hjph]”hŒv”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƒ ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjJ h²hh³j\ h´Mqubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjF h²hh³j\ h´Mqubah}”(h]”jA ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j\ h´MqhjC h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with release ordering”h]”hŒ&atomic increment with release ordering”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mqhjï h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjC h²hh³j\ h´Mqubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj !jHj !jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with release ordering. Safe to use in noinstr code; prefer atomic_long_fetch_inc_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Muhj!ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj3!h]”hŒatomic_long_t *v”…”�”}”(hj5!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mrhj-!ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjL!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jH!h´MrhjI!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj-!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jH!h´Mrhj*!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj!ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjn!h]”hŒ Description”…”�”}”(hjp!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mthj!ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj„!h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„!ubhŒ to (”…”�”}”(hj„!h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjž!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„!ubhŒ + 1) with release ordering.”…”�”}”(hj„!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mshj!ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_inc_release() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_inc_release() elsewhere.”…”�”}”(hj·!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Muhj!ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÈ!h]”hŒReturn”…”�”}”(hjÊ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mwhj!ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÞ!h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjæ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞ!ubhŒ.”…”�”}”(hjÞ!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mxhj!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_inc_relaxed (C function)”Œ#c.raw_atomic_long_fetch_inc_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9long raw_atomic_long_fetch_inc_relaxed (atomic_long_t *v)”h]”hù)�”}”(hŒ8long raw_atomic_long_fetch_inc_relaxed(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj"h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M…ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj."h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"h²hh³j-"h´M…ubhÿ)�”}”(hŒ!raw_atomic_long_fetch_inc_relaxed”h]”j)�”}”(hŒ!raw_atomic_long_fetch_inc_relaxed”h]”hŒ!raw_atomic_long_fetch_inc_relaxed”…”�”}”(hj@"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj<"ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj"h²hh³j-"h´M…ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj_"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”ja"Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjB"sbŒ#c.raw_atomic_long_fetch_inc_relaxed”†”asbuh1hhjX"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjX"ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjX"ubj)�”}”(hjph]”hŒv”…”�”}”(hjš"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjX"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjT"ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj"h²hh³j-"h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj"h²hh³j-"h´M…ubah}”(h]”j"ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j-"h´M…hj"h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(hjÃ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M…hjÀ"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj"h²hh³j-"h´M…ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÛ"jHjÛ"jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_fetch_inc_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M‰hjß"ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj#h]”hŒatomic_long_t *v”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M†hjþ"ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjß"ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj?#h]”hŒ Description”…”�”}”(hjA#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mˆhjß"ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjU#h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj]#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjU#ubhŒ to (”…”�”}”(hjU#h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjo#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjU#ubhŒ + 1) with relaxed ordering.”…”�”}”(hjU#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M‡hjß"ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_inc_relaxed() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_inc_relaxed() elsewhere.”…”�”}”(hjˆ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M‰hjß"ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj™#h]”hŒReturn”…”�”}”(hj›#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M‹hjß"ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¯#h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj·#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¯#ubhŒ.”…”�”}”(hj¯#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MŒhjß"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ raw_atomic_long_dec (C function)”Œc.raw_atomic_long_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void raw_atomic_long_dec (atomic_long_t *v)”h]”hù)�”}”(hŒ*void raw_atomic_long_dec(atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjð#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjì#h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M™ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjì#h²hh³jþ#h´M™ubhÿ)�”}”(hŒraw_atomic_long_dec”h]”j)�”}”(hŒraw_atomic_long_dec”h]”hŒraw_atomic_long_dec”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj $ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjì#h²hh³jþ#h´M™ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj0$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j2$Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj$sbŒc.raw_atomic_long_dec”†”asbuh1hhj)$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)$ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj^$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj)$ubj)�”}”(hjph]”hŒv”…”�”}”(hjk$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj%$ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjì#h²hh³jþ#h´M™ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjè#h²hh³jþ#h´M™ubah}”(h]”jã#ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jþ#h´M™hjå#h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj”$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M™hj‘$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjå#h²hh³jþ#h´M™ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¬$jHj¬$jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒè**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_dec() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M�hj°$ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjÕ$h]”hŒatomic_long_t *v”…”�”}”(hj×$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÓ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MšhjÏ$ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjî$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj°$ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mœhj°$ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj&%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj.%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&%ubhŒ to (”…”�”}”(hj&%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj@%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&%ubhŒ - 1) with relaxed ordering.”…”�”}”(hj&%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M›hj°$ubjM)�”}”(hŒ@Safe to use in noinstr code; prefer atomic_long_dec() elsewhere.”h]”hŒ@Safe to use in noinstr code; prefer atomic_long_dec() elsewhere.”…”�”}”(hjY%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M�hj°$ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjj%h]”hŒReturn”…”�”}”(hjl%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MŸhj°$ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hj€%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M hj°$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'raw_atomic_long_dec_return (C function)”Œc.raw_atomic_long_dec_return”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ2long raw_atomic_long_dec_return (atomic_long_t *v)”h]”hù)�”}”(hŒ1long raw_atomic_long_dec_return(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¯%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj«%h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾%h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj«%h²hh³j½%h´M­ubhÿ)�”}”(hŒraw_atomic_long_dec_return”h]”j)�”}”(hŒraw_atomic_long_dec_return”h]”hŒraw_atomic_long_dec_return”…”�”}”(hjÐ%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌ%ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj«%h²hh³j½%h´M­ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjï%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjì%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jñ%Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÒ%sbŒc.raw_atomic_long_dec_return”†”asbuh1hhjè%ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjè%ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjè%ubj)�”}”(hjph]”hŒv”…”�”}”(hj*&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjä%ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj«%h²hh³j½%h´M­ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj§%h²hh³j½%h´M­ubah}”(h]”j¢%ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j½%h´M­hj¤%h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hjS&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M­hjP&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¤%h²hh³j½%h´M­ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjk&jHjk&jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÿ**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Safe to use in noinstr code; prefer atomic_long_dec_return() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hju&h]”hŒ Parameters”…”�”}”(hjw&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjs&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M±hjo&ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj”&h]”hŒatomic_long_t *v”…”�”}”(hj–&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj’&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M®hjŽ&ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj­&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjo&ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M°hjo&ubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjå&h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjí&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjå&ubhŒ to (”…”�”}”(hjå&h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÿ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjå&ubhŒ - 1) with full ordering.”…”�”}”(hjå&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¯hjo&ubjM)�”}”(hŒGSafe to use in noinstr code; prefer atomic_long_dec_return() elsewhere.”h]”hŒGSafe to use in noinstr code; prefer atomic_long_dec_return() elsewhere.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M±hjo&ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj)'h]”hŒReturn”…”�”}”(hj+'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj''ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M³hjo&ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj?'h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjG'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?'ubhŒ.”…”�”}”(hj?'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M´hjo&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_dec_return_acquire (C function)”Œ$c.raw_atomic_long_dec_return_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long raw_atomic_long_dec_return_acquire (atomic_long_t *v)”h]”hù)�”}”(hŒ9long raw_atomic_long_dec_return_acquire(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj€'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj|'h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|'h²hh³jŽ'h´MÁubhÿ)�”}”(hŒ"raw_atomic_long_dec_return_acquire”h]”j)�”}”(hŒ"raw_atomic_long_dec_return_acquire”h]”hŒ"raw_atomic_long_dec_return_acquire”…”�”}”(hj¡'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�'ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj|'h²hh³jŽ'h´MÁubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÀ'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÂ'Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj£'sbŒ$c.raw_atomic_long_dec_return_acquire”†”asbuh1hhj¹'ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹'ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjî'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¹'ubj)�”}”(hjph]”hŒv”…”�”}”(hjû'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjµ'ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj|'h²hh³jŽ'h´MÁubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjx'h²hh³jŽ'h´MÁubah}”(h]”js'ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŽ'h´MÁhju'h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hj$(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÁhj!(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hju'h²hh³jŽ'h´MÁubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj<(jHj<(jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_dec_return_acquire() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjF(h]”hŒ Parameters”…”�”}”(hjH(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÅhj@(ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hje(h]”hŒatomic_long_t *v”…”�”}”(hjg(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjc(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÂhj_(ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj~(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jz(h´MÂhj{(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj_(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jz(h´MÂhj\(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj@(ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÄhj@(ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¶(h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¾(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶(ubhŒ to (”…”�”}”(hj¶(h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÐ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¶(ubhŒ - 1) with acquire ordering.”…”�”}”(hj¶(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÃhj@(ubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_dec_return_acquire() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_dec_return_acquire() elsewhere.”…”�”}”(hjé(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÅhj@(ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjú(h]”hŒReturn”…”�”}”(hjü(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjø(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÇhj@(ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj)h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)ubhŒ.”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÈhj@(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_dec_return_release (C function)”Œ$c.raw_atomic_long_dec_return_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long raw_atomic_long_dec_return_release (atomic_long_t *v)”h]”hù)�”}”(hŒ9long raw_atomic_long_dec_return_release(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjQ)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjM)h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjM)h²hh³j_)h´MÕubhÿ)�”}”(hŒ"raw_atomic_long_dec_return_release”h]”j)�”}”(hŒ"raw_atomic_long_dec_return_release”h]”hŒ"raw_atomic_long_dec_return_release”…”�”}”(hjr)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn)ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjM)h²hh³j_)h´MÕubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj‘)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j“)Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjt)sbŒ$c.raw_atomic_long_dec_return_release”†”asbuh1hhjŠ)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŠ)ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¿)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŠ)ubj)�”}”(hjph]”hŒv”…”�”}”(hjÌ)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj†)ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjM)h²hh³j_)h´MÕubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjI)h²hh³j_)h´MÕubah}”(h]”jD)ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j_)h´MÕhjF)h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hjõ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÕhjò)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjF)h²hh³j_)h´MÕubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj *jHj *jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Safe to use in noinstr code; prefer atomic_long_dec_return_release() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÙhj*ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj6*h]”hŒatomic_long_t *v”…”�”}”(hj8*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÖhj0*ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjO*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jK*h´MÖhjL*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jK*h´MÖhj-*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj*ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjq*h]”hŒ Description”…”�”}”(hjs*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjo*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MØhj*ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj‡*h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‡*ubhŒ to (”…”�”}”(hj‡*h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¡*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‡*ubhŒ - 1) with release ordering.”…”�”}”(hj‡*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M×hj*ubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_dec_return_release() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_dec_return_release() elsewhere.”…”�”}”(hjº*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÙhj*ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjË*h]”hŒReturn”…”�”}”(hjÍ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÉ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÛhj*ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjá*h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjé*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjá*ubhŒ.”…”�”}”(hjá*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÜhj*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ/raw_atomic_long_dec_return_relaxed (C function)”Œ$c.raw_atomic_long_dec_return_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:long raw_atomic_long_dec_return_relaxed (atomic_long_t *v)”h]”hù)�”}”(hŒ9long raw_atomic_long_dec_return_relaxed(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj"+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj+h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MéubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+h²hh³j0+h´Méubhÿ)�”}”(hŒ"raw_atomic_long_dec_return_relaxed”h]”j)�”}”(hŒ"raw_atomic_long_dec_return_relaxed”h]”hŒ"raw_atomic_long_dec_return_relaxed”…”�”}”(hjC+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?+ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj+h²hh³j0+h´Méubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjb+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jd+Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjE+sbŒ$c.raw_atomic_long_dec_return_relaxed”†”asbuh1hhj[+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[+ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj[+ubj)�”}”(hjph]”hŒv”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjW+ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj+h²hh³j0+h´Méubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj+h²hh³j0+h´Méubah}”(h]”j+ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j0+h´Méhj+h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hjÆ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MéhjÃ+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj+h²hh³j0+h´Méubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÞ+jHjÞ+jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_dec_return_relaxed() elsewhere. **Return** The updated value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Míhjâ+ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj,h]”hŒatomic_long_t *v”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mêhj,ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjâ+ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjB,h]”hŒ Description”…”�”}”(hjD,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mìhjâ+ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjX,h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjX,ubhŒ to (”…”�”}”(hjX,h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjr,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjX,ubhŒ - 1) with relaxed ordering.”…”�”}”(hjX,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mëhjâ+ubjM)�”}”(hŒOSafe to use in noinstr code; prefer atomic_long_dec_return_relaxed() elsewhere.”h]”hŒOSafe to use in noinstr code; prefer atomic_long_dec_return_relaxed() elsewhere.”…”�”}”(hj‹,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Míhjâ+ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjœ,h]”hŒReturn”…”�”}”(hjž,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjš,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mïhjâ+ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj²,h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjº,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj²,ubhŒ.”…”�”}”(hj²,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mðhjâ+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic_long_fetch_dec (C function)”Œc.raw_atomic_long_fetch_dec”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1long raw_atomic_long_fetch_dec (atomic_long_t *v)”h]”hù)�”}”(hŒ0long raw_atomic_long_fetch_dec(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjó,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjï,h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MýubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjï,h²hh³j-h´Mýubhÿ)�”}”(hŒraw_atomic_long_fetch_dec”h]”j)�”}”(hŒraw_atomic_long_fetch_dec”h]”hŒraw_atomic_long_fetch_dec”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjï,h²hh³j-h´Mýubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj3-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j5-Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj-sbŒc.raw_atomic_long_fetch_dec”†”asbuh1hhj,-ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS-h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj,-ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hja-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj,-ubj)�”}”(hjph]”hŒv”…”�”}”(hjn-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj(-ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjï,h²hh³j-h´Mýubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjë,h²hh³j-h´Mýubah}”(h]”jæ,ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j-h´Mýhjè,h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hj—-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mýhj”-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjè,h²hh³j-h´Mýubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¯-jHj¯-jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hŒÿ**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with full ordering. Safe to use in noinstr code; prefer atomic_long_fetch_dec() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj³-ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjØ-h]”hŒatomic_long_t *v”…”�”}”(hjÚ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÖ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MþhjÒ-ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjñ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj³-ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj³-ubjM)�”}”(hŒ;Atomically updates **v** to (**v** - 1) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj).h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj1.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj).ubhŒ to (”…”�”}”(hj).h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjC.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj).ubhŒ - 1) with full ordering.”…”�”}”(hj).h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mÿhj³-ubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic_long_fetch_dec() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic_long_fetch_dec() elsewhere.”…”�”}”(hj\.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj³-ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjm.h]”hŒReturn”…”�”}”(hjo.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj³-ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjƒ.h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‹.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒ.ubhŒ.”…”�”}”(hjƒ.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”•Ch´Mhj³-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_dec_acquire (C function)”Œ#c.raw_atomic_long_fetch_dec_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9long raw_atomic_long_fetch_dec_acquire (atomic_long_t *v)”h]”hù)�”}”(hŒ8long raw_atomic_long_fetch_dec_acquire(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÄ.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÀ.h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÀ.h²hh³jÒ.h´Mubhÿ)�”}”(hŒ!raw_atomic_long_fetch_dec_acquire”h]”j)�”}”(hŒ!raw_atomic_long_fetch_dec_acquire”h]”hŒ!raw_atomic_long_fetch_dec_acquire”…”�”}”(hjå.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjá.ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÀ.h²hh³jÒ.h´Mubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j/Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjç.sbŒ#c.raw_atomic_long_fetch_dec_acquire”†”asbuh1hhjý.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$/h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjý.ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj2/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjý.ubj)�”}”(hjph]”hŒv”…”�”}”(hj?/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjý.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjù.ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÀ.h²hh³jÒ.h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¼.h²hh³jÒ.h´Mubah}”(h]”j·.ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÒ.h´Mhj¹.h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with acquire ordering”h]”hŒ&atomic decrement with acquire ordering”…”�”}”(hjh/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhje/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¹.h²hh³jÒ.h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj€/jHj€/jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_fetch_dec_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj„/ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj©/h]”hŒatomic_long_t *v”…”�”}”(hj«/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj§/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj£/ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÂ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¾/h´Mhj¿/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj£/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¾/h´Mhj /ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj„/ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj„/ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjú/h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjú/ubhŒ to (”…”�”}”(hjú/h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjú/ubhŒ - 1) with acquire ordering.”…”�”}”(hjú/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj„/ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_dec_acquire() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_dec_acquire() elsewhere.”…”�”}”(hj-0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj„/ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj>0h]”hŒReturn”…”�”}”(hj@0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj„/ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjT0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj\0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjT0ubhŒ.”…”�”}”(hjT0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj„/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_dec_release (C function)”Œ#c.raw_atomic_long_fetch_dec_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9long raw_atomic_long_fetch_dec_release (atomic_long_t *v)”h]”hù)�”}”(hŒ8long raw_atomic_long_fetch_dec_release(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj•0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‘0h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M%ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‘0h²hh³j£0h´M%ubhÿ)�”}”(hŒ!raw_atomic_long_fetch_dec_release”h]”j)�”}”(hŒ!raw_atomic_long_fetch_dec_release”h]”hŒ!raw_atomic_long_fetch_dec_release”…”�”}”(hj¶0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²0ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj‘0h²hh³j£0h´M%ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÕ0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒ0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j×0Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¸0sbŒ#c.raw_atomic_long_fetch_dec_release”†”asbuh1hhjÎ0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÎ0ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÎ0ubj)�”}”(hjph]”hŒv”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎ0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÊ0ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‘0h²hh³j£0h´M%ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�0h²hh³j£0h´M%ubah}”(h]”jˆ0ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j£0h´M%hjŠ0h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(hj91h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M%hj61h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŠ0h²hh³j£0h´M%ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjQ1jHjQ1jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with release ordering. Safe to use in noinstr code; prefer atomic_long_fetch_dec_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj[1h]”hŒ Parameters”…”�”}”(hj]1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjY1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M)hjU1ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjz1h]”hŒatomic_long_t *v”…”�”}”(hj|1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjx1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M&hjt1ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj“1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�1h´M&hj�1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjt1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�1h´M&hjq1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjU1ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjµ1h]”hŒ Description”…”�”}”(hj·1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M(hjU1ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjË1h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÓ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjË1ubhŒ to (”…”�”}”(hjË1h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjå1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjË1ubhŒ - 1) with release ordering.”…”�”}”(hjË1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M'hjU1ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_dec_release() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_dec_release() elsewhere.”…”�”}”(hjþ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M)hjU1ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj2h]”hŒReturn”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj 2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M+hjU1ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj%2h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj-2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%2ubhŒ.”…”�”}”(hj%2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M,hjU1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_dec_relaxed (C function)”Œ#c.raw_atomic_long_fetch_dec_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9long raw_atomic_long_fetch_dec_relaxed (atomic_long_t *v)”h]”hù)�”}”(hŒ8long raw_atomic_long_fetch_dec_relaxed(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjf2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjb2h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjb2h²hh³jt2h´M9ubhÿ)�”}”(hŒ!raw_atomic_long_fetch_dec_relaxed”h]”j)�”}”(hŒ!raw_atomic_long_fetch_dec_relaxed”h]”hŒ!raw_atomic_long_fetch_dec_relaxed”…”�”}”(hj‡2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒ2ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjb2h²hh³jt2h´M9ubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj¦2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¨2Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‰2sbŒ#c.raw_atomic_long_fetch_dec_relaxed”†”asbuh1hhjŸ2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŸ2ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÔ2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŸ2ubj)�”}”(hjph]”hŒv”…”�”}”(hjá2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŸ2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj›2ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjb2h²hh³jt2h´M9ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj^2h²hh³jt2h´M9ubah}”(h]”jY2ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jt2h´M9hj[2h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M9hj3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj[2h²hh³jt2h´M9ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj"3jHj"3jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** - 1) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_fetch_dec_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj,3h]”hŒ Parameters”…”�”}”(hj.3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M=hj&3ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjK3h]”hŒatomic_long_t *v”…”�”}”(hjM3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjI3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M:hjE3ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjd3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`3h´M:hja3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjE3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`3h´M:hjB3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj&3ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj†3h]”hŒ Description”…”�”}”(hjˆ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M<hj&3ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjœ3h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¤3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœ3ubhŒ to (”…”�”}”(hjœ3h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¶3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœ3ubhŒ - 1) with relaxed ordering.”…”�”}”(hjœ3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M;hj&3ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_dec_relaxed() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_dec_relaxed() elsewhere.”…”�”}”(hjÏ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M=hj&3ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjà3h]”hŒReturn”…”�”}”(hjâ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M?hj&3ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjö3h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjþ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö3ubhŒ.”…”�”}”(hjö3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M@hj&3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ raw_atomic_long_and (C function)”Œc.raw_atomic_long_and”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3void raw_atomic_long_and (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ2void raw_atomic_long_and(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj74h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj34h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj34h²hh³jE4h´MMubhÿ)�”}”(hŒraw_atomic_long_and”h]”j)�”}”(hŒraw_atomic_long_and”h]”hŒraw_atomic_long_and”…”�”}”(hjX4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjT4ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj34h²hh³jE4h´MMubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjt4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjp4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjp4ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjl4ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj«4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j­4Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjZ4sbŒc.raw_atomic_long_and”†”asbuh1hhj¤4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤4ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÙ4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¤4ubj)�”}”(hjph]”hŒv”…”�”}”(hjæ4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjl4ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj34h²hh³jE4h´MMubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj/4h²hh³jE4h´MMubah}”(h]”j*4ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jE4h´MMhj,4h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MMhj 5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj,4h²hh³jE4h´MMubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj'5jHj'5jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_and() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj15h]”hŒ Parameters”…”�”}”(hj35h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MQhj+5ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjP5h]”hŒlong i”…”�”}”(hjR5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjN5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MNhjJ5ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hji5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³je5h´MNhjf5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³je5h´MNhjG5ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj‰5h]”hŒatomic_long_t *v”…”�”}”(hj‹5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‡5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MOhjƒ5ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj¢5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jž5h´MOhjŸ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjƒ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jž5h´MOhjG5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj+5ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÄ5h]”hŒ Description”…”�”}”(hjÆ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MQhj+5ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÚ5h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjâ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚ5ubhŒ to (”…”�”}”(hjÚ5h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjô5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚ5ubhŒ & ”…”�”}”(hjÚ5h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚ5ubhŒ) with relaxed ordering.”…”�”}”(hjÚ5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MPhj+5ubjM)�”}”(hŒ@Safe to use in noinstr code; prefer atomic_long_and() elsewhere.”h]”hŒ@Safe to use in noinstr code; prefer atomic_long_and() elsewhere.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MRhj+5ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj06h]”hŒReturn”…”�”}”(hj26h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MThj+5ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjF6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MUhj+5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&raw_atomic_long_fetch_and (C function)”Œc.raw_atomic_long_fetch_and”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9long raw_atomic_long_fetch_and (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ8long raw_atomic_long_fetch_and(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hju6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjq6h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjq6h²hh³jƒ6h´Mbubhÿ)�”}”(hŒraw_atomic_long_fetch_and”h]”j)�”}”(hŒraw_atomic_long_fetch_and”h]”hŒraw_atomic_long_fetch_and”…”�”}”(hj–6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’6ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjq6h²hh³jƒ6h´Mbubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj²6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj®6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj®6ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÎ6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj®6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjª6ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjé6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæ6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jë6Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj˜6sbŒc.raw_atomic_long_fetch_and”†”asbuh1hhjâ6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâ6ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjâ6ubj)�”}”(hjph]”hŒv”…”�”}”(hj$7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjª6ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjq6h²hh³jƒ6h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjm6h²hh³jƒ6h´Mbubah}”(h]”jh6ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jƒ6h´Mbhjj6h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic bitwise AND with full ordering”h]”hŒ%atomic bitwise AND with full ordering”…”�”}”(hjM7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MbhjJ7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjj6h²hh³jƒ6h´Mbubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGje7jHje7jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **i**) with full ordering. Safe to use in noinstr code; prefer atomic_long_fetch_and() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjo7h]”hŒ Parameters”…”�”}”(hjq7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mfhji7ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjŽ7h]”hŒlong i”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŒ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mchjˆ7ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj§7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j£7h´Mchj¤7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjˆ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j£7h´Mchj…7ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjÇ7h]”hŒatomic_long_t *v”…”�”}”(hjÉ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÅ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MdhjÁ7ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjà7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÜ7h´MdhjÝ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÁ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÜ7h´Mdhj…7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hji7ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj8h]”hŒ Description”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mfhji7ubjM)�”}”(hŒ?Atomically updates **v** to (**v** & **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj 8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ to (”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj28h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ & ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjD8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ) with full ordering.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mehji7ubjM)�”}”(hŒFSafe to use in noinstr code; prefer atomic_long_fetch_and() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic_long_fetch_and() elsewhere.”…”�”}”(hj]8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mghji7ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjn8h]”hŒReturn”…”�”}”(hjp8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjl8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mihji7ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj„8h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„8ubhŒ.”…”�”}”(hj„8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mjhji7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_and_acquire (C function)”Œ#c.raw_atomic_long_fetch_and_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_and_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_and_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÅ8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÁ8h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MwubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁ8h²hh³jÓ8h´Mwubhÿ)�”}”(hŒ!raw_atomic_long_fetch_and_acquire”h]”j)�”}”(hŒ!raw_atomic_long_fetch_and_acquire”h]”hŒ!raw_atomic_long_fetch_and_acquire”…”�”}”(hjæ8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ8ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÁ8h²hh³jÓ8h´Mwubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjþ8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþ8ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjú8ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj99h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj69ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j;9Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjè8sbŒ#c.raw_atomic_long_fetch_and_acquire”†”asbuh1hhj29ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj29ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjg9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj29ubj)�”}”(hjph]”hŒv”…”�”}”(hjt9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj29ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjú8ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÁ8h²hh³jÓ8h´Mwubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj½8h²hh³jÓ8h´Mwubah}”(h]”j¸8ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÓ8h´Mwhjº8h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with acquire ordering”h]”hŒ(atomic bitwise AND with acquire ordering”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mwhjš9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjº8h²hh³jÓ8h´Mwubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjµ9jHjµ9jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_fetch_and_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj¿9h]”hŒ Parameters”…”�”}”(hjÁ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj½9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M{hj¹9ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjÞ9h]”hŒlong i”…”�”}”(hjà9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÜ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MxhjØ9ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj÷9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jó9h´Mxhjô9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjØ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jó9h´MxhjÕ9ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj:h]”hŒatomic_long_t *v”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Myhj:ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj0:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j,:h´Myhj-:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j,:h´MyhjÕ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¹9ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjR:h]”hŒ Description”…”�”}”(hjT:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M{hj¹9ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjh:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjp:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh:ubhŒ to (”…”�”}”(hjh:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‚:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh:ubhŒ & ”…”�”}”(hjh:h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj”:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh:ubhŒ) with acquire ordering.”…”�”}”(hjh:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mzhj¹9ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_and_acquire() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_and_acquire() elsewhere.”…”�”}”(hj­:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M|hj¹9ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¾:h]”hŒReturn”…”�”}”(hjÀ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M~hj¹9ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÔ:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÜ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÔ:ubhŒ.”…”�”}”(hjÔ:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj¹9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_and_release (C function)”Œ#c.raw_atomic_long_fetch_and_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_and_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_and_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj;h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MŒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;h²hh³j#;h´MŒubhÿ)�”}”(hŒ!raw_atomic_long_fetch_and_release”h]”j)�”}”(hŒ!raw_atomic_long_fetch_and_release”h]”hŒ!raw_atomic_long_fetch_and_release”…”�”}”(hj6;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2;ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj;h²hh³j#;h´MŒubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjR;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjN;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjN;ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjn;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjN;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjJ;ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj‰;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‹;Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj8;sbŒ#c.raw_atomic_long_fetch_and_release”†”asbuh1hhj‚;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚;ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj·;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‚;ubj)�”}”(hjph]”hŒv”…”�”}”(hjÄ;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjJ;ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj;h²hh³j#;h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj ;h²hh³j#;h´MŒubah}”(h]”j;ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j#;h´MŒhj ;h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with release ordering”h]”hŒ(atomic bitwise AND with release ordering”…”�”}”(hjí;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MŒhjê;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj ;h²hh³j#;h´MŒubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj<jHj<jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **i**) with release ordering. Safe to use in noinstr code; prefer atomic_long_fetch_and_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M�hj <ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj.<h]”hŒlong i”…”�”}”(hj0<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj,<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M�hj(<ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjG<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jC<h´M�hjD<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj(<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jC<h´M�hj%<ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjg<h]”hŒatomic_long_t *v”…”�”}”(hji<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhje<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MŽhja<ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj€<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j|<h´MŽhj}<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhja<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j|<h´MŽhj%<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj <ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M�hj <ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj¸<h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÀ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸<ubhŒ to (”…”�”}”(hj¸<h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÒ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸<ubhŒ & ”…”�”}”(hj¸<h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjä<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¸<ubhŒ) with release ordering.”…”�”}”(hj¸<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M�hj <ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_and_release() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_and_release() elsewhere.”…”�”}”(hjý<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M‘hj <ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj=h]”hŒReturn”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj =ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M“hj <ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj$=h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj,=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$=ubhŒ.”…”�”}”(hj$=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M”hj <ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_and_relaxed (C function)”Œ#c.raw_atomic_long_fetch_and_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_and_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hje=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhja=h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhja=h²hh³js=h´M¡ubhÿ)�”}”(hŒ!raw_atomic_long_fetch_and_relaxed”h]”j)�”}”(hŒ!raw_atomic_long_fetch_and_relaxed”h]”hŒ!raw_atomic_long_fetch_and_relaxed”…”�”}”(hj†=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚=ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhja=h²hh³js=h´M¡ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¢=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjž=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjž=ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj¾=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjž=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjš=ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÙ=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÛ=Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjˆ=sbŒ#c.raw_atomic_long_fetch_and_relaxed”†”asbuh1hhjÒ=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÒ=ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÒ=ubj)�”}”(hjph]”hŒv”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjš=ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hja=h²hh³js=h´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj]=h²hh³js=h´M¡ubah}”(h]”jX=ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³js=h´M¡hjZ=h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hj=>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¡hj:>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjZ=h²hh³js=h´M¡ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjU>jHjU>jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_fetch_and_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj_>h]”hŒ Parameters”…”�”}”(hja>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj]>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¥hjY>ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj~>h]”hŒlong i”…”�”}”(hj€>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj|>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¢hjx>ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj—>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j“>h´M¢hj”>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjx>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j“>h´M¢hju>ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj·>h]”hŒatomic_long_t *v”…”�”}”(hj¹>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjµ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M£hj±>ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÐ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÌ>h´M£hjÍ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj±>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÌ>h´M£hju>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjY>ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¥hjY>ubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubhŒ to (”…”�”}”(hj?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj"?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubhŒ & ”…”�”}”(hj?h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj4?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubhŒ) with relaxed ordering.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¤hjY>ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_and_relaxed() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_and_relaxed() elsewhere.”…”�”}”(hjM?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¦hjY>ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj^?h]”hŒReturn”…”�”}”(hj`?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¨hjY>ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjt?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt?ubhŒ.”…”�”}”(hjt?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M©hjY>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#raw_atomic_long_andnot (C function)”Œc.raw_atomic_long_andnot”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6void raw_atomic_long_andnot (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ5void raw_atomic_long_andnot(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjµ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj±?h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±?h²hh³jÃ?h´M¶ubhÿ)�”}”(hŒraw_atomic_long_andnot”h]”j)�”}”(hŒraw_atomic_long_andnot”h]”hŒraw_atomic_long_andnot”…”�”}”(hjÖ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒ?ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj±?h²hh³jÃ?h´M¶ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjò?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjî?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî?ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê?ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj)@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j+@Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjØ?sbŒc.raw_atomic_long_andnot”†”asbuh1hhj"@ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"@ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjW@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj"@ubj)�”}”(hjph]”hŒv”…”�”}”(hjd@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjê?ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj±?h²hh³jÃ?h´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj­?h²hh³jÃ?h´M¶ubah}”(h]”j¨?ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÃ?h´M¶hjª?h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed ordering”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¶hjŠ@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjª?h²hh³jÃ?h´M¶ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¥@jHj¥@jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **~i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_andnot() elsewhere. **Return** Nothing.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mºhj©@ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjÎ@h]”hŒlong i”…”�”}”(hjÐ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÌ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M·hjÈ@ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjç@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjAh]”hŒatomic_long_t *v”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¸hjAubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jAh´M¸hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jAh´M¸hjÅ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj©@ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjBAh]”hŒ Description”…”�”}”(hjDAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mºhj©@ubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjXAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXAubhŒ to (”…”�”}”(hjXAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjrAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXAubhŒ & ”…”�”}”(hjXAh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hj„Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXAubhŒ) with relaxed ordering.”…”�”}”(hjXAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¹hj©@ubjM)�”}”(hŒCSafe to use in noinstr code; prefer atomic_long_andnot() elsewhere.”h]”hŒCSafe to use in noinstr code; prefer atomic_long_andnot() elsewhere.”…”�”}”(hj�Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M»hj©@ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj®Ah]”hŒReturn”…”�”}”(hj°Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M½hj©@ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjÄAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¾hj©@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_long_fetch_andnot (C function)”Œc.raw_atomic_long_fetch_andnot”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj,Bubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjLBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj(Bubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjgBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jiBŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjBsbŒc.raw_atomic_long_fetch_andnot”†”asbuh1hhj`BubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`Bubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj•Bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj`Bubj)�”}”(hjph]”hŒv”…”�”}”(hj¢Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj(Bubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjïAh²hh³jBh´MËubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjëAh²hh³jBh´MËubah}”(h]”jæAah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jBh´MËhjèAh²hubj4)�”}”(hhh]”jM)�”}”(hŒ)atomic bitwise AND NOT with full ordering”h]”hŒ)atomic bitwise AND NOT with full ordering”…”�”}”(hjËBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MËhjÈBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjèAh²hh³jBh´MËubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjãBjHjãBjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX **Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **~i**) with full ordering. Safe to use in noinstr code; prefer atomic_long_fetch_andnot() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjíBh]”hŒ Parameters”…”�”}”(hjïBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjëBubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÏhjçBubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj Ch]”hŒlong i”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÌhjCubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hj%Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j!Ch´MÌhj"Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j!Ch´MÌhjCubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjECh]”hŒatomic_long_t *v”…”�”}”(hjGCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjCCubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÍhj?CubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj^Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jZCh´MÍhj[Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj?Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jZCh´MÍhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjçBubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj€Ch]”hŒ Description”…”�”}”(hj‚Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÏhjçBubjM)�”}”(hŒ@Atomically updates **v** to (**v** & **~i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj–Ch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjžCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–CubhŒ to (”…”�”}”(hj–Ch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj°Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–CubhŒ & ”…”�”}”(hj–Ch²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjÂCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–CubhŒ) with full ordering.”…”�”}”(hj–Ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÎhjçBubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_long_fetch_andnot() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_long_fetch_andnot() elsewhere.”…”�”}”(hjÛCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÐhjçBubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjìCh]”hŒReturn”…”�”}”(hjîCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjêCubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÒhjçBubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjDh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDubhŒ.”…”�”}”(hjDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÓhjçBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ1raw_atomic_long_fetch_andnot_acquire (C function)”Œ&c.raw_atomic_long_fetch_andnot_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDlong raw_atomic_long_fetch_andnot_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒClong raw_atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjCDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj?Dh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”•h´MàubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRDh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?Dh²hh³jQDh´Màubhÿ)�”}”(hŒ$raw_atomic_long_fetch_andnot_acquire”h]”j)�”}”(hŒ$raw_atomic_long_fetch_andnot_acquire”h]”hŒ$raw_atomic_long_fetch_andnot_acquire”…”�”}”(hjdDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`Dubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj?Dh²hh³jQDh´Màubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj€Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj|DubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽDh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|Dubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjœDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjxDubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj·Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¹DŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjfDsbŒ&c.raw_atomic_long_fetch_andnot_acquire”†”asbuh1hhj°DubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°Dubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjåDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj°Dubj)�”}”(hjph]”hŒv”…”�”}”(hjòDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjxDubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj?Dh²hh³jQDh´Màubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj;Dh²hh³jQDh´Màubah}”(h]”j6Dah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jQDh´Màhj8Dh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with acquire ordering”h]”hŒ,atomic bitwise AND NOT with acquire ordering”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MàhjEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj8Dh²hh³jQDh´Màubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj3EjHj3EjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX+**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **~i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_fetch_andnot_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj=Eh]”hŒ Parameters”…”�”}”(hj?Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mähj7Eubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj\Eh]”hŒlong i”…”�”}”(hj^Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjZEubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MáhjVEubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjuEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jqEh´MáhjrEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjVEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jqEh´MáhjSEubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj•Eh]”hŒatomic_long_t *v”…”�”}”(hj—Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj“Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mâhj�EubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj®Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jªEh´Mâhj«Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jªEh´MâhjSEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj7EubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjÐEh]”hŒ Description”…”�”}”(hjÒEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎEubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mähj7EubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjæEh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjîEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæEubhŒ to (”…”�”}”(hjæEh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæEubhŒ & ”…”�”}”(hjæEh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæEubhŒ) with acquire ordering.”…”�”}”(hjæEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mãhj7EubjM)�”}”(hŒQSafe to use in noinstr code; prefer atomic_long_fetch_andnot_acquire() elsewhere.”h]”hŒQSafe to use in noinstr code; prefer atomic_long_fetch_andnot_acquire() elsewhere.”…”�”}”(hj+Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Måhj7EubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mçhj7EubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjRFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRFubhŒ.”…”�”}”(hjRFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mèhj7Eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ1raw_atomic_long_fetch_andnot_release (C function)”Œ&c.raw_atomic_long_fetch_andnot_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDlong raw_atomic_long_fetch_andnot_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒClong raw_atomic_long_fetch_andnot_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj“Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�Fh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MõubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Fh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Fh²hh³j¡Fh´Mõubhÿ)�”}”(hŒ$raw_atomic_long_fetch_andnot_release”h]”j)�”}”(hŒ$raw_atomic_long_fetch_andnot_release”h]”hŒ$raw_atomic_long_fetch_andnot_release”…”�”}”(hj´Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°Fubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�Fh²hh³j¡Fh´Mõubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÐFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÌFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÌFubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjìFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÈFubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j GŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¶FsbŒ&c.raw_atomic_long_fetch_andnot_release”†”asbuh1hhjGubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Gh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj5Gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjGubj)�”}”(hjph]”hŒv”…”�”}”(hjBGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÈFubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�Fh²hh³j¡Fh´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‹Fh²hh³j¡Fh´Mõubah}”(h]”j†Fah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¡Fh´MõhjˆFh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with release ordering”h]”hŒ,atomic bitwise AND NOT with release ordering”…”�”}”(hjkGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MõhjhGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjˆFh²hh³j¡Fh´Mõubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjƒGjHjƒGjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX+**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** & **~i**) with release ordering. Safe to use in noinstr code; prefer atomic_long_fetch_andnot_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj�Gh]”hŒ Parameters”…”�”}”(hj�Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mùhj‡Gubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj¬Gh]”hŒlong i”…”�”}”(hj®Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjªGubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Möhj¦GubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjÅGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÁGh´MöhjÂGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¦Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÁGh´Möhj£Gubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjåGh]”hŒatomic_long_t *v”…”�”}”(hjçGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjãGubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M÷hjßGubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjþGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³júGh´M÷hjûGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjßGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³júGh´M÷hj£Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‡GubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj Hh]”hŒ Description”…”�”}”(hj"Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mùhj‡GubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj6Hh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj>Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6HubhŒ to (”…”�”}”(hj6Hh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjPHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6HubhŒ & ”…”�”}”(hj6Hh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjbHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6HubhŒ) with release ordering.”…”�”}”(hj6Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Møhj‡GubjM)�”}”(hŒQSafe to use in noinstr code; prefer atomic_long_fetch_andnot_release() elsewhere.”h]”hŒQSafe to use in noinstr code; prefer atomic_long_fetch_andnot_release() elsewhere.”…”�”}”(hj{Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Múhj‡GubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjŒHh]”hŒReturn”…”�”}”(hjŽHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŠHubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mühj‡GubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¢Hh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjªHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢HubhŒ.”…”�”}”(hj¢Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mýhj‡Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ1raw_atomic_long_fetch_andnot_relaxed (C function)”Œ&c.raw_atomic_long_fetch_andnot_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDlong raw_atomic_long_fetch_andnot_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒClong raw_atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjãHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjßHh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòHh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjßHh²hh³jñHh´M ubhÿ)�”}”(hŒ$raw_atomic_long_fetch_andnot_relaxed”h]”j)�”}”(hŒ$raw_atomic_long_fetch_andnot_relaxed”h]”hŒ$raw_atomic_long_fetch_andnot_relaxed”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjßHh²hh³jñHh´M ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjIubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjIubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjXh]”hŒ Description”…”�”}”(hj@Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÄ]ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‹]h²hh³j�]h´MÇubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‡]h²hh³j�]h´MÇubah}”(h]”j‚]ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�]h´MÇhj„]h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with release ordering”h]”hŒ(atomic bitwise XOR with release ordering”…”�”}”(hjg^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÇhjd^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj„]h²hh³j�]h´MÇubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj^jHj^jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** ^ **i**) with release ordering. Safe to use in noinstr code; prefer atomic_long_fetch_xor_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MËhjƒ^ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj¨^h]”hŒlong i”…”�”}”(hjª^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¦^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÈhj¢^ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjÁ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjá^h]”hŒatomic_long_t *v”…”�”}”(hjã^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjß^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÉhjÛ^ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjú^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjƒ^ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MËhjƒ^ubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj2_h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj:_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2_ubhŒ to (”…”�”}”(hj2_h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjL_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2_ubhŒ ^ ”…”�”}”(hj2_h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj^_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2_ubhŒ) with release ordering.”…”�”}”(hj2_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÊhjƒ^ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_xor_release() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_xor_release() elsewhere.”…”�”}”(hjw_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÌhjƒ^ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjˆ_h]”hŒReturn”…”�”}”(hjŠ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÎhjƒ^ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjž_h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¦_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjž_ubhŒ.”…”�”}”(hjž_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÏhjƒ^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ.raw_atomic_long_fetch_xor_relaxed (C function)”Œ#c.raw_atomic_long_fetch_xor_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_xor_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjß_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÛ_h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛ_h²hh³jí_h´MÜubhÿ)�”}”(hŒ!raw_atomic_long_fetch_xor_relaxed”h]”j)�”}”(hŒ!raw_atomic_long_fetch_xor_relaxed”h]”hŒ!raw_atomic_long_fetch_xor_relaxed”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjü_ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÛ_h²hh³jí_h´MÜubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj`ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj8`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj`ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjS`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jU`Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj`sbŒ#c.raw_atomic_long_fetch_xor_relaxed”†”asbuh1hhjL`ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjL`ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjL`ubj)�”}”(hjph]”hŒv”…”�”}”(hjŽ`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjL`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj`ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÛ_h²hh³jí_h´MÜubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj×_h²hh³jí_h´MÜubah}”(h]”jÒ_ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jí_h´MÜhjÔ_h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(hj·`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÜhj´`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÔ_h²hh³jí_h´MÜubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÏ`jHjÏ`jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX'**Parameters** ``long i`` long value ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** ^ **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_fetch_xor_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MàhjÓ`ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjø`h]”hŒlong i”…”�”}”(hjú`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjö`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÝhjò`ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j ah´MÝhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjò`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j ah´MÝhjï`ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj1ah]”hŒatomic_long_t *v”…”�”}”(hj3ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj/aubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÞhj+aubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjJah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jFah´MÞhjGaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj+aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jFah´MÞhjï`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÓ`ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjlah]”hŒ Description”…”�”}”(hjnah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MàhjÓ`ubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj‚ah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŠah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚aubhŒ to (”…”�”}”(hj‚ah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjœah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚aubhŒ ^ ”…”�”}”(hj‚ah²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj®ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚aubhŒ) with relaxed ordering.”…”�”}”(hj‚ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MßhjÓ`ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_xor_relaxed() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_xor_relaxed() elsewhere.”…”�”}”(hjÇah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MáhjÓ`ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjØah]”hŒReturn”…”�”}”(hjÚah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MãhjÓ`ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjîah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjöah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjîaubhŒ.”…”�”}”(hjîah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MähjÓ`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!raw_atomic_long_xchg (C function)”Œc.raw_atomic_long_xchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6long raw_atomic_long_xchg (atomic_long_t *v, long new)”h]”hù)�”}”(hŒ5long raw_atomic_long_xchg(atomic_long_t *v, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj/bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj+bh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+bh²hh³j=bh´Mñubhÿ)�”}”(hŒraw_atomic_long_xchg”h]”j)�”}”(hŒraw_atomic_long_xchg”h]”hŒraw_atomic_long_xchg”…”�”}”(hjPbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLbubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj+bh²hh³j=bh´Mñubj4)�”}”(hŒ(atomic_long_t *v, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjobh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jqbŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjRbsbŒc.raw_atomic_long_xchg”†”asbuh1hhjhbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjhbubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjhbubj)�”}”(hjph]”hŒv”…”�”}”(hjªbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjdbubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÂbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¾bubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐbh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¾bubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjÞbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjdbubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj+bh²hh³j=bh´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj'bh²hh³j=bh´Mñubah}”(h]”j"bah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j=bh´Mñhj$bh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic exchange with full ordering”h]”hŒ"atomic exchange with full ordering”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mñhjch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj$bh²hh³j=bh´Mñubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj cjHj cjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long new`` long value to assign **Description** Atomically updates **v** to **new** with full ordering. Safe to use in noinstr code; prefer atomic_long_xchg() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj*ch]”hŒ Parameters”…”�”}”(hj,ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mõhj$cubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjIch]”hŒatomic_long_t *v”…”�”}”(hjKch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjGcubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MòhjCcubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjbch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j^ch´Mòhj_cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjCcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j^ch´Mòhj@cubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj‚ch]”hŒlong new”…”�”}”(hj„ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj€cubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Móhj|cubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hj›ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j—ch´Móhj˜cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj|cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j—ch´Móhj@cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj$cubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj½ch]”hŒ Description”…”�”}”(hj¿ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»cubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mõhj$cubjM)�”}”(hŒ7Atomically updates **v** to **new** with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjÓch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÛch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓcubhŒ to ”…”�”}”(hjÓch²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjích²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓcubhŒ with full ordering.”…”�”}”(hjÓch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Môhj$cubjM)�”}”(hŒASafe to use in noinstr code; prefer atomic_long_xchg() elsewhere.”h]”hŒASafe to use in noinstr code; prefer atomic_long_xchg() elsewhere.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Möhj$cubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjdh]”hŒReturn”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Møhj$cubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj-dh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj5dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-dubhŒ.”…”�”}”(hj-dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mùhj$cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_long_xchg_acquire (C function)”Œc.raw_atomic_long_xchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>long raw_atomic_long_xchg_acquire (atomic_long_t *v, long new)”h]”hù)�”}”(hŒ=long raw_atomic_long_xchg_acquire(atomic_long_t *v, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjndh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjjdh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjjdh²hh³j|dh´Mubhÿ)�”}”(hŒraw_atomic_long_xchg_acquire”h]”j)�”}”(hŒraw_atomic_long_xchg_acquire”h]”hŒraw_atomic_long_xchg_acquire”…”�”}”(hj�dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹dubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjjdh²hh³j|dh´Mubj4)�”}”(hŒ(atomic_long_t *v, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj®dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j°dŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‘dsbŒc.raw_atomic_long_xchg_acquire”†”asbuh1hhj§dubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§dubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÜdh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj§dubj)�”}”(hjph]”hŒv”…”�”}”(hjédh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj£dubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjýdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjýdubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj£dubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjjdh²hh³j|dh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjfdh²hh³j|dh´Mubah}”(h]”jadah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j|dh´Mhjcdh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with acquire ordering”h]”hŒ%atomic exchange with acquire ordering”…”�”}”(hjGeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjDeh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjcdh²hh³j|dh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj_ejHj_ejI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX&**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long new`` long value to assign **Description** Atomically updates **v** to **new** with acquire ordering. Safe to use in noinstr code; prefer atomic_long_xchg_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjieh]”hŒ Parameters”…”�”}”(hjkeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M hjceubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjˆeh]”hŒatomic_long_t *v”…”�”}”(hjŠeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj†eubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj‚eubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj¡eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�eh´Mhjžeubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‚eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�eh´Mhjeubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hjÁeh]”hŒlong new”…”�”}”(hjÃeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¿eubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj»eubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjÚeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÖeh´Mhj×eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj»eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÖeh´Mhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjceubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjüeh]”hŒ Description”…”�”}”(hjþeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjúeubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M hjceubjM)�”}”(hŒ:Atomically updates **v** to **new** with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjfh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfubhŒ to ”…”�”}”(hjfh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj,fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfubhŒ with acquire ordering.”…”�”}”(hjfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M hjceubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_long_xchg_acquire() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_long_xchg_acquire() elsewhere.”…”�”}”(hjEfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M hjceubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjVfh]”hŒReturn”…”�”}”(hjXfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTfubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M hjceubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjlfh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjtfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlfubhŒ.”…”�”}”(hjlfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhjceubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_long_xchg_release (C function)”Œc.raw_atomic_long_xchg_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>long raw_atomic_long_xchg_release (atomic_long_t *v, long new)”h]”hù)�”}”(hŒ=long raw_atomic_long_xchg_release(atomic_long_t *v, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj­fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj©fh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼fh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj©fh²hh³j»fh´Mubhÿ)�”}”(hŒraw_atomic_long_xchg_release”h]”j)�”}”(hŒraw_atomic_long_xchg_release”h]”hŒraw_atomic_long_xchg_release”…”�”}”(hjÎfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÊfubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj©fh²hh³j»fh´Mubj4)�”}”(hŒ(atomic_long_t *v, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjífh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jïfŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÐfsbŒc.raw_atomic_long_xchg_release”†”asbuh1hhjæfubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjæfubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjæfubj)�”}”(hjph]”hŒv”…”�”}”(hj(gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjâfubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj@gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjlong raw_atomic_long_xchg_relaxed (atomic_long_t *v, long new)”h]”hù)�”}”(hŒ=long raw_atomic_long_xchg_relaxed(atomic_long_t *v, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjìhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjèhh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjèhh²hh³júhh´M0ubhÿ)�”}”(hŒraw_atomic_long_xchg_relaxed”h]”j)�”}”(hŒraw_atomic_long_xchg_relaxed”h]”hŒraw_atomic_long_xchg_relaxed”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj iubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjèhh²hh³júhh´M0ubj4)�”}”(hŒ(atomic_long_t *v, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj,ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j.iŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjisbŒc.raw_atomic_long_xchg_relaxed”†”asbuh1hhj%iubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj%iubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjZih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj%iubj)�”}”(hjph]”hŒv”…”�”}”(hjgih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj!iubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj{iubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj{iubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj›ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj!iubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjèhh²hh³júhh´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjähh²hh³júhh´M0ubah}”(h]”jßhah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³júhh´M0hjáhh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with relaxed ordering”h]”hŒ%atomic exchange with relaxed ordering”…”�”}”(hjÅih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M0hjÂih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjáhh²hh³júhh´M0ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÝijHjÝijI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX&**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long new`` long value to assign **Description** Atomically updates **v** to **new** with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_xchg_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjçih]”hŒ Parameters”…”�”}”(hjéih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåiubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M4hjáiubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjjh]”hŒatomic_long_t *v”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M1hjjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jjh´M1hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jjh´M1hjýiubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj?jh]”hŒlong new”…”�”}”(hjAjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=jubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M2hj9jubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjXjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jTjh´M2hjUjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jTjh´M2hjýiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjáiubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjzjh]”hŒ Description”…”�”}”(hj|jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M4hjáiubjM)�”}”(hŒ:Atomically updates **v** to **new** with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj�jh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj˜jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�jubhŒ to ”…”�”}”(hj�jh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjªjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�jubhŒ with relaxed ordering.”…”�”}”(hj�jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M3hjáiubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_long_xchg_relaxed() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_long_xchg_relaxed() elsewhere.”…”�”}”(hjÃjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M5hjáiubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÔjh]”hŒReturn”…”�”}”(hjÖjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M7hjáiubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjêjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjòjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjêjubhŒ.”…”�”}”(hjêjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M8hjáiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ$raw_atomic_long_cmpxchg (C function)”Œc.raw_atomic_long_cmpxchg”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒClong raw_atomic_long_cmpxchg (atomic_long_t *v, long old, long new)”h]”hù)�”}”(hŒBlong raw_atomic_long_cmpxchg(atomic_long_t *v, long old, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj+kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj'kh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'kh²hh³j9kh´MEubhÿ)�”}”(hŒraw_atomic_long_cmpxchg”h]”j)�”}”(hŒraw_atomic_long_cmpxchg”h]”hŒraw_atomic_long_cmpxchg”…”�”}”(hjLkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHkubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj'kh²hh³j9kh´MEubj4)�”}”(hŒ&(atomic_long_t *v, long old, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjkkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jmkŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjNksbŒc.raw_atomic_long_cmpxchg”†”asbuh1hhjdkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdkubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj™kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjdkubj)�”}”(hjph]”hŒv”…”�”}”(hj¦kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj`kubj:)�”}”(hŒlong old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¾kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjºkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjºkubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjÚkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj`kubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjókh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjïkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjïkubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj`kubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj'kh²hh³j9kh´MEubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj#kh²hh³j9kh´MEubah}”(h]”jkah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j9kh´MEhj kh²hubj4)�”}”(hhh]”jM)�”}”(hŒ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hj9lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MEhj6lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj kh²hh³j9kh´MEubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjQljHjQljI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX£**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long old`` long value to compare with ``long new`` long value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_cmpxchg() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj[lh]”hŒ Parameters”…”�”}”(hj]lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjYlubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MIhjUlubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjzlh]”hŒatomic_long_t *v”…”�”}”(hj|lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjxlubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MFhjtlubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj“lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�lh´MFhj�lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjtlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�lh´MFhjqlubj©)�”}”(hŒ(``long old`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long old``”h]”jS)�”}”(hj³lh]”hŒlong old”…”�”}”(hjµlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj±lubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MGhj­lubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hjÌlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÈlh´MGhjÉlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj­lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÈlh´MGhjqlubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hjìlh]”hŒlong new”…”�”}”(hjîlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjêlubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MHhjælubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmh´MHhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjælubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmh´MHhjqlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjUlubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj'mh]”hŒ Description”…”�”}”(hj)mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%mubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MJhjUlubjM)�”}”(hŒ‘If (**v** == **old**), atomically updates **v** to **new** with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj=mh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjEmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=mubhŒ == ”…”�”}”(hj=mh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjWmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=mubhŒ), atomically updates ”…”�”}”(hj=mh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjimh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=mubhŒ to ”…”�”}”(hj=mh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj{mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=mubhŒ with full ordering. Otherwise, ”…”�”}”(hj=mh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=mubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj=mh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MIhjUlubjM)�”}”(hŒDSafe to use in noinstr code; prefer atomic_long_cmpxchg() elsewhere.”h]”hŒDSafe to use in noinstr code; prefer atomic_long_cmpxchg() elsewhere.”…”�”}”(hj¦mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MLhjUlubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj·mh]”hŒReturn”…”�”}”(hj¹mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµmubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MNhjUlubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjÍmh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÕmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍmubhŒ.”…”�”}”(hjÍmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MOhjUlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic_long_cmpxchg_acquire (C function)”Œ!c.raw_atomic_long_cmpxchg_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒKlong raw_atomic_long_cmpxchg_acquire (atomic_long_t *v, long old, long new)”h]”hù)�”}”(hŒJlong raw_atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj nh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M\ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj nh²hh³jnh´M\ubhÿ)�”}”(hŒraw_atomic_long_cmpxchg_acquire”h]”j)�”}”(hŒraw_atomic_long_cmpxchg_acquire”h]”hŒraw_atomic_long_cmpxchg_acquire”…”�”}”(hj/nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+nubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj nh²hh³jnh´M\ubj4)�”}”(hŒ&(atomic_long_t *v, long old, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjNnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jPnŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj1nsbŒ!c.raw_atomic_long_cmpxchg_acquire”†”asbuh1hhjGnubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnnh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGnubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj|nh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjGnubj)�”}”(hjph]”hŒv”…”�”}”(hj‰nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjCnubj:)�”}”(hŒlong old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¡nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�nubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯nh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�nubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj½nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjCnubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÖnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÒnubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjänh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÒnubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjònh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjCnubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj nh²hh³jnh´M\ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjnh²hh³jnh´M\ubah}”(h]”jnah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jnh´M\hjnh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M\hjoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjnh²hh³jnh´M\ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj4ojHj4ojI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX®**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long old`` long value to compare with ``long new`` long value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_cmpxchg_acquire() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj>oh]”hŒ Parameters”…”�”}”(hj@oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mthj:rubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjYrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jUrh´MthjVrubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jUrh´Mthj7rubj©)�”}”(hŒ(``long old`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long old``”h]”jS)�”}”(hjyrh]”hŒlong old”…”�”}”(hj{rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjwrubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MuhjsrubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hj’rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŽrh´Muhj�rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjsrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŽrh´Muhj7rubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj²rh]”hŒlong new”…”�”}”(hj´rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°rubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mvhj¬rubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjËrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÇrh´MvhjÈrubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¬rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÇrh´Mvhj7rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjrubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjírh]”hŒ Description”…”�”}”(hjïrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjërubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MxhjrubjM)�”}”(hŒ”If (**v** == **old**), atomically updates **v** to **new** with release ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjsh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsubhŒ == ”…”�”}”(hjsh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsubhŒ), atomically updates ”…”�”}”(hjsh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj/sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsubhŒ to ”…”�”}”(hjsh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjAsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsubhŒ# with release ordering. Otherwise, ”…”�”}”(hjsh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjSsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MwhjrubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic_long_cmpxchg_release() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic_long_cmpxchg_release() elsewhere.”…”�”}”(hjlsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MzhjrubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj}sh]”hŒReturn”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj{subah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M|hjrubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj“sh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj›sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“subhŒ.”…”�”}”(hj“sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M}hjrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic_long_cmpxchg_relaxed (C function)”Œ!c.raw_atomic_long_cmpxchg_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒKlong raw_atomic_long_cmpxchg_relaxed (atomic_long_t *v, long old, long new)”h]”hù)�”}”(hŒJlong raw_atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÔsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÐsh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MŠubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãsh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÐsh²hh³jâsh´MŠubhÿ)�”}”(hŒraw_atomic_long_cmpxchg_relaxed”h]”j)�”}”(hŒraw_atomic_long_cmpxchg_relaxed”h]”hŒraw_atomic_long_cmpxchg_relaxed”…”�”}”(hjõsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñsubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÐsh²hh³jâsh´MŠubj4)�”}”(hŒ&(atomic_long_t *v, long old, long new)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jtŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj÷ssbŒ!c.raw_atomic_long_cmpxchg_relaxed”†”asbuh1hhj tubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj tubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjBth²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj tubj)�”}”(hjph]”hŒv”…”�”}”(hjOth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj tubj:)�”}”(hŒlong old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjgth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjctubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjctubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjƒth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjctubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj tubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjœth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj˜tubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj˜tubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj¸th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj tubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÐsh²hh³jâsh´MŠubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÌsh²hh³jâsh´MŠubah}”(h]”jÇsah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jâsh´MŠhjÉsh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with relaxed ordering”h]”hŒ1atomic compare and exchange with relaxed ordering”…”�”}”(hjâth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MŠhjßth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÉsh²hh³jâsh´MŠubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjútjHjútjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX®**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long old`` long value to compare with ``long new`` long value to assign **Description** If (**v** == **old**), atomically updates **v** to **new** with relaxed ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_cmpxchg_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjuh]”hŒ Parameters”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MŽhjþtubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj#uh]”hŒatomic_long_t *v”…”�”}”(hj%uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!uubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M‹hjuubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†‰h²hh³j—‰h´M>ubhÿ)�”}”(hŒraw_atomic_long_add_negative”h]”j)�”}”(hŒraw_atomic_long_add_negative”h]”hŒraw_atomic_long_add_negative”…”�”}”(hjª‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦‰ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj†‰h²hh³j—‰h´M>ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjƉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjâ‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¾‰ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjý‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjú‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÿ‰Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¬‰sbŒc.raw_atomic_long_add_negative”†”asbuh1hhjö‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjö‰ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj+Šh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjö‰ubj)�”}”(hjph]”hŒv”…”�”}”(hj8Šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjö‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¾‰ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj†‰h²hh³j—‰h´M>ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‚‰h²hh³j—‰h´M>ubah}”(h]”j}‰ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j—‰h´M>hj‰h²hubj4)�”}”(hhh]”jM)�”}”(hŒ2atomic add and test if negative with full ordering”h]”hŒ2atomic add and test if negative with full ordering”…”�”}”(hjaŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M>hj^Šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‰h²hh³j—‰h´M>ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjyŠjHjyŠjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXT**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with full ordering. Safe to use in noinstr code; prefer atomic_long_add_negative() elsewhere. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MBhj}Šubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj¢Šh]”hŒlong i”…”�”}”(hj¤Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M?hjœŠubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj»Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjÛŠh]”hŒatomic_long_t *v”…”�”}”(hjÝŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÙŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M@hjÕŠubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjôŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj}ŠubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MBhj}ŠubjM)�”}”(hŒ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj,‹h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj4‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,‹ubhŒ to (”…”�”}”(hj,‹h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjF‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,‹ubhŒ + ”…”�”}”(hj,‹h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjX‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,‹ubhŒ) with full ordering.”…”�”}”(hj,‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MAhj}ŠubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_long_add_negative() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_long_add_negative() elsewhere.”…”�”}”(hjq‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MChj}ŠubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj‚‹h]”hŒReturn”…”�”}”(hj„‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MEhj}ŠubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjœ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˜‹ubhŒ if the resulting value of ”…”�”}”(hj˜‹h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj®‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˜‹ubhŒ is negative, ”…”�”}”(hj˜‹h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjÀ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˜‹ubhŒ otherwise.”…”�”}”(hj˜‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MFhj}Šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ1raw_atomic_long_add_negative_acquire (C function)”Œ&c.raw_atomic_long_add_negative_acquire”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDbool raw_atomic_long_add_negative_acquire (long i, atomic_long_t *v)”h]”hù)�”}”(hŒCbool raw_atomic_long_add_negative_acquire(long i, atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjù‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjõ‹h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MSubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjõ‹h²hh³jŒh´MSubhÿ)�”}”(hŒ$raw_atomic_long_add_negative_acquire”h]”j)�”}”(hŒ$raw_atomic_long_add_negative_acquire”h]”hŒ$raw_atomic_long_add_negative_acquire”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjõ‹h²hh³jŒh´MSubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj5Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj1ŒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCŒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1Œubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjQŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-Œubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjlŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jnŒŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŒsbŒ&c.raw_atomic_long_add_negative_acquire”†”asbuh1hhjeŒubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒŒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjeŒubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjšŒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjeŒubj)�”}”(hjph]”hŒv”…”�”}”(hj§Œh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-Œubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjõ‹h²hh³jŒh´MSubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjñ‹h²hh³jŒh´MSubah}”(h]”jì‹ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŒh´MShjî‹h²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with acquire ordering”h]”hŒ5atomic add and test if negative with acquire ordering”…”�”}”(hjÐŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MShjÍŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjî‹h²hh³jŒh´MSubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjèŒjHjèŒjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX_**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with acquire ordering. Safe to use in noinstr code; prefer atomic_long_add_negative_acquire() elsewhere. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MWhjìŒubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj�h]”hŒlong i”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MThj �ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj*�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j&�h´MThj'�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj �ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j&�h´MThj�ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjJ�h]”hŒatomic_long_t *v”…”�”}”(hjL�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjH�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MUhjD�ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjc�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j_�h´MUhj`�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjD�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j_�h´MUhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjìŒubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MWhjìŒubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj›�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›�ubhŒ to (”…”�”}”(hj›�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjµ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›�ubhŒ + ”…”�”}”(hj›�h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÇ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›�ubhŒ) with acquire ordering.”…”�”}”(hj›�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MVhjìŒubjM)�”}”(hŒQSafe to use in noinstr code; prefer atomic_long_add_negative_acquire() elsewhere.”h]”hŒQSafe to use in noinstr code; prefer atomic_long_add_negative_acquire() elsewhere.”…”�”}”(hjà�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MXhjìŒubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjñ�h]”hŒReturn”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjï�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MZhjìŒubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽubhŒ if the resulting value of ”…”�”}”(hjŽh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽubhŒ is negative, ”…”�”}”(hjŽh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj/Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽubhŒ otherwise.”…”�”}”(hjŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M[hjìŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ1raw_atomic_long_add_negative_release (C function)”Œ&c.raw_atomic_long_add_negative_release”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDbool raw_atomic_long_add_negative_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒCbool raw_atomic_long_add_negative_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjhŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjdŽh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvŽh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdŽh²hh³juŽh´Mhubhÿ)�”}”(hŒ$raw_atomic_long_add_negative_release”h]”j)�”}”(hŒ$raw_atomic_long_add_negative_release”h]”hŒ$raw_atomic_long_add_negative_release”…”�”}”(hjˆŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„Žubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjdŽh²hh³juŽh´Mhubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¤Žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj ŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Žubj)�”}”(hjžÑh]”hŒi”…”�”}”(hjÀŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœŽubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÛŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÝŽŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŠŽsbŒ&c.raw_atomic_long_add_negative_release”†”asbuh1hhjÔŽubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûŽh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔŽubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÔŽubj)�”}”(hjph]”hŒv”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœŽubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjdŽh²hh³juŽh´Mhubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj`Žh²hh³juŽh´Mhubah}”(h]”j[Žah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³juŽh´Mhhj]Žh²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with release ordering”h]”hŒ5atomic add and test if negative with release ordering”…”�”}”(hj?�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhhj<�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj]Žh²hh³juŽh´Mhubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjW�jHjW�jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX_**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with release ordering. Safe to use in noinstr code; prefer atomic_long_add_negative_release() elsewhere. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hja�h]”hŒ Parameters”…”�”}”(hjc�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mlhj[�ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj€�h]”hŒlong i”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj~�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mihjz�ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j•�h´Mihj–�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjz�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j•�h´Mihjw�ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj¹�h]”hŒatomic_long_t *v”…”�”}”(hj»�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj·�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mjhj³�ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjÒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÎ�h´MjhjÏ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj³�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÎ�h´Mjhjw�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj[�ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mlhj[�ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj �h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj �ubhŒ to (”…”�”}”(hj �h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj �ubhŒ + ”…”�”}”(hj �h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj �ubhŒ) with release ordering.”…”�”}”(hj �h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mkhj[�ubjM)�”}”(hŒQSafe to use in noinstr code; prefer atomic_long_add_negative_release() elsewhere.”h]”hŒQSafe to use in noinstr code; prefer atomic_long_add_negative_release() elsewhere.”…”�”}”(hjO�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mmhj[�ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj`�h]”hŒReturn”…”�”}”(hjb�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mohj[�ubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjv�ubhŒ if the resulting value of ”…”�”}”(hjv�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjv�ubhŒ is negative, ”…”�”}”(hjv�h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjv�ubhŒ otherwise.”…”�”}”(hjv�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mphj[�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ1raw_atomic_long_add_negative_relaxed (C function)”Œ&c.raw_atomic_long_add_negative_relaxed”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDbool raw_atomic_long_add_negative_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒCbool raw_atomic_long_add_negative_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj×�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÓ�h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÓ�h²hh³jä�h´M}ubhÿ)�”}”(hŒ$raw_atomic_long_add_negative_relaxed”h]”j)�”}”(hŒ$raw_atomic_long_add_negative_relaxed”h]”hŒ$raw_atomic_long_add_negative_relaxed”…”�”}”(hj÷�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÓ�h²hh³jä�h´M}ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‘ubj)�”}”(hjžÑh]”hŒi”…”�”}”(hj/‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ‘ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjJ‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjG‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jL‘Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjù�sbŒ&c.raw_atomic_long_add_negative_relaxed”†”asbuh1hhjC‘ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj‘h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjC‘ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjx‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjC‘ubj)�”}”(hjph]”hŒv”…”�”}”(hj…‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjC‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ‘ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÓ�h²hh³jä�h´M}ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÏ�h²hh³jä�h´M}ubah}”(h]”jÊ�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jä�h´M}hjÌ�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with relaxed ordering”h]”hŒ5atomic add and test if negative with relaxed ordering”…”�”}”(hj®‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M}hj«‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÌ�h²hh³jä�h´M}ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÆ‘jHjÆ‘jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX_**Parameters** ``long i`` long value to add ``atomic_long_t *v`` pointer to atomic_long_t **Description** Atomically updates **v** to (**v** + **i**) with relaxed ordering. Safe to use in noinstr code; prefer atomic_long_add_negative_relaxed() elsewhere. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M�hjÊ‘ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjï‘h]”hŒlong i”…”�”}”(hjñ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjí‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M~hjé‘ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj(’h]”hŒatomic_long_t *v”…”�”}”(hj*’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj&’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhj"’ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjA’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j=’h´Mhj>’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj"’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j=’h´Mhjæ‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÊ‘ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjc’h]”hŒ Description”…”�”}”(hje’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M�hjÊ‘ubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjy’h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy’ubhŒ to (”…”�”}”(hjy’h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj“’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy’ubhŒ + ”…”�”}”(hjy’h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¥’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy’ubhŒ) with relaxed ordering.”…”�”}”(hjy’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M€hjÊ‘ubjM)�”}”(hŒQSafe to use in noinstr code; prefer atomic_long_add_negative_relaxed() elsewhere.”h]”hŒQSafe to use in noinstr code; prefer atomic_long_add_negative_relaxed() elsewhere.”…”�”}”(hj¾’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M‚hjÊ‘ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÏ’h]”hŒReturn”…”�”}”(hjÑ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M„hjÊ‘ubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjé’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjå’ubhŒ if the resulting value of ”…”�”}”(hjå’h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjû’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjå’ubhŒ is negative, ”…”�”}”(hjå’h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjå’ubhŒ otherwise.”…”�”}”(hjå’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M…hjÊ‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ-raw_atomic_long_fetch_add_unless (C function)”Œ"c.raw_atomic_long_fetch_add_unless”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒHlong raw_atomic_long_fetch_add_unless (atomic_long_t *v, long a, long u)”h]”hù)�”}”(hŒGlong raw_atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjF“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjB“h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU“h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjB“h²hh³jT“h´M’ubhÿ)�”}”(hŒ raw_atomic_long_fetch_add_unless”h]”j)�”}”(hŒ raw_atomic_long_fetch_add_unless”h]”hŒ raw_atomic_long_fetch_add_unless”…”�”}”(hjg“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjc“ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjB“h²hh³jT“h´M’ubj4)�”}”(hŒ"(atomic_long_t *v, long a, long u)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj†“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒ“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jˆ“Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsji“sbŒ"c.raw_atomic_long_fetch_add_unless”†”asbuh1hhj“ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦“h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj´“h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj“ubj)�”}”(hjph]”hŒv”…”�”}”(hjÁ“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj{“ubj:)�”}”(hŒlong a”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÙ“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÕ“ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç“h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÕ“ubj)�”}”(hj¯Ãh]”hŒa”…”�”}”(hjõ“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÕ“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj{“ubj:)�”}”(hŒlong u”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj ”ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ”ubj)�”}”(hj÷lh]”hŒu”…”�”}”(hj)”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj{“ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjB“h²hh³jT“h´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj>“h²hh³jT“h´M’ubah}”(h]”j9“ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jT“h´M’hj;“h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hjR”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M’hjO”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj;“h²hh³jT“h´M’ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjj”jHjj”jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX«**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long a`` long value to add ``long u`` long value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_fetch_add_unless() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjt”h]”hŒ Parameters”…”�”}”(hjv”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjr”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M–hjn”ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj“”h]”hŒatomic_long_t *v”…”�”}”(hj•”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M“hj�”ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj¬”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``long a`` long value to add ”h]”(j¯)�”}”(hŒ ``long a``”h]”jS)�”}”(hjÌ”h]”hŒlong a”…”�”}”(hjΔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÊ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M”hjÆ”ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjå”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``long u`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long u``”h]”jS)�”}”(hj•h]”hŒlong u”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M•hjÿ”ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjn”ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj@•h]”hŒ Description”…”�”}”(hjB•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M—hjn”ubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjV•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj^•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV•ubhŒ != ”…”�”}”(hjV•h²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hjp•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV•ubhŒ), atomically updates ”…”�”}”(hjV•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‚•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV•ubhŒ to (”…”�”}”(hjV•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj”•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV•ubhŒ + ”…”�”}”(hjV•h²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hj¦•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV•ubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjV•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¸•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV•ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjV•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M–hjn”ubjM)�”}”(hŒMSafe to use in noinstr code; prefer atomic_long_fetch_add_unless() elsewhere.”h]”hŒMSafe to use in noinstr code; prefer atomic_long_fetch_add_unless() elsewhere.”…”�”}”(hjÑ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M™hjn”ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjâ•h]”hŒReturn”…”�”}”(hjä•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjà•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M›hjn”ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjø•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjø•ubhŒ.”…”�”}”(hjø•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mœhjn”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'raw_atomic_long_add_unless (C function)”Œc.raw_atomic_long_add_unless”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBbool raw_atomic_long_add_unless (atomic_long_t *v, long a, long u)”h]”hù)�”}”(hŒAbool raw_atomic_long_add_unless(atomic_long_t *v, long a, long u)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj9–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj5–h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5–h²hh³jF–h´M©ubhÿ)�”}”(hŒraw_atomic_long_add_unless”h]”j)�”}”(hŒraw_atomic_long_add_unless”h]”hŒraw_atomic_long_add_unless”…”�”}”(hjY–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjU–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj5–h²hh³jF–h´M©ubj4)�”}”(hŒ"(atomic_long_t *v, long a, long u)”h]”(j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjx–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhju–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jz–Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj[–sbŒc.raw_atomic_long_add_unless”†”asbuh1hhjq–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjq–ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¦–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjq–ubj)�”}”(hjph]”hŒv”…”�”}”(hj³–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjm–ubj:)�”}”(hŒlong a”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjË–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÇ–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÇ–ubj)�”}”(hj¯Ãh]”hŒa”…”�”}”(hjç–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇ–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjm–ubj:)�”}”(hŒlong u”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÿ–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjû–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj —h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjû–ubj)�”}”(hj÷lh]”hŒu”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjû–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjm–ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj5–h²hh³jF–h´M©ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj1–h²hh³jF–h´M©ubah}”(h]”j,–ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jF–h´M©hj.–h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hjD—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M©hjA—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj.–h²hh³jF–h´M©ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj\—jHj\—jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX¼**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long a`` long value to add ``long u`` long value to compare with **Description** If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_add_unless() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjf—h]”hŒ Parameters”…”�”}”(hjh—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjd—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M­hj`—ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj…—h]”hŒatomic_long_t *v”…”�”}”(hj‡—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mªhj—ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjž—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``long a`` long value to add ”h]”(j¯)�”}”(hŒ ``long a``”h]”jS)�”}”(hj¾—h]”hŒlong a”…”�”}”(hjÀ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¼—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M«hj¸—ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hj×—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ&``long u`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long u``”h]”jS)�”}”(hj÷—h]”hŒlong u”…”�”}”(hjù—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjõ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¬hjñ—ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj`—ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj2˜h]”hŒ Description”…”�”}”(hj4˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M®hj`—ubjM)�”}”(hŒ—If (**v** != **u**), atomically updates **v** to (**v** + **a**) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hjH˜h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjP˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjH˜ubhŒ != ”…”�”}”(hjH˜h²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hjb˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjH˜ubhŒ), atomically updates ”…”�”}”(hjH˜h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjt˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjH˜ubhŒ to (”…”�”}”(hjH˜h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj†˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjH˜ubhŒ + ”…”�”}”(hjH˜h²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hj˜˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjH˜ubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjH˜h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjª˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjH˜ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjH˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M­hj`—ubjM)�”}”(hŒGSafe to use in noinstr code; prefer atomic_long_add_unless() elsewhere.”h]”hŒGSafe to use in noinstr code; prefer atomic_long_add_unless() elsewhere.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M°hj`—ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÔ˜h]”hŒReturn”…”�”}”(hjÖ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÒ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M²hj`—ubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjî˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjê˜ubhŒ if ”…”�”}”(hjê˜h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjê˜ubhŒ was updated, ”…”�”}”(hjê˜h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjê˜ubhŒ otherwise.”…”�”}”(hjê˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M³hj`—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)raw_atomic_long_inc_not_zero (C function)”Œc.raw_atomic_long_inc_not_zero”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4bool raw_atomic_long_inc_not_zero (atomic_long_t *v)”h]”hù)�”}”(hŒ3bool raw_atomic_long_inc_not_zero(atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjK™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjG™h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjG™h²hh³jX™h´MÀubhÿ)�”}”(hŒraw_atomic_long_inc_not_zero”h]”j)�”}”(hŒraw_atomic_long_inc_not_zero”h]”hŒraw_atomic_long_inc_not_zero”…”�”}”(hjk™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg™ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjG™h²hh³jX™h´MÀubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjŠ™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒ™Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjm™sbŒc.raw_atomic_long_inc_not_zero”†”asbuh1hhjƒ™ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjƒ™ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¸™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjƒ™ubj)�”}”(hjph]”hŒv”…”�”}”(hjÅ™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒ™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj™ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjG™h²hh³jX™h´MÀubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjC™h²hh³jX™h´MÀubah}”(h]”j>™ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jX™h´MÀhj@™h²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic increment unless zero with full ordering”h]”hŒ/atomic increment unless zero with full ordering”…”�”}”(hjî™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÀhjë™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj@™h²hh³jX™h´MÀubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjšjHjšjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXm**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_inc_not_zero() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÄhj šubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj/šh]”hŒatomic_long_t *v”…”�”}”(hj1šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj-šubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÁhj)šubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjHšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jDšh´MÁhjEšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj)šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jDšh´MÁhj&šubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj šubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjjšh]”hŒ Description”…”�”}”(hjlšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhšubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÃhj šubjM)�”}”(hŒ�If (**v** != 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj€šh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjˆšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€šubhŒ != 0), atomically updates ”…”�”}”(hj€šh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjššh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€šubhŒ to (”…”�”}”(hj€šh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¬šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€šubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hj€šh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¾šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€šubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj€šh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÂhj šubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_long_inc_not_zero() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_long_inc_not_zero() elsewhere.”…”�”}”(hjךh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÅhj šubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjèšh]”hŒReturn”…”�”}”(hjêšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjæšubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÇhj šubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþšubhŒ if ”…”�”}”(hjþšh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþšubhŒ was updated, ”…”�”}”(hjþšh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj&›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþšubhŒ otherwise.”…”�”}”(hjþšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÈhj šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ0raw_atomic_long_inc_unless_negative (C function)”Œ%c.raw_atomic_long_inc_unless_negative”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;bool raw_atomic_long_inc_unless_negative (atomic_long_t *v)”h]”hù)�”}”(hŒ:bool raw_atomic_long_inc_unless_negative(atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj_›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj[›h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[›h²hh³jl›h´MÕubhÿ)�”}”(hŒ#raw_atomic_long_inc_unless_negative”h]”j)�”}”(hŒ#raw_atomic_long_inc_unless_negative”h]”hŒ#raw_atomic_long_inc_unless_negative”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{›ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj[›h²hh³jl›h´MÕubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjž›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj››ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j ›Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj�›sbŒ%c.raw_atomic_long_inc_unless_negative”†”asbuh1hhj—›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj—›ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÌ›h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj—›ubj)�”}”(hjph]”hŒv”…”�”}”(hjÙ›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj“›ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj[›h²hh³jl›h´MÕubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjW›h²hh³jl›h´MÕubah}”(h]”jR›ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jl›h´MÕhjT›h²hubj4)�”}”(hhh]”jM•)�”}”(hŒ3atomic increment unless negative with full ordering”h]”hŒ3atomic increment unless negative with full ordering”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÕhjÿ›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjT›h²hh³jl›h´MÕubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjœjHjœjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXt**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_inc_unless_negative() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÙhjœubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjCœh]”hŒatomic_long_t *v”…”�”}”(hjEœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAœubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÖhj=œubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj\œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jXœh´MÖhjYœubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jXœh´MÖhj:œubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjœubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MØhjœubjM)�”}”(hŒ�If (**v** >= 0), atomically updates **v** to (**v** + 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj”œh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjœœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”œubhŒ >= 0), atomically updates ”…”�”}”(hj”œh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj®œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”œubhŒ to (”…”�”}”(hj”œh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÀœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”œubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hj”œh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÒœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”œubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj”œh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M×hjœubjM)�”}”(hŒPSafe to use in noinstr code; prefer atomic_long_inc_unless_negative() elsewhere.”h]”hŒPSafe to use in noinstr code; prefer atomic_long_inc_unless_negative() elsewhere.”…”�”}”(hjëœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÚhjœubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjüœh]”hŒReturn”…”�”}”(hjþœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjúœubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÜhjœubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ if ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj(�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ was updated, ”…”�”}”(hj�h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj:�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ otherwise.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÝhjœubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ0raw_atomic_long_dec_unless_positive (C function)”Œ%c.raw_atomic_long_dec_unless_positive”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ;bool raw_atomic_long_dec_unless_positive (atomic_long_t *v)”h]”hù)�”}”(hŒ:bool raw_atomic_long_dec_unless_positive(atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjs�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjo�h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MêubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjo�h²hh³j€�h´Mêubhÿ)�”}”(hŒ#raw_atomic_long_dec_unless_positive”h]”j)�”}”(hŒ#raw_atomic_long_dec_unless_positive”h]”hŒ#raw_atomic_long_dec_unless_positive”…”�”}”(hj“�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj��ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjo�h²hh³j€�h´Mêubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j´�Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj•�sbŒ%c.raw_atomic_long_dec_unless_positive”†”asbuh1hhj«�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj«�ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjà�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj«�ubj)�”}”(hjph]”hŒv”…”�”}”(hjí�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj«�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj§�ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjo�h²hh³j€�h´Mêubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjk�h²hh³j€�h´Mêubah}”(h]”jf�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j€�h´Mêhjh�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic decrement unless positive with full ordering”h]”hŒ3atomic decrement unless positive with full ordering”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mêhjžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh�h²hh³j€�h´Mêubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj.žjHj.žjI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hXt**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** If (**v** <= 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_dec_unless_positive() elsewhere. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj8žh]”hŒ Parameters”…”�”}”(hj:žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6žubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mîhj2žubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjWžh]”hŒatomic_long_t *v”…”�”}”(hjYžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjUžubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MëhjQžubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjpžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jlžh´Mëhjmžubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jlžh´MëhjNžubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj2žubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Míhj2žubjM)�”}”(hŒ�If (**v** <= 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj¨žh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj°žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨žubhŒ <= 0), atomically updates ”…”�”}”(hj¨žh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨žubhŒ to (”…”�”}”(hj¨žh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÔžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨žubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hj¨žh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjæžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨žubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj¨žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mìhj2žubjM)�”}”(hŒPSafe to use in noinstr code; prefer atomic_long_dec_unless_positive() elsewhere.”h]”hŒPSafe to use in noinstr code; prefer atomic_long_dec_unless_positive() elsewhere.”…”�”}”(hjÿžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mïhj2žubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjŸh]”hŒReturn”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mñhj2žubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj*Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&ŸubhŒ if ”…”�”}”(hj&Ÿh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj<Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&ŸubhŒ was updated, ”…”�”}”(hj&Ÿh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjNŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&ŸubhŒ otherwise.”…”�”}”(hj&Ÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mòhj2žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,raw_atomic_long_dec_if_positive (C function)”Œ!c.raw_atomic_long_dec_if_positive”hNt”auh1hÜhj®h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7long raw_atomic_long_dec_if_positive (atomic_long_t *v)”h]”hù)�”}”(hŒ6long raw_atomic_long_dec_if_positive(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj‡Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjƒŸh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjƒŸh²hh³j•Ÿh´Mÿubhÿ)�”}”(hŒraw_atomic_long_dec_if_positive”h]”j)�”}”(hŒraw_atomic_long_dec_if_positive”h]”hŒraw_atomic_long_dec_if_positive”…”�”}”(hj¨Ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤Ÿubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjƒŸh²hh³j•Ÿh´Mÿubj4)�”}”(hŒ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjÇŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÄŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÉŸŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjªŸsbŒ!c.raw_atomic_long_dec_if_positive”†”asbuh1hhjÀŸubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçŸh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÀŸubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjõŸh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÀŸubj)�”}”(hjph]”hŒv”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¼Ÿubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjƒŸh²hh³j•Ÿh´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŸh²hh³j•Ÿh´Mÿubah}”(h]”jzŸah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j•Ÿh´Mÿhj|Ÿh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic decrement if positive with full ordering”h]”hŒ/atomic decrement if positive with full ordering”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mÿhj( h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj|Ÿh²hh³j•Ÿh´Mÿubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjC jHjC jI‰jJ‰jK‰uh1híh²hhj®h³Nh´Nubj„)�”}”(hX‚**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t **Description** If (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_dec_if_positive() elsewhere. **Return** The old value of (**v** - 1), regardless of whether **v** was updated.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjM h]”hŒ Parameters”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjG ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjl h]”hŒatomic_long_t *v”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhjf ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j� h´Mhj‚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjf ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j� h´Mhjc ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjG ubjM)�”}”(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&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjG ubjM)�”}”(hŒŽIf (**v** > 0), atomically updates **v** to (**v** - 1) with full ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(hj½ h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj½ ubhŒ > 0), atomically updates ”…”�”}”(hj½ h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj½ ubhŒ to (”…”�”}”(hj½ h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj½ ubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hj½ h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj½ ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj½ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjG ubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic_long_dec_if_positive() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic_long_dec_if_positive() elsewhere.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjG ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj%¡h]”hŒReturn”…”�”}”(hj'¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjG ubjM)�”}”(hŒFThe old value of (**v** - 1), regardless of whether **v** was updated.”h]”(hŒThe old value of (”…”�”}”(hj;¡h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjC¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;¡ubhŒ - 1), regardless of whether ”…”�”}”(hj;¡h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjU¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;¡ubhŒ was updated.”…”�”}”(hj;¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjG ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj®h²hh³Nh´Nubeh}”(h]”Œatomics”ah ]”h"]”Œatomics”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kaubh¶)�”}”(hhh]”(h»)�”}”(hŒKernel objects manipulation”h]”hŒKernel objects manipulation”…”�”}”(hj€¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj}¡h²hh³hÊh´KmubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_get_path (C function)”Œc.kobject_get_path”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDchar * kobject_get_path (const struct kobject *kobj, gfp_t gfp_mask)”h]”hù)�”}”(hŒBchar *kobject_get_path(const struct kobject *kobj, gfp_t gfp_mask)”h]”(jü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj§¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj£¡h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´K’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj£¡h²hh³jµ¡h´K’ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÄ¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj£¡h²hh³jµ¡h´K’ubhÿ)�”}”(hŒkobject_get_path”h]”j)�”}”(hŒkobject_get_path”h]”hŒkobject_get_path”…”�”}”(hjÕ¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑ¡ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj£¡h²hh³jµ¡h´K’ubj4)�”}”(hŒ,(const struct kobject *kobj, gfp_t gfp_mask)”h]”(j:)�”}”(hŒconst struct kobject *kobj”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjñ¡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjí¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjí¡ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjí¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjí¡ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj*¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j,¢Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjסsbŒc.kobject_get_path”†”asbuh1hhjí¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjí¡ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjX¢h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjí¡ubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hje¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjí¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjé¡ubj:)�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj�¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jƒ¢Œmodname”NŒ classname”Njwjz)�”}”j}]”jF¢Œc.kobject_get_path”†”asbuh1hhjz¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjz¢ubj)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hj­¢h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjé¡ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj£¡h²hh³jµ¡h´K’ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjŸ¡h²hh³jµ¡h´K’ubah}”(h]”jš¡ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jµ¡h´K’hjœ¡h²hubj4)�”}”(hhh]”jM)�”}”(hŒ2Allocate memory and fill in the path for **kobj**.”h]”(hŒ)Allocate memory and fill in the path for ”…”�”}”(hj×¢h²hh³Nh´NubjŽ)�”}”(hŒ**kobj**”h]”hŒkobj”…”�”}”(hjߢh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×¢ubhŒ.”…”�”}”(hj×¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´K’hjÔ¢h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjœ¡h²hh³jµ¡h´K’ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj£jHj£jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hŒî**Parameters** ``const struct kobject *kobj`` kobject in question, with which to build the path ``gfp_t gfp_mask`` the allocation type used to allocate the path **Return** The newly allocated memory, caller must free with kfree().”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´K–hj£ubj¤)�”}”(hhh]”(j©)�”}”(hŒQ``const struct kobject *kobj`` kobject in question, with which to build the path ”h]”(j¯)�”}”(hŒ``const struct kobject *kobj``”h]”jS)�”}”(hj*£h]”hŒconst struct kobject *kobj”…”�”}”(hj,£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj(£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´K“hj$£ubjÉ)�”}”(hhh]”jM)�”}”(hŒ1kobject in question, with which to build the path”h]”hŒ1kobject in question, with which to build the path”…”�”}”(hjC£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒA``gfp_t gfp_mask`` the allocation type used to allocate the path ”h]”(j¯)�”}”(hŒ``gfp_t gfp_mask``”h]”jS)�”}”(hjc£h]”hŒgfp_t gfp_mask”…”�”}”(hje£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhja£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´K”hj]£ubjÉ)�”}”(hhh]”jM)�”}”(hŒ-the allocation type used to allocate the path”h]”hŒ-the allocation type used to allocate the path”…”�”}”(hj|£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jx£h´K”hjy£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jx£h´K”hj!£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj£ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjž£h]”hŒReturn”…”�”}”(hj £h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´K–hj£ubjM)�”}”(hŒ:The newly allocated memory, caller must free with kfree().”h]”hŒ:The newly allocated memory, caller must free with kfree().”…”�”}”(hj´£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´K–hj£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_set_name (C function)”Œc.kobject_set_name”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAint kobject_set_name (struct kobject *kobj, const char *fmt, ...)”h]”hù)�”}”(hŒ@int kobject_set_name(struct kobject *kobj, const char *fmt, ...)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjã£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjߣh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjߣh²hh³jñ£h´M,ubhÿ)�”}”(hŒkobject_set_name”h]”j)�”}”(hŒkobject_set_name”h]”hŒkobject_set_name”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjߣh²hh³jñ£h´M,ubj4)�”}”(hŒ,(struct kobject *kobj, const char *fmt, ...)”h]”(j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj ¤h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj>¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j@¤Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¤sbŒc.kobject_set_name”†”asbuh1hhj¤ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¤ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjl¤h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¤ubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjy¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¤ubj:)�”}”(hŒconst char *fmt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj’¤h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjޤubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjޤubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj­¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjޤubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjޤubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjɤh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjޤubj)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hjÖ¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjޤubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¤ubj:)�”}”(hŒ...”h]”j”)�”}”(hj›h]”hŒ...”…”�”}”(hjï¤h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjë¤ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjߣh²hh³jñ£h´M,ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÛ£h²hh³jñ£h´M,ubah}”(h]”jÖ£ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jñ£h´M,hjØ£h²hubj4)�”}”(hhh]”jM)�”}”(hŒSet the name of a kobject.”h]”hŒSet the name of a kobject.”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M,hj¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjØ£h²hh³jñ£h´M,ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj0¥jHj0¥jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hX\**Parameters** ``struct kobject *kobj`` struct kobject to set the name of ``const char *fmt`` format string used to build the name ``...`` variable arguments **Description** This sets the name of the kobject. If you have already added the kobject to the system, you must call kobject_rename() in order to change the name of the kobject.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj:¥h]”hŒ Parameters”…”�”}”(hj<¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M0hj4¥ubj¤)�”}”(hhh]”(j©)�”}”(hŒ;``struct kobject *kobj`` struct kobject to set the name of ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hjY¥h]”hŒstruct kobject *kobj”…”�”}”(hj[¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjW¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M-hjS¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒ!struct kobject to set the name of”h]”hŒ!struct kobject to set the name of”…”�”}”(hjr¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jn¥h´M-hjo¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjS¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jn¥h´M-hjP¥ubj©)�”}”(hŒ9``const char *fmt`` format string used to build the name ”h]”(j¯)�”}”(hŒ``const char *fmt``”h]”jS)�”}”(hj’¥h]”hŒconst char *fmt”…”�”}”(hj”¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M.hjŒ¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒ$format string used to build the name”h]”hŒ$format string used to build the name”…”�”}”(hj«¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j§¥h´M.hj¨¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŒ¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j§¥h´M.hjP¥ubj©)�”}”(hŒ``...`` variable arguments ”h]”(j¯)�”}”(hŒ``...``”h]”jS)�”}”(hjË¥h]”hŒ...”…”�”}”(hjÍ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÉ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´KhjÅ¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjä¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jà¥h´Khjá¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÅ¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jà¥h´KhjP¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj4¥ubjM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Khj4¥ubjM)�”}”(hŒ£This sets the name of the kobject. If you have already added the kobject to the system, you must call kobject_rename() in order to change the name of the kobject.”h]”hŒ£This sets the name of the kobject. If you have already added the kobject to the system, you must call kobject_rename() in order to change the name of the kobject.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M/hj4¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_init (C function)”Œc.kobject_init”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒGvoid kobject_init (struct kobject *kobj, const struct kobj_type *ktype)”h]”hù)�”}”(hŒFvoid kobject_init(struct kobject *kobj, const struct kobj_type *ktype)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjK¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjG¦h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MBubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjG¦h²hh³jY¦h´MBubhÿ)�”}”(hŒ kobject_init”h]”j)�”}”(hŒ kobject_init”h]”hŒ kobject_init”…”�”}”(hjl¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh¦ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjG¦h²hh³jY¦h´MBubj4)�”}”(hŒ5(struct kobject *kobj, const struct kobj_type *ktype)”h]”(j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjˆ¦h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj„¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„¦ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj¦¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¨¦Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjn¦sbŒc.kobject_init”†”asbuh1hhj„¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƦh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„¦ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÔ¦h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj„¦ubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjá¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj€¦ubj:)�”}”(hŒconst struct kobj_type *ktype”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjú¦h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjö¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjö¦ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjö¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjö¦ubh)�”}”(hhh]”j)�”}”(hŒ kobj_type”h]”hŒ kobj_type”…”�”}”(hj3§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j5§Œmodname”NŒ classname”Njwjz)�”}”j}]”j¦Œc.kobject_init”†”asbuh1hhjö¦ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjö¦ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj_§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjö¦ubj)�”}”(hŒktype”h]”hŒktype”…”�”}”(hjl§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjö¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj€¦ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjG¦h²hh³jY¦h´MBubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjC¦h²hh³jY¦h´MBubah}”(h]”j>¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jY¦h´MBhj@¦h²hubj4)�”}”(hhh]”jM)�”}”(hŒInitialize a kobject structure.”h]”hŒInitialize a kobject structure.”…”�”}”(hj–§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MBhj“§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj@¦h²hh³jY¦h´MBubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj®§jHj®§jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hXÍ**Parameters** ``struct kobject *kobj`` pointer to the kobject to initialize ``const struct kobj_type *ktype`` pointer to the ktype for this kobject. **Description** This function will properly initialize a kobject such that it can then be passed to the kobject_add() call. After this function is called, the kobject MUST be cleaned up by a call to kobject_put(), not by a call to kfree directly to ensure that all of the memory is cleaned up properly.”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MFhj²§ubj¤)�”}”(hhh]”(j©)�”}”(hŒ>``struct kobject *kobj`` pointer to the kobject to initialize ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hj×§h]”hŒstruct kobject *kobj”…”�”}”(hjÙ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÕ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MChjѧubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to the kobject to initialize”h]”hŒ$pointer to the kobject to initialize”…”�”}”(hjð§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jì§h´MChjí§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjѧubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jì§h´MChjΧubj©)�”}”(hŒI``const struct kobj_type *ktype`` pointer to the ktype for this kobject. ”h]”(j¯)�”}”(hŒ!``const struct kobj_type *ktype``”h]”jS)�”}”(hj¨h]”hŒconst struct kobj_type *ktype”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MDhj ¨ubjÉ)�”}”(hhh]”jM)�”}”(hŒ&pointer to the ktype for this kobject.”h]”hŒ&pointer to the ktype for this kobject.”…”�”}”(hj)¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j%¨h´MDhj&¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j%¨h´MDhjΧubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj²§ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjK¨h]”hŒ Description”…”�”}”(hjM¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MFhj²§ubjM)�”}”(hŒkThis function will properly initialize a kobject such that it can then be passed to the kobject_add() call.”h]”hŒkThis function will properly initialize a kobject such that it can then be passed to the kobject_add() call.”…”�”}”(hja¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MEhj²§ubjM)�”}”(hŒ²After this function is called, the kobject MUST be cleaned up by a call to kobject_put(), not by a call to kfree directly to ensure that all of the memory is cleaned up properly.”h]”hŒ²After this function is called, the kobject MUST be cleaned up by a call to kobject_put(), not by a call to kfree directly to ensure that all of the memory is cleaned up properly.”…”�”}”(hjp¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MHhj²§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_add (C function)”Œ c.kobject_add”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒTint kobject_add (struct kobject *kobj, struct kobject *parent, const char *fmt, ...)”h]”hù)�”}”(hŒSint kobject_add(struct kobject *kobj, struct kobject *parent, const char *fmt, ...)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸ¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj›¨h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MzubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›¨h²hh³j­¨h´Mzubhÿ)�”}”(hŒ kobject_add”h]”j)�”}”(hŒ kobject_add”h]”hŒ kobject_add”…”�”}”(hjÀ¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼¨ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj›¨h²hh³j­¨h´Mzubj4)�”}”(hŒD(struct kobject *kobj, struct kobject *parent, const char *fmt, ...)”h]”(j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjܨh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjبubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjبubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjú¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jü¨Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¨sbŒ c.kobject_add”†”asbuh1hhjبubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjبubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj(©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjبubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj5©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjبubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÔ¨ubj:)�”}”(hŒstruct kobject *parent”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjN©h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjJ©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJ©ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjl©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhji©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jn©Œmodname”NŒ classname”Njwjz)�”}”j}]”j©Œ c.kobject_add”†”asbuh1hhjJ©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJ©ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj˜©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjJ©ubj)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj¥©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÔ¨ubj:)�”}”(hŒconst char *fmt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj¾©h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjº©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjº©ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÙ©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjº©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjº©ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjõ©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjº©ubj)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjº©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÔ¨ubj:)�”}”(hŒ...”h]”j”)�”}”(hj›h]”hŒ...”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjªubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÔ¨ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj›¨h²hh³j­¨h´Mzubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj—¨h²hh³j­¨h´Mzubah}”(h]”j’¨ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j­¨h´Mzhj”¨h²hubj4)�”}”(hhh]”jM)�”}”(hŒThe main kobject add function.”h]”hŒThe main kobject add function.”…”�”}”(hjDªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MzhjAªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj”¨h²hh³j­¨h´Mzubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj\ªjHj\ªjI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hXÉ**Parameters** ``struct kobject *kobj`` the kobject to add ``struct kobject *parent`` pointer to the parent of the kobject. ``const char *fmt`` format to name the kobject with. ``...`` variable arguments **Description** The kobject name is set and added to the kobject hierarchy in this function. If **parent** is set, then the parent of the **kobj** will be set to it. If **parent** is NULL, then the parent of the **kobj** will be set to the kobject associated with the kset assigned to this kobject. If no kset is assigned to the kobject, then the kobject will be located in the root of the sysfs tree. Note, no "add" uevent will be created with this call, the caller should set up all of the necessary sysfs files for the object and then call kobject_uevent() with the UEVENT_ADD parameter to ensure that userspace is properly notified of this kobject's creation. If this function returns success, kobject_put() must also be called in order to properly clean up the memory associated with the object. In short, once this function is called, kobject_put() MUST be called when the use of the object is finished in order to properly free everything. **Return** If this function returns an error, kobject_put() must be called to properly clean up the memory associated with the object. Under no instance should the kobject that is passed to this function be directly freed with a call to kfree(), that can leak memory.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjfªh]”hŒ Parameters”…”�”}”(hjhªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdªubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M~hj`ªubj¤)�”}”(hhh]”(j©)�”}”(hŒ,``struct kobject *kobj`` the kobject to add ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hj…ªh]”hŒstruct kobject *kobj”…”�”}”(hj‡ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒªubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M{hjªubjÉ)�”}”(hhh]”jM)�”}”(hŒthe kobject to add”h]”hŒthe kobject to add”…”�”}”(hjžªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒA``struct kobject *parent`` pointer to the parent of the kobject. ”h]”(j¯)�”}”(hŒ``struct kobject *parent``”h]”jS)�”}”(hj¾ªh]”hŒstruct kobject *parent”…”�”}”(hjÀªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¼ªubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M|hj¸ªubjÉ)�”}”(hhh]”jM)�”}”(hŒ%pointer to the parent of the kobject.”h]”hŒ%pointer to the parent of the kobject.”…”�”}”(hjתh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ5``const char *fmt`` format to name the kobject with. ”h]”(j¯)�”}”(hŒ``const char *fmt``”h]”jS)�”}”(hj÷ªh]”hŒconst char *fmt”…”�”}”(hjùªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjõªubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M}hjñªubjÉ)�”}”(hhh]”jM)�”}”(hŒ format to name the kobject with.”h]”hŒ format to name the kobject with.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``...`` variable arguments ”h]”(j¯)�”}”(hŒ``...``”h]”jS)�”}”(hj0«h]”hŒ...”…”�”}”(hj2«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj.«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Khj*«ubjÉ)�”}”(hhh]”jM)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjI«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jE«h´KhjF«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jE«h´Khj|ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj`ªubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjk«h]”hŒ Description”…”�”}”(hjm«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hji«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Khj`ªubjM)�”}”(hŒLThe kobject name is set and added to the kobject hierarchy in this function.”h]”hŒLThe kobject name is set and added to the kobject hierarchy in this function.”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M~hj`ªubjM)�”}”(hX5If **parent** is set, then the parent of the **kobj** will be set to it. If **parent** is NULL, then the parent of the **kobj** will be set to the kobject associated with the kset assigned to this kobject. If no kset is assigned to the kobject, then the kobject will be located in the root of the sysfs tree.”h]”(hŒIf ”…”�”}”(hj�«h²hh³Nh´NubjŽ)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hj˜«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�«ubhŒ is set, then the parent of the ”…”�”}”(hj�«h²hh³Nh´NubjŽ)�”}”(hŒ**kobj**”h]”hŒkobj”…”�”}”(hjª«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�«ubhŒ will be set to it. If ”…”�”}”(hj�«h²hh³Nh´NubjŽ)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hj¼«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�«ubhŒ! is NULL, then the parent of the ”…”�”}”(hj�«h²hh³Nh´NubjŽ)�”}”(hŒ**kobj**”h]”hŒkobj”…”�”}”(hjΫh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�«ubhŒ¶ will be set to the kobject associated with the kset assigned to this kobject. If no kset is assigned to the kobject, then the kobject will be located in the root of the sysfs tree.”…”�”}”(hj�«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M�hj`ªubjM)�”}”(hXNote, no "add" uevent will be created with this call, the caller should set up all of the necessary sysfs files for the object and then call kobject_uevent() with the UEVENT_ADD parameter to ensure that userspace is properly notified of this kobject's creation.”h]”hX Note, no “addâ€� uevent will be created with this call, the caller should set up all of the necessary sysfs files for the object and then call kobject_uevent() with the UEVENT_ADD parameter to ensure that userspace is properly notified of this kobject’s creation.”…”�”}”(hjç«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M‡hj`ªubji)�”}”(hXIf this function returns success, kobject_put() must also be called in order to properly clean up the memory associated with the object. In short, once this function is called, kobject_put() MUST be called when the use of the object is finished in order to properly free everything. ”h]”(jM)�”}”(hŒˆIf this function returns success, kobject_put() must also be called in order to properly clean up the memory associated with the object.”h]”hŒˆIf this function returns success, kobject_put() must also be called in order to properly clean up the memory associated with the object.”…”�”}”(hjú«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M�hjö«ubjM)�”}”(hŒ‘In short, once this function is called, kobject_put() MUST be called when the use of the object is finished in order to properly free everything.”h]”hŒ‘In short, once this function is called, kobject_put() MUST be called when the use of the object is finished in order to properly free everything.”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M�hjö«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j¬h´M�hj`ªubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj ¬h]”hŒReturn”…”�”}”(hj"¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M”hj`ªubjM)�”}”(hXIf this function returns an error, kobject_put() must be called to properly clean up the memory associated with the object. Under no instance should the kobject that is passed to this function be directly freed with a call to kfree(), that can leak memory.”h]”hXIf this function returns an error, kobject_put() must be called to properly clean up the memory associated with the object. Under no instance should the kobject that is passed to this function be directly freed with a call to kfree(), that can leak memory.”…”�”}”(hj6¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M�hj`ªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!kobject_init_and_add (C function)”Œc.kobject_init_and_add”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ|int kobject_init_and_add (struct kobject *kobj, const struct kobj_type *ktype, struct kobject *parent, const char *fmt, ...)”h]”hù)�”}”(hŒ{int kobject_init_and_add(struct kobject *kobj, const struct kobj_type *ktype, struct kobject *parent, const char *fmt, ...)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hje¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhja¬h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhja¬h²hh³js¬h´M²ubhÿ)�”}”(hŒkobject_init_and_add”h]”j)�”}”(hŒkobject_init_and_add”h]”hŒkobject_init_and_add”…”�”}”(hj†¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚¬ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhja¬h²hh³js¬h´M²ubj4)�”}”(hŒc(struct kobject *kobj, const struct kobj_type *ktype, struct kobject *parent, const char *fmt, ...)”h]”(j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¢¬h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjž¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjž¬ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjÀ¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¬Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjˆ¬sbŒc.kobject_init_and_add”†”asbuh1hhjž¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà¬h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjž¬ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjî¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjž¬ubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjû¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjž¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjš¬ubj:)�”}”(hŒconst struct kobj_type *ktype”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­ubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj/­h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­ubh)�”}”(hhh]”j)�”}”(hŒ kobj_type”h]”hŒ kobj_type”…”�”}”(hjM­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jO­Œmodname”NŒ classname”Njwjz)�”}”j}]”jܬŒc.kobject_init_and_add”†”asbuh1hhj­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjy­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj­ubj)�”}”(hŒktype”h]”hŒktype”…”�”}”(hj†­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjš¬ubj:)�”}”(hŒstruct kobject *parent”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjŸ­h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj›­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›­ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj½­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjº­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¿­Œmodname”NŒ classname”Njwjz)�”}”j}]”jܬŒc.kobject_init_and_add”†”asbuh1hhj›­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›­ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjé­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj›­ubj)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjö­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjš¬ubj:)�”}”(hŒconst char *fmt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj ®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ®ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj*®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj ®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8®h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ®ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjF®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ®ubj)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hjS®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjš¬ubj:)�”}”(hŒ...”h]”j”)�”}”(hj›h]”hŒ...”…”�”}”(hjl®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjh®ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjš¬ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hja¬h²hh³js¬h´M²ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj]¬h²hh³js¬h´M²ubah}”(h]”jX¬ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³js¬h´M²hjZ¬h²hubj4)�”}”(hhh]”jM)�”}”(hŒCInitialize a kobject structure and add it to the kobject hierarchy.”h]”hŒCInitialize a kobject structure and add it to the kobject hierarchy.”…”�”}”(hj•®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M²hj’®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjZ¬h²hh³js¬h´M²ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj­®jHj­®jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hXw**Parameters** ``struct kobject *kobj`` pointer to the kobject to initialize ``const struct kobj_type *ktype`` pointer to the ktype for this kobject. ``struct kobject *parent`` pointer to the parent of this kobject. ``const char *fmt`` the name of the kobject. ``...`` variable arguments **Description** This function combines the call to kobject_init() and kobject_add(). If this function returns an error, kobject_put() must be called to properly clean up the memory associated with the object. This is the same type of error handling after a call to kobject_add() and kobject lifetime rules are the same here.”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M¶hj±®ubj¤)�”}”(hhh]”(j©)�”}”(hŒ>``struct kobject *kobj`` pointer to the kobject to initialize ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hjÖ®h]”hŒstruct kobject *kobj”…”�”}”(hjØ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M´hjЮubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to the kobject to initialize”h]”hŒ$pointer to the kobject to initialize”…”�”}”(hjï®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒI``const struct kobj_type *ktype`` pointer to the ktype for this kobject. ”h]”(j¯)�”}”(hŒ!``const struct kobj_type *ktype``”h]”jS)�”}”(hj¯h]”hŒconst struct kobj_type *ktype”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mµhj ¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒ&pointer to the ktype for this kobject.”h]”hŒ&pointer to the ktype for this kobject.”…”�”}”(hj(¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒB``struct kobject *parent`` pointer to the parent of this kobject. ”h]”(j¯)�”}”(hŒ``struct kobject *parent``”h]”jS)�”}”(hjH¯h]”hŒstruct kobject *parent”…”�”}”(hjJ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjF¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M¶hjB¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒ&pointer to the parent of this kobject.”h]”hŒ&pointer to the parent of this kobject.”…”�”}”(hja¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j]¯h´M¶hj^¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjB¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j]¯h´M¶hjÍ®ubj©)�”}”(hŒ-``const char *fmt`` the name of the kobject. ”h]”(j¯)�”}”(hŒ``const char *fmt``”h]”jS)�”}”(hj�¯h]”hŒconst char *fmt”…”�”}”(hjƒ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M·hj{¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe name of the kobject.”h]”hŒthe name of the kobject.”…”�”}”(hjš¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``...`` variable arguments ”h]”(j¯)�”}”(hŒ``...``”h]”jS)�”}”(hjº¯h]”hŒ...”…”�”}”(hj¼¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¸¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Khj´¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjÓ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jϯh´KhjЯubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj´¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jϯh´KhjÍ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj±®ubjM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Khj±®ubjM)�”}”(hŒDThis function combines the call to kobject_init() and kobject_add().”h]”hŒDThis function combines the call to kobject_init() and kobject_add().”…”�”}”(hj °h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M¸hj±®ubjM)�”}”(hŒðIf this function returns an error, kobject_put() must be called to properly clean up the memory associated with the object. This is the same type of error handling after a call to kobject_add() and kobject lifetime rules are the same here.”h]”hŒðIf this function returns an error, kobject_put() must be called to properly clean up the memory associated with the object. This is the same type of error handling after a call to kobject_add() and kobject lifetime rules are the same here.”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mºhj±®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_rename (C function)”Œc.kobject_rename”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ?int kobject_rename (struct kobject *kobj, const char *new_name)”h]”hù)�”}”(hŒ>int kobject_rename(struct kobject *kobj, const char *new_name)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjI°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjE°h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÑubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjE°h²hh³jW°h´MÑubhÿ)�”}”(hŒkobject_rename”h]”j)�”}”(hŒkobject_rename”h]”hŒkobject_rename”…”�”}”(hjj°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf°ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjE°h²hh³jW°h´MÑubj4)�”}”(hŒ,(struct kobject *kobj, const char *new_name)”h]”(j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj†°h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‚°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚°ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj¤°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¦°Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjl°sbŒc.kobject_rename”†”asbuh1hhj‚°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjİh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‚°ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÒ°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‚°ubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjß°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj~°ubj:)�”}”(hŒconst char *new_name”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjø°h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjô°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”•}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjô°ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjô°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!±h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjô°ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj/±h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjô°ubj)�”}”(hŒnew_name”h]”hŒnew_name”…”�”}”(hj<±h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj~°ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjE°h²hh³jW°h´MÑubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjA°h²hh³jW°h´MÑubah}”(h]”j<°ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jW°h´MÑhj>°h²hubj4)�”}”(hhh]”jM)�”}”(hŒChange the name of an object.”h]”hŒChange the name of an object.”…”�”}”(hjf±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÑhjc±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj>°h²hh³jW°h´MÑubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj~±jHj~±jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hXP**Parameters** ``struct kobject *kobj`` object in question. ``const char *new_name`` object's new name **Description** It is the responsibility of the caller to provide mutual exclusion between two different calls of kobject_rename on the same kobject and to ensure that new_name is valid and won't conflict with other kobjects.”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÕhj‚±ubj¤)�”}”(hhh]”(j©)�”}”(hŒ-``struct kobject *kobj`` object in question. ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hj§±h]”hŒstruct kobject *kobj”…”�”}”(hj©±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¥±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÒhj¡±ubjÉ)�”}”(hhh]”jM)�”}”(hŒobject in question.”h]”hŒobject in question.”…”�”}”(hjÀ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ+``const char *new_name`` object's new name ”h]”(j¯)�”}”(hŒ``const char *new_name``”h]”jS)�”}”(hjà±h]”hŒconst char *new_name”…”�”}”(hjâ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÞ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÓhjÚ±ubjÉ)�”}”(hhh]”jM)�”}”(hŒobject's new name”h]”hŒobject’s new name”…”�”}”(hjù±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj‚±ubjM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÕhj‚±ubjM)�”}”(hŒÑIt is the responsibility of the caller to provide mutual exclusion between two different calls of kobject_rename on the same kobject and to ensure that new_name is valid and won't conflict with other kobjects.”h]”hŒÓIt is the responsibility of the caller to provide mutual exclusion between two different calls of kobject_rename on the same kobject and to ensure that new_name is valid and won’t conflict with other kobjects.”…”�”}”(hj1²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÔhj‚±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_move (C function)”Œc.kobject_move”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒCint kobject_move (struct kobject *kobj, struct kobject *new_parent)”h]”hù)�”}”(hŒBint kobject_move(struct kobject *kobj, struct kobject *new_parent)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj`²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj\²h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo²h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\²h²hh³jn²h´Mubhÿ)�”}”(hŒ kobject_move”h]”j)�”}”(hŒ kobject_move”h]”hŒ kobject_move”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}²ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj\²h²hh³jn²h´Mubj4)�”}”(hŒ2(struct kobject *kobj, struct kobject *new_parent)”h]”(j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª²h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™²ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj»²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j½²Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjƒ²sbŒc.kobject_move”†”asbuh1hhj™²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ²h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™²ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjé²h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj™²ubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjö²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj•²ubj:)�”}”(hŒstruct kobject *new_parent”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj ³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ³ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj-³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j/³Œmodname”NŒ classname”Njwjz)�”}”j}]”jײŒc.kobject_move”†”asbuh1hhj ³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ³ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjY³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ³ubj)�”}”(hŒ new_parent”h]”hŒ new_parent”…”�”}”(hjf³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj•²ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj\²h²hh³jn²h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjX²h²hh³jn²h´Mubah}”(h]”jS²ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jn²h´MhjU²h²hubj4)�”}”(hhh]”jM)�”}”(hŒMove object to another parent.”h]”hŒMove object to another parent.”…”�”}”(hj�³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mhj�³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjU²h²hh³jn²h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¨³jHj¨³jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hŒ‚**Parameters** ``struct kobject *kobj`` object in question. ``struct kobject *new_parent`` object's new parent (can be NULL)”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mhj¬³ubj¤)�”}”(hhh]”(j©)�”}”(hŒ-``struct kobject *kobj`` object in question. ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hjѳh]”hŒstruct kobject *kobj”…”�”}”(hjÓ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjϳubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mhj˳ubjÉ)�”}”(hhh]”jM)�”}”(hŒobject in question.”h]”hŒobject in question.”…”�”}”(hjê³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jæ³h´Mhjç³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj˳ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jæ³h´Mhjȳubj©)�”}”(hŒ@``struct kobject *new_parent`` object's new parent (can be NULL)”h]”(j¯)�”}”(hŒ``struct kobject *new_parent``”h]”jS)�”}”(hj ´h]”hŒstruct kobject *new_parent”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mhj´ubjÉ)�”}”(hhh]”jM)�”}”(hŒ!object's new parent (can be NULL)”h]”hŒ#object’s new parent (can be NULL)”…”�”}”(hj#´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mhj ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j´h´Mhjȳubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¬³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_del (C function)”Œ c.kobject_del”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'void kobject_del (struct kobject *kobj)”h]”hù)�”}”(hŒ&void kobject_del(struct kobject *kobj)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjd´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj`´h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MeubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs´h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj`´h²hh³jr´h´Meubhÿ)�”}”(hŒ kobject_del”h]”j)�”}”(hŒ kobject_del”h]”hŒ kobject_del”…”�”}”(hj…´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�´ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj`´h²hh³jr´h´Meubj4)�”}”(hŒ(struct kobject *kobj)”h]”j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¡´h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®´h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�´ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj¿´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÁ´Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj‡´sbŒ c.kobject_del”†”asbuh1hhj�´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß´h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�´ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjí´h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj�´ubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjú´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj™´ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj`´h²hh³jr´h´Meubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj\´h²hh³jr´h´Meubah}”(h]”jW´ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jr´h´MehjY´h²hubj4)�”}”(hhh]”jM)�”}”(hŒUnlink kobject from hierarchy.”h]”hŒUnlink kobject from hierarchy.”…”�”}”(hj$µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mehj!µh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjY´h²hh³jr´h´Meubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj<µjHj<µjI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hŒ©**Parameters** ``struct kobject *kobj`` object. **Description** This is the function that should be called to delete an object successfully added via kobject_add().”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjFµh]”hŒ Parameters”…”�”}”(hjHµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDµubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mihj@µubj¤)�”}”(hhh]”j©)�”}”(hŒ!``struct kobject *kobj`` object. ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hjeµh]”hŒstruct kobject *kobj”…”�”}”(hjgµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjcµubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mfhj_µubjÉ)�”}”(hhh]”jM)�”}”(hŒobject.”h]”hŒobject.”…”�”}”(hj~µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jzµh´Mfhj{µubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj_µubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jzµh´Mfhj\µubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj@µubjM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mhhj@µubjM)�”}”(hŒdThis is the function that should be called to delete an object successfully added via kobject_add().”h]”hŒdThis is the function that should be called to delete an object successfully added via kobject_add().”…”�”}”(hj¶µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mghj@µubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_get (C function)”Œ c.kobject_get”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3struct kobject * kobject_get (struct kobject *kobj)”h]”hù)�”}”(hŒ1struct kobject *kobject_get(struct kobject *kobj)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjåµh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjáµh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjáµh²hh³jòµh´Myubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¶Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒ kobject_get”sbŒ c.kobject_get”†”asbuh1hhjáµh²hh³jòµh´MyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%¶h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjáµh²hh³jòµh´Myubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj3¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjáµh²hh³jòµh´Myubhÿ)�”}”(hŒ kobject_get”h]”j)�”}”(hj"¶h]”hŒ kobject_get”…”�”}”(hjD¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@¶ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjáµh²hh³jòµh´Myubj4)�”}”(hŒ(struct kobject *kobj)”h]”j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj_¶h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj[¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl¶h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[¶ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj}¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¶Œmodname”NŒ classname”Njwjz)�”}”j}]”j ¶Œ c.kobject_get”†”asbuh1hhj[¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›¶h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[¶ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj©¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj[¶ubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj¶¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjW¶ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjáµh²hh³jòµh´Myubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjݵh²hh³jòµh´Myubah}”(h]”jصah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jòµh´MyhjÚµh²hubj4)�”}”(hhh]”jM)�”}”(hŒIncrement refcount for object.”h]”hŒIncrement refcount for object.”…”�”}”(hjà¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Myhjݶh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÚµh²hh³jòµh´Myubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjø¶jHjø¶jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hŒ2**Parameters** ``struct kobject *kobj`` object.”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M}hjü¶ubj¤)�”}”(hhh]”j©)�”}”(hŒ ``struct kobject *kobj`` object.”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hj!·h]”hŒstruct kobject *kobj”…”�”}”(hj#·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mhj·ubjÉ)�”}”(hhh]”jM)�”}”(hŒobject.”h]”hŒobject.”…”�”}”(hj:·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mzhj7·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6·h´Mhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjü¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_put (C function)”Œ c.kobject_put”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ'void kobject_put (struct kobject *kobj)”h]”hù)�”}”(hŒ&void kobject_put(struct kobject *kobj)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj{·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjw·h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjw·h²hh³j‰·h´MÕubhÿ)�”}”(hŒ kobject_put”h]”j)�”}”(hŒ kobject_put”h]”hŒ kobject_put”…”�”}”(hjœ·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜·ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjw·h²hh³j‰·h´MÕubj4)�”}”(hŒ(struct kobject *kobj)”h]”j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¸·h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj´·ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´·ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjÖ·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jØ·Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjž·sbŒ c.kobject_put”†”asbuh1hhj´·ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´·ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj´·ubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj°·ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjw·h²hh³j‰·h´MÕubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjs·h²hh³j‰·h´MÕubah}”(h]”jn·ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‰·h´MÕhjp·h²hubj4)�”}”(hhh]”jM)�”}”(hŒDecrement refcount for object.”h]”hŒDecrement refcount for object.”…”�”}”(hj;¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÕhj8¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjp·h²hh³j‰·h´MÕubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjS¸jHjS¸jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hŒ~**Parameters** ``struct kobject *kobj`` object. **Description** Decrement the refcount, and if 0, call kobject_cleanup().”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÙhjW¸ubj¤)�”}”(hhh]”j©)�”}”(hŒ!``struct kobject *kobj`` object. ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hj|¸h]”hŒstruct kobject *kobj”…”�”}”(hj~¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjz¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÖhjv¸ubjÉ)�”}”(hhh]”jM)�”}”(hŒobject.”h]”hŒobject.”…”�”}”(hj•¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‘¸h´MÖhj’¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjv¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‘¸h´MÖhjs¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjW¸ubjM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MØhjW¸ubjM)�”}”(hŒ9Decrement the refcount, and if 0, call kobject_cleanup().”h]”hŒ9Decrement the refcount, and if 0, call kobject_cleanup().”…”�”}”(hj͸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M×hjW¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#kobject_create_and_add (C function)”Œc.kobject_create_and_add”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒRstruct kobject * kobject_create_and_add (const char *name, struct kobject *parent)”h]”hù)�”}”(hŒPstruct kobject *kobject_create_and_add(const char *name, struct kobject *parent)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjü¸h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjø¸h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjø¸h²hh³j ¹h´M ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¹Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒkobject_create_and_add”sbŒc.kobject_create_and_add”†”asbuh1hhjø¸h²hh³j ¹h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjø¸h²hh³j ¹h´M ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjJ¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjø¸h²hh³j ¹h´M ubhÿ)�”}”(hŒkobject_create_and_add”h]”j)�”}”(hj9¹h]”hŒkobject_create_and_add”…”�”}”(hj[¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW¹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjø¸h²hh³j ¹h´M ubj4)�”}”(hŒ*(const char *name, struct kobject *parent)”h]”(j:)�”}”(hŒconst char *name”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjv¹h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjr¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjr¹ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj‘¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjr¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjr¹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj­¹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjr¹ubj)�”}”(hŒname”h]”hŒname”…”�”}”(hjº¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjn¹ubj:)�”}”(hŒstruct kobject *parent”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÓ¹h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjϹubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjϹubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjñ¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jó¹Œmodname”NŒ classname”Njwjz)�”}”j}]”j7¹Œc.kobject_create_and_add”†”asbuh1hhjϹubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjϹubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjϹubj)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj*ºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjϹubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjn¹ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjø¸h²hh³j ¹h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjô¸h²hh³j ¹h´M ubah}”(h]”jï¸ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j ¹h´M hjñ¸h²hubj4)�”}”(hhh]”jM)�”}”(hŒ?Create a struct kobject dynamically and register it with sysfs.”h]”hŒ?Create a struct kobject dynamically and register it with sysfs.”…”�”}”(hjTºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M hjQºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjñ¸h²hh³j ¹h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjlºjHjlºjI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hX½**Parameters** ``const char *name`` the name for the kobject ``struct kobject *parent`` the parent kobject of this kobject, if any. **Description** This function creates a kobject structure dynamically and registers it with sysfs. When you are finished with this structure, call kobject_put() and the structure will be dynamically freed when it is no longer being used. If the kobject was not able to be created, NULL will be returned.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjvºh]”hŒ Parameters”…”�”}”(hjxºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjtºubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M hjpºubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``const char *name`` the name for the kobject ”h]”(j¯)�”}”(hŒ``const char *name``”h]”jS)�”}”(hj•ºh]”hŒconst char *name”…”�”}”(hj—ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj“ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M hj�ºubjÉ)�”}”(hhh]”jM)�”}”(hŒthe name for the kobject”h]”hŒthe name for the kobject”…”�”}”(hj®ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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``struct kobject *parent`` the parent kobject of this kobject, if any. ”h]”(j¯)�”}”(hŒ``struct kobject *parent``”h]”jS)�”}”(hjκh]”hŒstruct kobject *parent”…”�”}”(hjкh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj̺ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M hjȺubjÉ)�”}”(hhh]”jM)�”}”(hŒ+the parent kobject of this kobject, if any.”h]”hŒ+the parent kobject of this kobject, if any.”…”�”}”(hjçºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjpºubjM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MhjpºubjM)�”}”(hŒÞThis function creates a kobject structure dynamically and registers it with sysfs. When you are finished with this structure, call kobject_put() and the structure will be dynamically freed when it is no longer being used.”h]”hŒÞThis function creates a kobject structure dynamically and registers it with sysfs. When you are finished with this structure, call kobject_put() and the structure will be dynamically freed when it is no longer being used.”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M hjpºubjM)�”}”(hŒAIf the kobject was not able to be created, NULL will be returned.”h]”hŒAIf the kobject was not able to be created, NULL will be returned.”…”�”}”(hj.»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mhjpºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkset_register (C function)”Œc.kset_register”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ"int kset_register (struct kset *k)”h]”hù)�”}”(hŒ!int kset_register(struct kset *k)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj]»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjY»h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjY»h²hh³jk»h´MWubhÿ)�”}”(hŒ kset_register”h]”j)�”}”(hŒ kset_register”h]”hŒ kset_register”…”�”}”(hj~»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz»ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjY»h²hh³jk»h´MWubj4)�”}”(hŒ(struct kset *k)”h]”j:)�”}”(hŒstruct kset *k”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjš»h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj–»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj–»ubh)�”}”(hhh]”j)�”}”(hŒkset”h]”hŒkset”…”�”}”(hj¸»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµ»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jº»Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj€»sbŒc.kset_register”†”asbuh1hhj–»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj–»ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjæ»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj–»ubj)�”}”(hjKh]”hŒk”…”�”}”(hjó»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj’»ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjY»h²hh³jk»h´MWubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjU»h²hh³jk»h´MWubah}”(h]”jP»ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jk»h´MWhjR»h²hubj4)�”}”(hhh]”jM)�”}”(hŒInitialize and add a kset.”h]”hŒInitialize and add a kset.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MWhj¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjR»h²hh³jk»h´MWubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj4¼jHj4¼jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hŒ™**Parameters** ``struct kset *k`` kset. **NOTE** On error, the kset.kobj.name allocated by kobject_set_name() is freed, it can not be used any more.”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M[hj8¼ubj¤)�”}”(hhh]”j©)�”}”(hŒ``struct kset *k`` kset. ”h]”(j¯)�”}”(hŒ``struct kset *k``”h]”jS)�”}”(hj]¼h]”hŒstruct kset *k”…”�”}”(hj_¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj[¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MXhjW¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒkset.”h]”hŒkset.”…”�”}”(hjv¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jr¼h´MXhjs¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjW¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jr¼h´MXhjT¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj8¼ubjM)�”}”(hŒ**NOTE**”h]”jŽ)�”}”(hj˜¼h]”hŒNOTE”…”�”}”(hjš¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj–¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MZhj8¼ubjM)�”}”(hŒcOn error, the kset.kobj.name allocated by kobject_set_name() is freed, it can not be used any more.”h]”hŒcOn error, the kset.kobj.name allocated by kobject_set_name() is freed, it can not be used any more.”…”�”}”(hj®¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MZhj8¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkset_unregister (C function)”Œc.kset_unregister”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ%void kset_unregister (struct kset *k)”h]”hù)�”}”(hŒ$void kset_unregister(struct kset *k)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjݼh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÙ¼h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MwubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì¼h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÙ¼h²hh³jë¼h´Mwubhÿ)�”}”(hŒkset_unregister”h]”j)�”}”(hŒkset_unregister”h]”hŒkset_unregister”…”�”}”(hjþ¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjú¼ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÙ¼h²hh³jë¼h´Mwubj4)�”}”(hŒ(struct kset *k)”h]”j:)�”}”(hŒstruct kset *k”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj½ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½ubh)�”}”(hhh]”j)�”}”(hŒkset”h]”hŒkset”…”�”}”(hj8½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j:½Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj½sbŒc.kset_unregister”†”asbuh1hhj½ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjf½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj½ubj)�”}”(hjKh]”hŒk”…”�”}”(hjs½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj½ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÙ¼h²hh³jë¼h´Mwubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÕ¼h²hh³jë¼h´Mwubah}”(h]”jмah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jë¼h´MwhjÒ¼h²hubj4)�”}”(hhh]”jM)�”}”(hŒRemove a kset.”h]”hŒRemove a kset.”…”�”}”(hjœ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mwhj™½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÒ¼h²hh³jë¼h´Mwubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj´½jHj´½jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hŒ***Parameters** ``struct kset *k`` kset.”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M{hj¸½ubj¤)�”}”(hhh]”j©)�”}”(hŒ``struct kset *k`` kset.”h]”(j¯)�”}”(hŒ``struct kset *k``”h]”jS)�”}”(hjݽh]”hŒstruct kset *k”…”�”}”(hjß½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÛ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M}hj×½ubjÉ)�”}”(hhh]”jM)�”}”(hŒkset.”h]”hŒkset.”…”�”}”(hjö½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mxhjó½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£hj¸½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkset_find_obj (C function)”Œc.kset_find_obj”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDstruct kobject * kset_find_obj (struct kset *kset, const char *name)”h]”hù)�”}”(hŒBstruct kobject *kset_find_obj(struct kset *kset, const char *name)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj7¾h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj3¾h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3¾h²hh³jD¾h´M„ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjV¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjS¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jX¾Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒ kset_find_obj”sbŒc.kset_find_obj”†”asbuh1hhj3¾h²hh³jD¾h´M„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3¾h²hh³jD¾h´M„ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj…¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj3¾h²hh³jD¾h´M„ubhÿ)�”}”(hŒ kset_find_obj”h]”j)�”}”(hjt¾h]”hŒ kset_find_obj”…”�”}”(hj–¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’¾ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj3¾h²hh³jD¾h´M„ubj4)�”}”(hŒ%(struct kset *kset, const char *name)”h]”(j:)�”}”(hŒstruct kset *kset”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj±¾h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj­¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­¾ubh)�”}”(hhh]”j)�”}”(hŒkset”h]”hŒkset”…”�”}”(hjϾh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj̾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jѾŒmodname”NŒ classname”Njwjz)�”}”j}]”jr¾Œc.kset_find_obj”†”asbuh1hhj­¾ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­¾ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjû¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj­¾ubj)�”}”(hŒkset”h]”hŒkset”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj©¾ubj:)�”}”(hŒconst char *name”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj!¿h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¿ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.¿h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj<¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¿ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ¿h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjX¿h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¿ubj)�”}”(hŒname”h]”hŒname”…”�”}”(hje¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj©¾ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj3¾h²hh³jD¾h´M„ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj/¾h²hh³jD¾h´M„ubah}”(h]”j*¾ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jD¾h´M„hj,¾h²hubj4)�”}”(hhh]”jM)�”}”(hŒSearch for object in kset.”h]”hŒSearch for object in kset.”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M„hjŒ¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj,¾h²hh³jD¾h´M„ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj§¿jHj§¿jI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hX**Parameters** ``struct kset *kset`` kset we're looking in. ``const char *name`` object's name. **Description** Lock kset via **kset->subsys**, and iterate over **kset->list**, looking for a matching kobject. If matching object is found take a reference and return the object.”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mˆhj«¿ubj¤)�”}”(hhh]”(j©)�”}”(hŒ-``struct kset *kset`` kset we're looking in. ”h]”(j¯)�”}”(hŒ``struct kset *kset``”h]”jS)�”}”(hjпh]”hŒstruct kset *kset”…”�”}”(hjÒ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjοubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M…hjÊ¿ubjÉ)�”}”(hhh]”jM)�”}”(hŒkset we're looking in.”h]”hŒkset we’re looking in.”…”�”}”(hjé¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ$``const char *name`` object's name. ”h]”(j¯)�”}”(hŒ``const char *name``”h]”jS)�”}”(hj Àh]”hŒconst char *name”…”�”}”(hj Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M†hjÀubjÉ)�”}”(hhh]”jM)�”}”(hŒobject's name.”h]”hŒobject’s name.”…”�”}”(hj"Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj«¿ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjDÀh]”hŒ Description”…”�”}”(hjFÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mˆhj«¿ubjM)�”}”(hŒ¤Lock kset via **kset->subsys**, and iterate over **kset->list**, looking for a matching kobject. If matching object is found take a reference and return the object.”h]”(hŒLock kset via ”…”�”}”(hjZÀh²hh³Nh´NubjŽ)�”}”(hŒ**kset->subsys**”h]”hŒ kset->subsys”…”�”}”(hjbÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZÀubhŒ, and iterate over ”…”�”}”(hjZÀh²hh³Nh´NubjŽ)�”}”(hŒ**kset->list**”h]”hŒ kset->list”…”�”}”(hjtÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZÀubhŒe, looking for a matching kobject. If matching object is found take a reference and return the object.”…”�”}”(hjZÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M‡hj«¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ kset_create_and_add (C function)”Œc.kset_create_and_add”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ{struct kset * kset_create_and_add (const char *name, const struct kset_uevent_ops *uevent_ops, struct kobject *parent_kobj)”h]”hù)�”}”(hŒystruct kset *kset_create_and_add(const char *name, const struct kset_uevent_ops *uevent_ops, struct kobject *parent_kobj)”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj­Àh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj©Àh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MàubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Àh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj©Àh²hh³jºÀh´Màubh)�”}”(hhh]”j)�”}”(hŒkset”h]”hŒkset”…”�”}”(hjÌÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÎÀŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒkset_create_and_add”sbŒc.kset_create_and_add”†”asbuh1hhj©Àh²hh³jºÀh´MàubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj©À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àubhÿ)�”}”(hŒkset_create_and_add”h]”j)�”}”(hjêÀh]”hŒkset_create_and_add”…”�”}”(hj Áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj©Àh²hh³jºÀh´Màubj4)�”}”(hŒY(const char *name, const struct kset_uevent_ops *uevent_ops, struct kobject *parent_kobj)”h]”(j:)�”}”(hŒconst char *name”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj'Áh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj#ÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#Áubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjBÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj#ÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPÁh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#Áubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj^Áh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj#Áubj)�”}”(hŒname”h]”hŒname”…”�”}”(hjkÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁubj:)�”}”(hŒ(const struct kset_uevent_ops *uevent_ops”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj„Áh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj€ÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Áubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjŸÁh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj€ÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Áh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Áubh)�”}”(hhh]”j)�”}”(hŒkset_uevent_ops”h]”hŒkset_uevent_ops”…”�”}”(hj½Áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¿ÁŒmodname”NŒ classname”Njwjz)�”}”j}]”jèÀŒc.kset_create_and_add”†”asbuh1hhj€ÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛÁh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Áubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjéÁh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€Áubj)�”}”(hŒ uevent_ops”h]”hŒ uevent_ops”…”�”}”(hjöÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁubj:)�”}”(hŒstruct kobject *parent_kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj ÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Âubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj-Âh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*Âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j/ÂŒmodname”NŒ classname”Njwjz)�”}”j}]”jèÀŒc.kset_create_and_add”†”asbuh1hhj ÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKÂh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Âubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjYÂh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj Âubj)�”}”(hŒ parent_kobj”h]”hŒ parent_kobj”…”�”}”(hjfÂh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj©Àh²hh³jºÀh´Màubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¥Àh²hh³jºÀh´Màubah}”(h]”j Àah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jºÀh´Màhj¢Àh²hubj4)�”}”(hhh]”jM)�”}”(hŒ5Create a struct kset dynamically and add it to sysfs.”h]”hŒ5Create a struct kset dynamically and add it to sysfs.”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Màhj�Âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¢Àh²hh³jºÀh´Màubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¨ÂjHj¨ÂjI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hX**Parameters** ``const char *name`` the name for the kset ``const struct kset_uevent_ops *uevent_ops`` a struct kset_uevent_ops for the kset ``struct kobject *parent_kobj`` the parent kobject of this kset, if any. **Description** This function creates a kset structure dynamically and registers it with sysfs. When you are finished with this structure, call kset_unregister() and the structure will be dynamically freed when it is no longer being used. If the kset was not able to be created, NULL will be returned.”h]”(jM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mähj¬Âubj¤)�”}”(hhh]”(j©)�”}”(hŒ+``const char *name`` the name for the kset ”h]”(j¯)�”}”(hŒ``const char *name``”h]”jS)�”}”(hjÑÂh]”hŒconst char *name”…”�”}”(hjÓÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÏÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MâhjËÂubjÉ)�”}”(hhh]”jM)�”}”(hŒthe name for the kset”h]”hŒthe name for the kset”…”�”}”(hjêÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒS``const struct kset_uevent_ops *uevent_ops`` a struct kset_uevent_ops for the kset ”h]”(j¯)�”}”(hŒ,``const struct kset_uevent_ops *uevent_ops``”h]”jS)�”}”(hj Ãh]”hŒ(const struct kset_uevent_ops *uevent_ops”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MãhjÃubjÉ)�”}”(hhh]”jM)�”}”(hŒ%a struct kset_uevent_ops for the kset”h]”hŒ%a struct kset_uevent_ops for the kset”…”�”}”(hj#Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒI``struct kobject *parent_kobj`` the parent kobject of this kset, if any. ”h]”(j¯)�”}”(hŒ``struct kobject *parent_kobj``”h]”jS)�”}”(hjCÃh]”hŒstruct kobject *parent_kobj”…”�”}”(hjEÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mähj=ÃubjÉ)�”}”(hhh]”jM)�”}”(hŒ(the parent kobject of this kset, if any.”h]”hŒ(the parent kobject of this kset, if any.”…”�”}”(hj\Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jXÃh´MähjYÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jXÃh´MähjÈÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¬ÂubjM)�”}”(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&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mæhj¬ÂubjM)�”}”(hŒßThis function creates a kset structure dynamically and registers it with sysfs. When you are finished with this structure, call kset_unregister() and the structure will be dynamically freed when it is no longer being used.”h]”hŒßThis function creates a kset structure dynamically and registers it with sysfs. When you are finished with this structure, call kset_unregister() and the structure will be dynamically freed when it is no longer being used.”…”�”}”(hj”Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Måhj¬ÂubjM)�”}”(hŒ>If the kset was not able to be created, NULL will be returned.”h]”hŒ>If the kset was not able to be created, NULL will be returned.”…”�”}”(hj£Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Mêhj¬Âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_uevent_env (C function)”Œc.kobject_uevent_env”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ[int kobject_uevent_env (struct kobject *kobj, enum kobject_action action, char *envp_ext[])”h]”hù)�”}”(hŒZint kobject_uevent_env(struct kobject *kobj, enum kobject_action action, char *envp_ext[])”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÒÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÎÃh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáÃh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÎÃh²hh³jàÃh´MÓubhÿ)�”}”(hŒkobject_uevent_env”h]”j)�”}”(hŒkobject_uevent_env”h]”hŒkobject_uevent_env”…”�”}”(hjóÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjïÃubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÎÃh²hh³jàÃh´MÓubj4)�”}”(hŒD(struct kobject *kobj, enum kobject_action action, char *envp_ext[])”h]”(j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj ÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Äubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj-Äh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*Äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j/ÄŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjõÃsbŒc.kobject_uevent_env”†”asbuh1hhj ÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Äubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj[Äh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj Äubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjhÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÄubj:)�”}”(hŒenum kobject_action action”h]”(j?)�”}”(hjâÞh]”hŒenum”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj}ÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}Äubh)�”}”(hhh]”j)�”}”(hŒkobject_action”h]”hŒkobject_action”…”�”}”(hjŸÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¡ÄŒmodname”NŒ classname”Njwjz)�”}”j}]”jIÄŒc.kobject_uevent_env”†”asbuh1hhj}ÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Äh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}Äubj)�”}”(hŒaction”h]”hŒaction”…”�”}”(hjËÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÄubj:)�”}”(hŒchar *envp_ext[]”h]”(jü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjäÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjàÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàÄubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjàÄubj)�”}”(hŒenvp_ext”h]”hŒenvp_ext”…”�”}”(hj Åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjàÄubj”)�”}”(hj_Žh]”hŒ[”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjàÄubj”)�”}”(hjmŽh]”hŒ]”…”�”}”(hj(Åh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjàÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÄubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÎÃh²hh³jàÃh´MÓubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÊÃh²hh³jàÃh´MÓubah}”(h]”jÅÃah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jàÃh´MÓhjÇÃh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&send an uevent with environmental data”h]”hŒ&send an uevent with environmental data”…”�”}”(hjQÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MÓhjNÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÇÃh²hh³jàÃh´MÓubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjiÅjHjiÅjI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hXB**Parameters** ``struct kobject *kobj`` struct kobject that the action is happening to ``enum kobject_action action`` action that is happening ``char *envp_ext[]`` pointer to environmental data **Description** Returns 0 if kobject_uevent_env() is completed with success or the corresponding error when it fails.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjsÅh]”hŒ Parameters”…”�”}”(hjuÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M×hjmÅubj¤)�”}”(hhh]”(j©)�”}”(hŒH``struct kobject *kobj`` struct kobject that the action is happening to ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hj’Åh]”hŒstruct kobject *kobj”…”�”}”(hj”Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MÕhjŒÅubjÉ)�”}”(hhh]”jM)�”}”(hŒ.struct kobject that the action is happening to”h]”hŒ.struct kobject that the action is happening to”…”�”}”(hj«Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ8``enum kobject_action action`` action that is happening ”h]”(j¯)�”}”(hŒ``enum kobject_action action``”h]”jS)�”}”(hjËÅh]”hŒenum kobject_action action”…”�”}”(hjÍÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÉÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MÖhjÅÅubjÉ)�”}”(hhh]”jM)�”}”(hŒaction that is happening”h]”hŒaction that is happening”…”�”}”(hjäÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ3``char *envp_ext[]`` pointer to environmental data ”h]”(j¯)�”}”(hŒ``char *envp_ext[]``”h]”jS)�”}”(hjÆh]”hŒchar *envp_ext[]”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M×hjþÅubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to environmental data”h]”hŒpointer to environmental data”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjmÅubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj?Æh]”hŒ Description”…”�”}”(hjAÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MÙhjmÅubjM)�”}”(hŒeReturns 0 if kobject_uevent_env() is completed with success or the corresponding error when it fails.”h]”hŒeReturns 0 if kobject_uevent_env() is completed with success or the corresponding error when it fails.”…”�”}”(hjUÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MØhjmÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkobject_uevent (C function)”Œc.kobject_uevent”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒEint kobject_uevent (struct kobject *kobj, enum kobject_action action)”h]”hù)�”}”(hŒDint kobject_uevent(struct kobject *kobj, enum kobject_action action)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj„Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj€Æh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€Æh²hh³j’Æh´M‰ubhÿ)�”}”(hŒkobject_uevent”h]”j)�”}”(hŒkobject_uevent”h]”hŒkobject_uevent”…”�”}”(hj¥Æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Æubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj€Æh²hh³j’Æh´M‰ubj4)�”}”(hŒ2(struct kobject *kobj, enum kobject_action action)”h]”(j:)�”}”(hŒstruct kobject *kobj”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÁÆh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj½ÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎÆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½Æubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hj߯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÜÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jáÆŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj§ÆsbŒc.kobject_uevent”†”asbuh1hhj½ÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿÆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½Æubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj½Æubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¹Æubj:)�”}”(hŒenum kobject_action action”h]”(j?)�”}”(hjâÞh]”hŒenum”…”�”}”(hj3Çh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj/ÇubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Çh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/Çubh)�”}”(hhh]”j)�”}”(hŒkobject_action”h]”hŒkobject_action”…”�”}”(hjQÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jSÇŒmodname”NŒ classname”Njwjz)�”}”j}]”jûÆŒc.kobject_uevent”†”asbuh1hhj/ÇubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/Çubj)�”}”(hŒaction”h]”hŒaction”…”�”}”(hj}Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¹Æubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj€Æh²hh³j’Æh´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj|Æh²hh³j’Æh´M‰ubah}”(h]”jwÆah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j’Æh´M‰hjyÆh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%notify userspace by sending an uevent”h]”hŒ%notify userspace by sending an uevent”…”�”}”(hj§Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M‰hj¤Çh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjyÆh²hh³j’Æh´M‰ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¿ÇjHj¿ÇjI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hX**Parameters** ``struct kobject *kobj`` struct kobject that the action is happening to ``enum kobject_action action`` action that is happening **Description** Returns 0 if kobject_uevent() is completed with success or the corresponding error when it fails.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M�hjÃÇubj¤)�”}”(hhh]”(j©)�”}”(hŒH``struct kobject *kobj`` struct kobject that the action is happening to ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”•fh]”jS)�”}”(hjèÇh]”hŒstruct kobject *kobj”…”�”}”(hjêÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjæÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M‹hjâÇubjÉ)�”}”(hhh]”jM)�”}”(hŒ.struct kobject that the action is happening to”h]”hŒ.struct kobject that the action is happening to”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ8``enum kobject_action action`` action that is happening ”h]”(j¯)�”}”(hŒ``enum kobject_action action``”h]”jS)�”}”(hj!Èh]”hŒenum kobject_action action”…”�”}”(hj#Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MŒhjÈubjÉ)�”}”(hhh]”jM)�”}”(hŒaction that is happening”h]”hŒaction that is happening”…”�”}”(hj:Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6Èh´MŒhj7Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6Èh´MŒhjßÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÃÇubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj\Èh]”hŒ Description”…”�”}”(hj^Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MŽhjÃÇubjM)�”}”(hŒaReturns 0 if kobject_uevent() is completed with success or the corresponding error when it fails.”h]”hŒaReturns 0 if kobject_uevent() is completed with success or the corresponding error when it fails.”…”�”}”(hjrÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M�hjÃÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒadd_uevent_var (C function)”Œc.add_uevent_var”hNt”auh1hÜhj}¡h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒIint add_uevent_var (struct kobj_uevent_env *env, const char *format, ...)”h]”hù)�”}”(hŒHint add_uevent_var(struct kobj_uevent_env *env, const char *format, ...)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¡Èh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�Èh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M˜ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Èh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Èh²hh³j¯Èh´M˜ubhÿ)�”}”(hŒadd_uevent_var”h]”j)�”}”(hŒadd_uevent_var”h]”hŒadd_uevent_var”…”�”}”(hjÂÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾Èubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�Èh²hh³j¯Èh´M˜ubj4)�”}”(hŒ6(struct kobj_uevent_env *env, const char *format, ...)”h]”(j:)�”}”(hŒstruct kobj_uevent_env *env”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÞÈh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÚÈubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëÈh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚÈubh)�”}”(hhh]”j)�”}”(hŒkobj_uevent_env”h]”hŒkobj_uevent_env”…”�”}”(hjüÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjùÈubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jþÈŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÄÈsbŒc.add_uevent_var”†”asbuh1hhjÚÈubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚÈubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj*Éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÚÈubj)�”}”(hŒenv”h]”hŒenv”…”�”}”(hj7Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÖÈubj:)�”}”(hŒconst char *format”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjPÉh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjLÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Éh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjLÉubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjkÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjLÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyÉh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjLÉubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‡Éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjLÉubj)�”}”(hŒformat”h]”hŒformat”…”�”}”(hj”Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÖÈubj:)�”}”(hŒ...”h]”j”)�”}”(hj›h]”hŒ...”…”�”}”(hj­Éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj©Éubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÖÈubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�Èh²hh³j¯Èh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj™Èh²hh³j¯Èh´M˜ubah}”(h]”j”Èah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¯Èh´M˜hj–Èh²hubj4)�”}”(hhh]”jM)�”}”(hŒ.add key value string to the environment buffer”h]”hŒ.add key value string to the environment buffer”…”�”}”(hjÖÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M˜hjÓÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–Èh²hh³j¯Èh´M˜ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjîÉjHjîÉjI‰jJ‰jK‰uh1híh²hhj}¡h³Nh´Nubj„)�”}”(hX**Parameters** ``struct kobj_uevent_env *env`` environment buffer structure ``const char *format`` printf format for the key=value pair ``...`` variable arguments **Description** Returns 0 if environment variable was added successfully or -ENOMEM if no space was available.”h]”(jM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MœhjòÉubj¤)�”}”(hhh]”(j©)�”}”(hŒ=``struct kobj_uevent_env *env`` environment buffer structure ”h]”(j¯)�”}”(hŒ``struct kobj_uevent_env *env``”h]”jS)�”}”(hjÊh]”hŒstruct kobj_uevent_env *env”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M™hjÊubjÉ)�”}”(hhh]”jM)�”}”(hŒenvironment buffer structure”h]”hŒenvironment buffer structure”…”�”}”(hj0Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ<``const char *format`` printf format for the key=value pair ”h]”(j¯)�”}”(hŒ``const char *format``”h]”jS)�”}”(hjPÊh]”hŒconst char *format”…”�”}”(hjRÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjNÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MšhjJÊubjÉ)�”}”(hhh]”jM)�”}”(hŒ$printf format for the key=value pair”h]”hŒ$printf format for the key=value pair”…”�”}”(hjiÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jeÊh´MšhjfÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jeÊh´MšhjÊubj©)�”}”(hŒ``...`` variable arguments ”h]”(j¯)�”}”(hŒ``...``”h]”jS)�”}”(hj‰Êh]”hŒ...”…”�”}”(hj‹Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‡Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´KhjƒÊubjÉ)�”}”(hhh]”jM)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hj¢Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jžÊh´KhjŸÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjƒÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jžÊh´KhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjòÉubjM)�”}”(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&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´KhjòÉubjM)�”}”(hŒ^Returns 0 if environment variable was added successfully or -ENOMEM if no space was available.”h]”hŒ^Returns 0 if environment variable was added successfully or -ENOMEM if no space was available.”…”�”}”(hjÚÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´M›hjòÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj}¡h²hh³Nh´Nubeh}”(h]”Œkernel-objects-manipulation”ah ]”h"]”Œkernel objects manipulation”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kmubh¶)�”}”(hhh]”(h»)�”}”(hŒKernel utility functions”h]”hŒKernel utility functions”…”�”}”(hjûÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjøÊh²hh³hÊh´KvubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒARRAY_SIZE (C macro)”Œ c.ARRAY_SIZE”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ ARRAY_SIZE”h]”hù)�”}”(hŒ ARRAY_SIZE”h]”hÿ)�”}”(hŒ ARRAY_SIZE”h]”j)�”}”(hjËh]”hŒ ARRAY_SIZE”…”�”}”(hj&Ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"Ëubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjËh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/basics:120: ./include/linux/array_size.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjËh²hh³j9Ëh´Kubah}”(h]”jËah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j9Ëh´KhjËh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjËh²hh³j9Ëh´Kubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjRËjHjRËjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``ARRAY_SIZE (arr)``”h]”jS)�”}”(hjXËh]”hŒARRAY_SIZE (arr)”…”�”}”(hjZËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjVËubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/basics:120: ./include/linux/array_size.h”h´K hjøÊh²hubji)�”}”(hŒ,get the number of elements in array **arr** ”h]”jM)�”}”(hŒ+get the number of elements in array **arr**”h]”(hŒ$get the number of elements in array ”…”�”}”(hjrËh²hh³Nh´NubjŽ)�”}”(hŒ**arr**”h]”hŒarr”…”�”}”(hjzËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/basics:120: ./include/linux/array_size.h”h´KhjnËubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jŽËh´KhjøÊh²hubj„)�”}”(hŒ+**Parameters** ``arr`` array to be sized”h]”(jM)�”}”(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&]”uh1jLh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/basics:120: ./include/linux/array_size.h”h´K hj•Ëubj¤)�”}”(hhh]”j©)�”}”(hŒ``arr`` array to be sized”h]”(j¯)�”}”(hŒ``arr``”h]”jS)�”}”(hjºËh]”hŒarr”…”�”}”(hj¼Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¸Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/basics:120: ./include/linux/array_size.h”h´Khj´ËubjÉ)�”}”(hhh]”jM)�”}”(hŒarray to be sized”h]”hŒarray to be sized”…”�”}”(hjÓËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/basics:120: ./include/linux/array_size.h”h´K hjÐËubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj´Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÏËh´Khj±Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj•Ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒARRAY_END (C macro)”Œ c.ARRAY_END”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ ARRAY_END”h]”hù)�”}”(hŒ ARRAY_END”h]”hÿ)�”}”(hŒ ARRAY_END”h]”j)�”}”(hjÌh]”hŒ ARRAY_END”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÌh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/basics:120: ./include/linux/array_size.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj Ìh²hh³j+Ìh´Kubah}”(h]”jÌah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j+Ìh´Khj Ìh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj Ìh²hh³j+Ìh´Kubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjDÌjHjDÌjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``ARRAY_END (arr)``”h]”jS)�”}”(hjJÌh]”hŒARRAY_END (arr)”…”�”}”(hjLÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjHÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/basics:120: ./include/linux/array_size.h”h´KhjøÊh²hubji)�”}”(hŒÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/basics:123: ./include/linux/container_of.h”h´K hjøÊh²hubji)�”}”(hŒ=cast a member of a structure out to the containing structure ”h]”jM)�”}”(hŒÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KIhjnÕubjM)�”}”(hXjUsed to create an anonymous union of two structs with identical layout and size: one anonymous and one named. The former can be used normally without sub-struct naming, and the latter can be used to reason about the start, end, and size of the group of struct members. Includes struct tag argument for the named copy, so the specified layout can be reused later.”h]”hXjUsed to create an anonymous union of two structs with identical layout and size: one anonymous and one named. The former can be used normally without sub-struct naming, and the latter can be used to reason about the start, end, and size of the group of struct members. Includes struct tag argument for the named copy, so the specified layout can be reused later.”…”�”}”(hjVÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KHhjnÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒDECLARE_FLEX_ARRAY (C macro)”Œc.DECLARE_FLEX_ARRAY”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDECLARE_FLEX_ARRAY”h]”hù)�”}”(hŒDECLARE_FLEX_ARRAY”h]”hÿ)�”}”(hŒDECLARE_FLEX_ARRAY”h]”j)�”}”(hjÖh]”hŒDECLARE_FLEX_ARRAY”…”�”}”(hj‰Öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…Öubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�Öh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KTubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj}Öh²hh³jœÖh´KTubah}”(h]”jxÖah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jœÖh´KThjzÖh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjzÖh²hh³jœÖh´KTubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjµÖjHjµÖjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ#``DECLARE_FLEX_ARRAY (TYPE, NAME)``”h]”jS)�”}”(hj»Öh]”hŒDECLARE_FLEX_ARRAY (TYPE, NAME)”…”�”}”(hj½Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¹Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KVhjøÊh²hubji)�”}”(hŒ+Declare a flexible array usable in a union ”h]”jM)�”}”(hŒ*Declare a flexible array usable in a union”h]”hŒ*Declare a flexible array usable in a union”…”�”}”(hjÕÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KThjÑÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jãÖh´KThjøÊh²hubj„)�”}”(hX:**Parameters** ``TYPE`` The type of each flexible array element ``NAME`` The name of the flexible array member **Description** In order to have a flexible array member in a union or alone in a struct, it needs to be wrapped in an anonymous struct with at least 1 named member, but that member can be empty.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KXhjêÖubj¤)�”}”(hhh]”(j©)�”}”(hŒ1``TYPE`` The type of each flexible array element ”h]”(j¯)�”}”(hŒ``TYPE``”h]”jS)�”}”(hj×h]”hŒTYPE”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KVhj ×ubjÉ)�”}”(hhh]”jM)�”}”(hŒ'The type of each flexible array element”h]”hŒ'The type of each flexible array element”…”�”}”(hj(×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j$×h´KVhj%×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j$×h´KVhj×ubj©)�”}”(hŒ/``NAME`` The name of the flexible array member ”h]”(j¯)�”}”(hŒ``NAME``”h]”jS)�”}”(hjH×h]”hŒNAME”…”�”}”(hjJ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjF×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KWhjB×ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%The name of the flexible array member”h]”hŒ%The name of the flexible array member”…”�”}”(hja×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j]×h´KWhj^×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjB×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j]×h´KWhj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjêÖubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KYhjêÖubjM)�”}”(hŒ³In order to have a flexible array member in a union or alone in a struct, it needs to be wrapped in an anonymous struct with at least 1 named member, but that member can be empty.”h]”hŒ³In order to have a flexible array member in a union or alone in a struct, it needs to be wrapped in an anonymous struct with at least 1 named member, but that member can be empty.”…”�”}”(hj™×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KXhjêÖubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ__TRAILING_OVERLAP (C macro)”Œc.__TRAILING_OVERLAP”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ__TRAILING_OVERLAP”h]”hù)�”}”(hŒ__TRAILING_OVERLAP”h]”hÿ)�”}”(hŒ__TRAILING_OVERLAP”h]”j)�”}”(hjÂ×h]”hŒ__TRAILING_OVERLAP”…”�”}”(hjÌ×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈ×ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÄ×h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´Kaubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÀ×h²hh³jß×h´Kaubah}”(h]”j»×ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jß×h´Kahj½×h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj½×h²hh³jß×h´Kaubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjø×jHjø×jI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ8``__TRAILING_OVERLAP (TYPE, NAME, FAM, ATTRS, MEMBERS)``”h]”jS)�”}”(hjþ×h]”hŒ4__TRAILING_OVERLAP (TYPE, NAME, FAM, ATTRS, MEMBERS)”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjü×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KchjøÊh²hubji)�”}”(hŒ7Overlap a flexible-array member with trailing members. ”h]”jM)�”}”(hŒ6Overlap a flexible-array member with trailing members.”h]”hŒ6Overlap a flexible-array member with trailing members.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KahjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j&Øh´KahjøÊh²hubj„)�”}”(hX**Parameters** ``TYPE`` Flexible structure type name, including "struct" keyword. ``NAME`` Name for a variable to define. ``FAM`` The flexible-array member within **TYPE** ``ATTRS`` Any struct attributes (usually empty) ``MEMBERS`` Trailing overlapping members. **Description** Creates a union between a flexible-array member (FAM) in a struct and a set of additional members that would otherwise follow it. Beware that, as this helper encloses TYPE NAME and MEMBERS in the same union, designated initializers for MEMBERS may overwrite portions previously initialized through NAME. For example:: struct flex { size_t count; u8 fam[]; }; struct composite { ... __TRAILING_OVERLAP(struct flex, flex, fam, __packed, u8 data; ); } __packed; static struct composite comp = { .flex = { .count = 1, }, .data = 2, }; In the example above, .flex and .data initialize different views of the same union storage. Since .data is initialized last, it _may_ overwrite portions previously initialized through .flex, leading to .flex.count being zeroed out. A couple of alternatives are shown below. a) Initialize only one view of the overlapped storage and assign the rest at runtime:: static struct composite comp = { .flex = { .count = 1, }, }; static void foo(void) { comp.data = 2; ... } b) Alternatively, replace designated initializers with runtime assignments:: static void foo(void) { struct composite comp; comp.flex.count = 1; comp.data = 2; ... } Compiler Explorer test code: https://godbolt.org/z/voM4E36dT For another example of the above see commit 5e54510a9389 ("acpi: nfit: intel: avoid multiple -Wflex-array-member-not-at-end warnings") Link: https://git.kernel.org/linus/5e54510a9389caa9”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj3Øh]”hŒ Parameters”…”�”}”(hj5Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´Kehj-Øubj¤)�”}”(hhh]”(j©)�”}”(hŒC``TYPE`` Flexible structure type name, including "struct" keyword. ”h]”(j¯)�”}”(hŒ``TYPE``”h]”jS)�”}”(hjRØh]”hŒTYPE”…”�”}”(hjTØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjPØubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K¨hjLØubjÉ)�”}”(hhh]”jM)�”}”(hŒ9Flexible structure type name, including "struct" keyword.”h]”hŒ=Flexible structure type name, including “structâ€� keyword.”…”�”}”(hjkØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jgØh´K¨hjhØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjLØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jgØh´K¨hjIØubj©)�”}”(hŒ(``NAME`` Name for a variable to define. ”h]”(j¯)�”}”(hŒ``NAME``”h]”jS)�”}”(hj‹Øh]”hŒNAME”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‰Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K©hj…ØubjÉ)�”}”(hhh]”jM)�”}”(hŒName for a variable to define.”h]”hŒName for a variable to define.”…”�”}”(hj¤Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j Øh´K©hj¡Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj…Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j Øh´K©hjIØubj©)�”}”(hŒ2``FAM`` The flexible-array member within **TYPE** ”h]”(j¯)�”}”(hŒ``FAM``”h]”jS)�”}”(hjÄØh]”hŒFAM”…”�”}”(hjÆØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÂØubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´Kªhj¾ØubjÉ)�”}”(hhh]”jM)�”}”(hŒ)The flexible-array member within **TYPE**”h]”(hŒ!The flexible-array member within ”…”�”}”(hjÝØh²hh³Nh´NubjŽ)�”}”(hŒ**TYPE**”h]”hŒTYPE”…”�”}”(hjåØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÙØh´KªhjÚØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¾Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÙØh´KªhjIØubj©)�”}”(hŒ0``ATTRS`` Any struct attributes (usually empty) ”h]”(j¯)�”}”(hŒ ``ATTRS``”h]”jS)�”}”(hj Ùh]”hŒATTRS”…”�”}”(hj Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K«hjÙubjÉ)�”}”(hhh]”jM)�”}”(hŒ%Any struct attributes (usually empty)”h]”hŒ%Any struct attributes (usually empty)”…”�”}”(hj$Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j Ùh´K«hj!Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j Ùh´K«hjIØubj©)�”}”(hŒ*``MEMBERS`` Trailing overlapping members. ”h]”(j¯)�”}”(hŒ ``MEMBERS``”h]”jS)�”}”(hjDÙh]”hŒMEMBERS”…”�”}”(hjFÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K¬hj>ÙubjÉ)�”}”(hhh]”jM)�”}”(hŒTrailing overlapping members.”h]”hŒTrailing overlapping members.”…”�”}”(hj]Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jYÙh´K¬hjZÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj>Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jYÙh´K¬hjIØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj-ØubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K®hj-ØubjM)�”}”(hŒ�Creates a union between a flexible-array member (FAM) in a struct and a set of additional members that would otherwise follow it.”h]”hŒ�Creates a union between a flexible-array member (FAM) in a struct and a set of additional members that would otherwise follow it.”…”�”}”(hj•Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´Kbhj-ØubjM)�”}”(hŒ­Beware that, as this helper encloses TYPE NAME and MEMBERS in the same union, designated initializers for MEMBERS may overwrite portions previously initialized through NAME.”h]”hŒ­Beware that, as this helper encloses TYPE NAME and MEMBERS in the same union, designated initializers for MEMBERS may overwrite portions previously initialized through NAME.”…”�”}”(hj¤Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´Kehj-ØubjM)�”}”(hŒ For example::”h]”hŒ For example:”…”�”}”(hj³Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´Kihj-ØubjÅ)�”}”(hX6struct flex { size_t count; u8 fam[]; }; struct composite { ... __TRAILING_OVERLAP(struct flex, flex, fam, __packed, u8 data; ); } __packed; static struct composite comp = { .flex = { .count = 1, }, .data = 2, };”h]”hX6struct flex { size_t count; u8 fam[]; }; struct composite { ... __TRAILING_OVERLAP(struct flex, flex, fam, __packed, u8 data; ); } __packed; static struct composite comp = { .flex = { .count = 1, }, .data = 2, };”…”�”}”hjÂÙsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´Kkhj-ØubjM)�”}”(hŒçIn the example above, .flex and .data initialize different views of the same union storage. Since .data is initialized last, it _may_ overwrite portions previously initialized through .flex, leading to .flex.count being zeroed out.”h]”hŒçIn the example above, .flex and .data initialize different views of the same union storage. Since .data is initialized last, it _may_ overwrite portions previously initialized through .flex, leading to .flex.count being zeroed out.”…”�”}”(hjÑÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K~hj-ØubjM)�”}”(hŒ)A couple of alternatives are shown below.”h]”hŒ)A couple of alternatives are shown below.”…”�”}”(hjàÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´Kƒhj-Øubj)�”}”(hhh]”(j„)�”}”(hXInitialize only one view of the overlapped storage and assign the rest at runtime:: static struct composite comp = { .flex = { .count = 1, }, }; static void foo(void) { comp.data = 2; ... } ”h]”(jM)�”}”(hŒSInitialize only one view of the overlapped storage and assign the rest at runtime::”h]”hŒRInitialize only one view of the overlapped storage and assign the rest at runtime:”…”�”}”(hjöÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K…hjòÙubjÅ)�”}”(hŒšstatic struct composite comp = { .flex = { .count = 1, }, }; static void foo(void) { comp.data = 2; ... }”h]”hŒšstatic struct composite comp = { .flex = { .count = 1, }, }; static void foo(void) { comp.data = 2; ... }”…”�”}”hjÚsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KˆhjòÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjïÙubj„)�”}”(hŒÓAlternatively, replace designated initializers with runtime assignments:: static void foo(void) { struct composite comp; comp.flex.count = 1; comp.data = 2; ... } ”h]”(jM)�”}”(hŒIAlternatively, replace designated initializers with runtime assignments::”h]”hŒHAlternatively, replace designated initializers with runtime assignments:”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K”hjÚubjÅ)�”}”(hŒystatic void foo(void) { struct composite comp; comp.flex.count = 1; comp.data = 2; ... }”h]”hŒystatic void foo(void) { struct composite comp; comp.flex.count = 1; comp.data = 2; ... }”…”�”•}”hj-Úsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K–hjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjïÙubeh}”(h]”h ]”h"]”h$]”h&]”j½Œ loweralpha”j¿hjÀjÁuh1j~hj-ØubjM)�”}”(hŒÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K½hj:ÛubjÉ)�”}”(hhh]”jM)�”}”(hŒ9Flexible structure type name, including "struct" keyword.”h]”hŒ=Flexible structure type name, including “structâ€� keyword.”…”�”}”(hjYÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jUÛh´K½hjVÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jUÛh´K½hj7Ûubj©)�”}”(hŒ(``NAME`` Name for a variable to define. ”h]”(j¯)�”}”(hŒ``NAME``”h]”jS)�”}”(hjyÛh]”hŒNAME”…”�”}”(hj{Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjwÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K¾hjsÛubjÉ)�”}”(hhh]”jM)�”}”(hŒName for a variable to define.”h]”hŒName for a variable to define.”…”�”}”(hj’Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŽÛh´K¾hj�Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjsÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŽÛh´K¾hj7Ûubj©)�”}”(hŒ2``FAM`` The flexible-array member within **TYPE** ”h]”(j¯)�”}”(hŒ``FAM``”h]”jS)�”}”(hj²Ûh]”hŒFAM”…”�”}”(hj´Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj°Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K¿hj¬ÛubjÉ)�”}”(hhh]”jM)�”}”(hŒ)The flexible-array member within **TYPE**”h]”(hŒ!The flexible-array member within ”…”�”}”(hjËÛh²hh³Nh´NubjŽ)�”}”(hŒ**TYPE**”h]”hŒTYPE”…”�”}”(hjÓÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÇÛh´K¿hjÈÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¬Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÇÛh´K¿hj7Ûubj©)�”}”(hŒ*``MEMBERS`` Trailing overlapping members. ”h]”(j¯)�”}”(hŒ ``MEMBERS``”h]”jS)�”}”(hjùÛh]”hŒMEMBERS”…”�”}”(hjûÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj÷Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KÀhjóÛubjÉ)�”}”(hhh]”jM)�”}”(hŒTrailing overlapping members.”h]”hŒTrailing overlapping members.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÜh´KÀhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjóÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÜh´KÀhj7Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÛubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj4Üh]”hŒ Description”…”�”}”(hj6Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´KÂhjÛubjM)�”}”(hŒ�Creates a union between a flexible-array member (FAM) in a struct and a set of additional members that would otherwise follow it.”h]”hŒ�Creates a union between a flexible-array member (FAM) in a struct and a set of additional members that would otherwise follow it.”…”�”}”(hjJÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:130: ./include/linux/stddef.h”h´K¹hjÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒfor_each_if (C macro)”Œ c.for_each_if”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ for_each_if”h]”hù)�”}”(hŒ for_each_if”h]”hÿ)�”}”(hŒ for_each_if”h]”j)�”}”(hjsÜh]”hŒ for_each_if”…”�”}”(hj}Üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyÜubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjuÜh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjqÜh²hh³j�Üh´K ubah}”(h]”jlÜah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�Üh´K hjnÜh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjnÜh²hh³j�Üh´K ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj©ÜjHj©ÜjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``for_each_if (condition)``”h]”jS)�”}”(hj¯Üh]”hŒfor_each_if (condition)”…”�”}”(hj±Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj­Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K hjøÊh²hubji)�”}”(hŒlist, head) \' for_each_if(x->something == SOMETHING) The for_each_if() macro makes the use of for_each_foo_bar() less error prone.”h]”(jM)�”}”(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&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjÞÜubj¤)�”}”(hhh]”j©)�”}”(hŒ%``condition`` The condition to check ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjÝh]”hŒ condition”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K hjýÜubjÉ)�”}”(hhh]”jM)�”}”(hŒThe condition to check”h]”hŒThe condition to check”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ÞÜubjM)�”}”(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&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjÞÜubjM)�”}”(hŒ Typical use::”h]”hŒ Typical use:”…”�”}”(hjTÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K hjÞÜubjÅ)�”}”(hŒ‰#define for_each_foo_bar(x, y) \' list_for_each_entry(x, y->list, head) \' for_each_if(x->something == SOMETHING)”h]”hŒ‰#define for_each_foo_bar(x, y) \' list_for_each_entry(x, y->list, head) \' for_each_if(x->something == SOMETHING)”…”�”}”hjcÝsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjÞÜubjM)�”}”(hŒMThe for_each_if() macro makes the use of for_each_foo_bar() less error prone.”h]”hŒMThe for_each_if() macro makes the use of for_each_foo_bar() less error prone.”…”�”}”(hjrÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjÞÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒfind_closest (C macro)”Œc.find_closest”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ find_closest”h]”hù)�”}”(hŒ find_closest”h]”hÿ)�”}”(hŒ find_closest”h]”j)�”}”(hj›Ýh]”hŒ find_closest”…”�”}”(hj¥Ýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Ýubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�Ýh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj™Ýh²hh³j¸Ýh´Kubah}”(h]”j”Ýah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¸Ýh´Khj–Ýh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–Ýh²hh³j¸Ýh´Kubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjÑÝjHjÑÝjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``find_closest (x, a, as)``”h]”jS)�”}”(hj×Ýh]”hŒfind_closest (x, a, as)”…”�”}”(hjÙÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÕÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjøÊh²hubji)�”}”(hŒ-locate the closest element in a sorted array ”h]”jM)�”}”(hŒ,locate the closest element in a sorted array”h]”hŒ,locate the closest element in a sorted array”…”�”}”(hjñÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjíÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jÿÝh´KhjøÊh²hubj„)�”}”(hX{**Parameters** ``x`` The reference value. ``a`` The array in which to look for the closest element. Must be sorted in ascending order. ``as`` Size of 'a'. **Description** Returns the index of the element closest to 'x'. **Note** If using an array of negative numbers (or mixed positive numbers), then be sure that 'x' is of a signed-type to get good results.”h]”(jM)�”}”(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&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjÞubj¤)�”}”(hhh]”(j©)�”}”(hŒ``x`` The reference value. ”h]”(j¯)�”}”(hŒ``x``”h]”jS)�”}”(hj+Þh]”hŒx”…”�”}”(hj-Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj)Þubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´Khj%ÞubjÉ)�”}”(hhh]”jM)�”}”(hŒThe reference value.”h]”hŒThe reference value.”…”�”}”(hjDÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@Þh´KhjAÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j@Þh´Khj"Þubj©)�”}”(hŒ]``a`` The array in which to look for the closest element. Must be sorted in ascending order. ”h]”(j¯)�”}”(hŒ``a``”h]”jS)�”}”(hjdÞh]”hŒa”…”�”}”(hjfÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´Khj^ÞubjÉ)�”}”(hhh]”jM)�”}”(hŒVThe array in which to look for the closest element. Must be sorted in ascending order.”h]”hŒVThe array in which to look for the closest element. Must be sorted in ascending order.”…”�”}”(hj}Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjzÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jyÞh´Khj"Þubj©)�”}”(hŒ``as`` Size of 'a'. ”h]”(j¯)�”}”(hŒ``as``”h]”jS)�”}”(hjžÞh]”hŒas”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjœÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´Khj˜ÞubjÉ)�”}”(hhh]”jM)�”}”(hŒ Size of 'a'.”h]”hŒSize of ‘a’.”…”�”}”(hj·Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j³Þh´Khj´Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj˜Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j³Þh´Khj"Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÞubjM)�”}”(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&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K hjÞubjM)�”}”(hŒ0Returns the index of the element closest to 'x'.”h]”hŒ4Returns the index of the element closest to ‘x’.”…”�”}”(hjïÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjÞubjM)�”}”(hŒ**Note**”h]”jŽ)�”}”(hjßh]”hŒNote”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K!hjÞubj¤)�”}”(hhh]”j©)�”}”(hŒ�If using an array of negative numbers (or mixed positive numbers), then be sure that 'x' is of a signed-type to get good results.”h]”(j¯)�”}”(hŒBIf using an array of negative numbers (or mixed positive numbers),”h]”hŒBIf using an array of negative numbers (or mixed positive numbers),”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K!hjßubjÉ)�”}”(hhh]”jM)�”}”(hŒ>then be sure that 'x' is of a signed-type to get good results.”h]”hŒBthen be sure that ‘x’ is of a signed-type to get good results.”…”�”}”(hj/ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”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Þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!find_closest_descending (C macro)”Œc.find_closest_descending”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒfind_closest_descending”h]”hù)�”}”(hŒfind_closest_descending”h]”hÿ)�”}”(hŒfind_closest_descending”h]”j)�”}”(hjjßh]”hŒfind_closest_descending”…”�”}”(hjtßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjpßubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjlßh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K8ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjhßh²hh³j‡ßh´K8ubah}”(h]”jcßah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‡ßh´K8hjeßh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjeßh²hh³j‡ßh´K8ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj ßjHj ßjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ&``find_closest_descending (x, a, as)``”h]”jS)�”}”(hj¦ßh]”hŒ"find_closest_descending (x, a, as)”…”�”}”(hj¨ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¤ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K:hjøÊh²hubji)�”}”(hŒ-locate the closest element in a sorted array ”h]”jM)�”}”(hŒ,locate the closest element in a sorted array”h]”hŒ,locate the closest element in a sorted array”…”�”}”(hjÀßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K8hj¼ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jÎßh´K8hjøÊh²hubj„)�”}”(hX†**Parameters** ``x`` The reference value. ``a`` The array in which to look for the closest element. Must be sorted in descending order. ``as`` Size of 'a'. **Description** Similar to find_closest() but 'a' is expected to be sorted in descending order. The iteration is done in reverse order, so that the comparison of '__fc_right' & '__fc_left' also works for unsigned numbers.”h]”(jM)�”}”(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&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjÕßubjM)�”}”(hŒÍSimilar to find_closest() but 'a' is expected to be sorted in descending order. The iteration is done in reverse order, so that the comparison of '__fc_right' & '__fc_left' also works for unsigned numbers.”h]”hŒÙSimilar to find_closest() but ‘a’ is expected to be sorted in descending order. The iteration is done in reverse order, so that the comparison of ‘__fc_right’ & ‘__fc_left’ also works for unsigned numbers.”…”�”}”(hj¾àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K=hjÕßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒPTR_IF (C macro)”Œc.PTR_IF”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPTR_IF”h]”hù)�”}”(hŒPTR_IF”h]”hÿ)�”}”(hŒPTR_IF”h]”j)�”}”(hjçàh]”hŒPTR_IF”…”�”}”(hjñàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíàubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjéàh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KVubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjåàh²hh³jáh´KVubah}”(h]”jààah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jáh´KVhjâàh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjâàh²hh³jáh´KVubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjájHjájI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``PTR_IF (cond, ptr)``”h]”jS)�”}”(hj#áh]”hŒPTR_IF (cond, ptr)”…”�”}”(hj%áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!áubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KXhjøÊh²hubji)�”}”(hŒ?evaluate to **ptr** if **cond** is true, or to NULL otherwise. ”h]”jM)�”}”(hŒ>evaluate to **ptr** if **cond** is true, or to NULL otherwise.”h]”(hŒ evaluate to ”…”�”}”(hj=áh²hh³Nh´NubjŽ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hjEáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=áubhŒ if ”…”�”}”(hj=áh²hh³Nh´NubjŽ)�”}”(hŒ**cond**”h]”hŒcond”…”�”}”(hjWáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=áubhŒ is true, or to NULL otherwise.”…”�”}”(hj=áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KVhj9áubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³joáh´KVhjøÊh²hubj„)�”}”(hX]**Parameters** ``cond`` A conditional, usually in a form of IS_ENABLED(CONFIG_FOO) ``ptr`` A pointer to assign if **cond** is true. **Description** PTR_IF(IS_ENABLED(CONFIG_FOO), ptr) evaluates to **ptr** if CONFIG_FOO is set to 'y' or 'm', or to NULL otherwise. The **ptr** argument must be a pointer. The macro can be very useful to help compiler dropping dead code. For instance, consider the following:: #ifdef CONFIG_FOO_SUSPEND static int foo_suspend(struct device *dev) { ... } #endif static struct pm_ops foo_ops = { #ifdef CONFIG_FOO_SUSPEND .suspend = foo_suspend, #endif }; While this works, the foo_suspend() macro is compiled conditionally, only when CONFIG_FOO_SUSPEND is set. This is problematic, as there could be a build bug in this function, we wouldn't have a way to know unless the configuration option is set. An alternative is to declare foo_suspend() always, but mark it as __maybe_unused. This works, but the __maybe_unused attribute is required to instruct the compiler that the function may not be referenced anywhere, and is safe to remove without making a fuss about it. This makes the programmer responsible for tagging the functions that can be garbage-collected. With the macro it is possible to write the following:: static int foo_suspend(struct device *dev) { ... } static struct pm_ops foo_ops = { .suspend = PTR_IF(IS_ENABLED(CONFIG_FOO_SUSPEND), foo_suspend), }; The foo_suspend() function will now be automatically dropped by the compiler, and it does not require any specific attribute.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj|áh]”hŒ Parameters”…”�”}”(hj~áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzáubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KZhjváubj¤)�”}”(hhh]”(j©)�”}”(hŒD``cond`` A conditional, usually in a form of IS_ENABLED(CONFIG_FOO) ”h]”(j¯)�”}”(hŒ``cond``”h]”jS)�”}”(hj›áh]”hŒcond”…”�”}”(hj�áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj™áubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KWhj•áubjÉ)�”}”(hhh]”jM)�”}”(hŒ:A conditional, usually in a form of IS_ENABLED(CONFIG_FOO)”h]”hŒ:A conditional, usually in a form of IS_ENABLED(CONFIG_FOO)”…”�”}”(hj´áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j°áh´KWhj±áubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj•áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j°áh´KWhj’áubj©)�”}”(hŒ1``ptr`` A pointer to assign if **cond** is true. ”h]”(j¯)�”}”(hŒ``ptr``”h]”jS)�”}”(hjÔáh]”hŒptr”…”�”}”(hjÖáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÒáubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KXhjÎáubjÉ)�”}”(hhh]”jM)�”}”(hŒ(A pointer to assign if **cond** is true.”h]”(hŒA pointer to assign if ”…”�”}”(hjíáh²hh³Nh´NubjŽ)�”}”(hŒ**cond**”h]”hŒcond”…”�”}”(hjõáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjíáubhŒ is true.”…”�”}”(hjíáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jéáh´KXhjêáubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÎáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jéáh´KXhj’áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjváubjM)�”}”(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&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KZhjváubjM)�”}”(hŒšPTR_IF(IS_ENABLED(CONFIG_FOO), ptr) evaluates to **ptr** if CONFIG_FOO is set to 'y' or 'm', or to NULL otherwise. The **ptr** argument must be a pointer.”h]”(hŒ1PTR_IF(IS_ENABLED(CONFIG_FOO), ptr) evaluates to ”…”�”}”(hj7âh²hh³Nh´NubjŽ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hj?âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7âubhŒG if CONFIG_FOO is set to ‘y’ or ‘m’, or to NULL otherwise. The ”…”�”}”(hj7âh²hh³Nh´NubjŽ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hjQâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7âubhŒ argument must be a pointer.”…”�”}”(hj7âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KYhjváubjM)�”}”(hŒAThe macro can be very useful to help compiler dropping dead code.”h]”hŒAThe macro can be very useful to help compiler dropping dead code.”…”�”}”(hjjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K\hjváubjM)�”}”(hŒ&For instance, consider the following::”h]”hŒ%For instance, consider the following:”…”�”}”(hjyâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K^hjváubjÅ)�”}”(hŒ¸#ifdef CONFIG_FOO_SUSPEND static int foo_suspend(struct device *dev) { ... } #endif static struct pm_ops foo_ops = { #ifdef CONFIG_FOO_SUSPEND .suspend = foo_suspend, #endif };”h]”hŒ¸#ifdef CONFIG_FOO_SUSPEND static int foo_suspend(struct device *dev) { ... } #endif static struct pm_ops foo_ops = { #ifdef CONFIG_FOO_SUSPEND .suspend = foo_suspend, #endif };”…”�”}”hjˆâsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K`hjváubjM)�”}”(hŒõWhile this works, the foo_suspend() macro is compiled conditionally, only when CONFIG_FOO_SUSPEND is set. This is problematic, as there could be a build bug in this function, we wouldn't have a way to know unless the configuration option is set.”h]”hŒ÷While this works, the foo_suspend() macro is compiled conditionally, only when CONFIG_FOO_SUSPEND is set. This is problematic, as there could be a build bug in this function, we wouldn’t have a way to know unless the configuration option is set.”…”�”}”(hj—âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KmhjváubjM)�”}”(hXjAn alternative is to declare foo_suspend() always, but mark it as __maybe_unused. This works, but the __maybe_unused attribute is required to instruct the compiler that the function may not be referenced anywhere, and is safe to remove without making a fuss about it. This makes the programmer responsible for tagging the functions that can be garbage-collected.”h]”hXjAn alternative is to declare foo_suspend() always, but mark it as __maybe_unused. This works, but the __maybe_unused attribute is required to instruct the compiler that the function may not be referenced anywhere, and is safe to remove without making a fuss about it. This makes the programmer responsible for tagging the functions that can be garbage-collected.”…”�”}”(hj¦âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KrhjváubjM)�”}”(hŒ6With the macro it is possible to write the following::”h]”hŒ5With the macro it is possible to write the following:”…”�”}”(hjµâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KyhjváubjÅ)�”}”(hŒžstatic int foo_suspend(struct device *dev) { ... } static struct pm_ops foo_ops = { .suspend = PTR_IF(IS_ENABLED(CONFIG_FOO_SUSPEND), foo_suspend), };”h]”hŒžstatic int foo_suspend(struct device *dev) { ... } static struct pm_ops foo_ops = { .suspend = PTR_IF(IS_ENABLED(CONFIG_FOO_SUSPEND), foo_suspend), };”…”�”}”hjÄâsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K{hjváubjM)�”}”(hŒ}The foo_suspend() function will now be automatically dropped by the compiler, and it does not require any specific attribute.”h]”hŒ}The foo_suspend() function will now be automatically dropped by the compiler, and it does not require any specific attribute.”…”�”}”(hjÓâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K„hjváubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒu64_to_user_ptr (C macro)”Œc.u64_to_user_ptr”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒu64_to_user_ptr”h]”hù)�”}”(hŒu64_to_user_ptr”h]”hÿ)�”}”(hŒu64_to_user_ptr”h]”j)�”}”(hjüâh]”hŒu64_to_user_ptr”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjãubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjþâh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K‹ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjúâh²hh³jãh´K‹ubah}”(h]”jõâah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jãh´K‹hj÷âh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj÷âh²hh³jãh´K‹ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj2ãjHj2ãjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``u64_to_user_ptr (x)``”h]”jS)�”}”(hj8ãh]”hŒu64_to_user_ptr (x)”…”�”}”(hj:ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj6ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K�hjøÊh²hubji)�”}”(hŒ>cast a pointer passed as u64 from user space to void __user * ”h]”jM)�”}”(hŒ=cast a pointer passed as u64 from user space to void __user *”h]”hŒ=cast a pointer passed as u64 from user space to void __user *”…”�”}”(hjRãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K‹hjNãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j`ãh´K‹hjøÊh²hubj„)�”}”(hŒó**Parameters** ``x`` The u64 value from user space, usually via IOCTL **Description** u64_to_user_ptr() simply casts a pointer passed as u64 from user space to void __user * correctly. Using this lets us get rid of all the tiresome casts.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjmãh]”hŒ Parameters”…”�”}”(hjoãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkãubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K�hjgãubj¤)�”}”(hhh]”j©)�”}”(hŒ7``x`` The u64 value from user space, usually via IOCTL ”h]”(j¯)�”}”(hŒ``x``”h]”jS)�”}”(hjŒãh]”hŒx”…”�”}”(hjŽãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŠãubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KŒhj†ãubjÉ)�”}”(hhh]”jM)�”}”(hŒ0The u64 value from user space, usually via IOCTL”h]”hŒ0The u64 value from user space, usually via IOCTL”…”�”}”(hj¥ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjgãubjM)�”}”(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&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KŽhjgãubjM)�”}”(hŒ˜u64_to_user_ptr() simply casts a pointer passed as u64 from user space to void __user * correctly. Using this lets us get rid of all the tiresome casts.”h]”hŒ˜u64_to_user_ptr() simply casts a pointer passed as u64 from user space to void __user * correctly. Using this lets us get rid of all the tiresome casts.”…”�”}”(hjÝãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K�hjgãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒis_insidevar (C macro)”Œc.is_insidevar”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ is_insidevar”h]”hù)�”}”(hŒ is_insidevar”h]”hÿ)�”}”(hŒ is_insidevar”h]”j)�”}”(hjäh]”hŒ is_insidevar”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj äubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjäh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K˜ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjäh²hh³j#äh´K˜ubah}”(h]”jÿãah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j#äh´K˜hjäh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjäh²hh³j#äh´K˜ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj<äjHj<äjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``is_insidevar (ptr, var)``”h]”jS)�”}”(hjBäh]”hŒis_insidevar (ptr, var)”…”�”}”(hjDäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj@äubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KšhjøÊh²hubji)�”}”(hŒ=check if the **ptr** points inside the **var** memory range. ”h]”jM)�”}”(hŒthe variable which address and size identify the memory range.”h]”hŒ>the variable which address and size identify the memory range.”…”�”}”(hj åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj•äubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj.åh]”hŒ Description”…”�”}”(hj0åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,åubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´Kœhj•äubjM)�”}”(hŒ^Evaluates to true if the address in **ptr** lies within the memory range allocated to **var**.”h]”(hŒ$Evaluates to true if the address in ”…”�”}”(hjDåh²hh³Nh´NubjŽ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hjLåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDåubhŒ+ lies within the memory range allocated to ”…”�”}”(hjDåh²hh³Nh´NubjŽ)�”}”(hŒ**var**”h]”hŒvar”…”�”}”(hj^åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDåubhŒ.”…”�”}”(hjDåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K›hj•äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒupper_32_bits (C macro)”Œc.upper_32_bits”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ upper_32_bits”h]”hù)�”}”(hŒ upper_32_bits”h]”hÿ)�”}”(hŒ upper_32_bits”h]”j)�”}”(hj‘åh]”hŒ upper_32_bits”…”�”}”(hj›åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—åubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj“åh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�åh²hh³j®åh´Kubah}”(h]”jŠåah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j®åh´KhjŒåh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŒåh²hh³j®åh´Kubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjÇåjHjÇåjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``upper_32_bits (n)``”h]”jS)�”}”(hjÍåh]”hŒupper_32_bits (n)”…”�”}”(hjÏåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjËåubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K hjøÊh²hubji)�”}”(hŒreturn bits 32-63 of a number ”h]”jM)�”}”(hŒreturn bits 32-63 of a number”h]”hŒreturn bits 32-63 of a number”…”�”}”(hjçåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Khjãåubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jõåh´KhjøÊh²hubj„)�”}”(hŒÛ**Parameters** ``n`` the number we're accessing **Description** A basic shift-right of a 64- or 32-bit quantity. Use this to suppress the "right shift count >= width of type" warning when that quantity is 32-bits.”h]”(jM)�”}”(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&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K hjüåubj¤)�”}”(hhh]”j©)�”}”(hŒ!``n`` the number we're accessing ”h]”(j¯)�”}”(hŒ``n``”h]”jS)�”}”(hj!æh]”hŒn”…”�”}”(hj#æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´KhjæubjÉ)�”}”(hhh]”jM)�”}”(hŒthe number we're accessing”h]”hŒthe number we’re accessing”…”�”}”(hj:æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6æh´Khj7æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6æh´Khjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjüåubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj\æh]”hŒ Description”…”�”}”(hj^æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZæubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K hjüåubjM)�”}”(hŒ–A basic shift-right of a 64- or 32-bit quantity. Use this to suppress the "right shift count >= width of type" warning when that quantity is 32-bits.”h]”hŒšA basic shift-right of a 64- or 32-bit quantity. Use this to suppress the “right shift count >= width of typeâ€� warning when that quantity is 32-bits.”…”�”}”(hjræh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K hjüåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒlower_32_bits (C macro)”Œc.lower_32_bits”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ lower_32_bits”h]”hù)�”}”(hŒ lower_32_bits”h]”hÿ)�”}”(hŒ lower_32_bits”h]”j)�”}”(hj›æh]”hŒ lower_32_bits”…”�”}”(hj¥æh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡æubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�æh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj™æh²hh³j¸æh´Kubah}”(h]”j”æah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¸æh´Khj–æh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–æh²hh³j¸æh´Kubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjÑæjHjÑæjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``lower_32_bits (n)``”h]”jS)�”}”(hj׿h]”hŒlower_32_bits (n)”…”�”}”(hjÙæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÕæubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´KhjøÊh²hubji)�”}”(hŒreturn bits 0-31 of a number ”h]”jM)�”}”(hŒreturn bits 0-31 of a number”h]”hŒreturn bits 0-31 of a number”…”�”}”(hjñæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Khjíæubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jÿæh´KhjøÊh²hubj„)�”}”(hŒ2**Parameters** ``n`` the number we're accessing”h]”(jM)�”}”(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&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Khjçubj¤)�”}”(hhh]”j©)�”}”(hŒ ``n`` the number we're accessing”h]”(j¯)�”}”(hŒ``n``”h]”jS)�”}”(hj+çh]”hŒn”…”�”}”(hj-çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj)çubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Khj%çubjÉ)�”}”(hhh]”jM)�”}”(hŒthe number we're accessing”h]”hŒthe number we’re accessing”…”�”}”(hjDçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´KhjAçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j@çh´Khj"çubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒupper_16_bits (C macro)”Œc.upper_16_bits”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ upper_16_bits”h]”hù)�”}”(hŒ upper_16_bits”h]”hÿ)�”}”(hŒ upper_16_bits”h]”j)�”}”(hjçh]”hŒ upper_16_bits”…”�”}”(hj‰çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…çubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�çh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj}çh²hh³jœçh´Kubah}”(h]”jxçah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jœçh´Khjzçh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjzçh²hh³jœçh´Kubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjµçjHjµçjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``upper_16_bits (n)``”h]”jS)�”}”(hj»çh]”hŒupper_16_bits (n)”…”�”}”(hj½çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¹çubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´KhjøÊh²hubji)�”}”(hŒreturn bits 16-31 of a number ”h]”jM)�”}”(hŒreturn bits 16-31 of a number”h]”hŒreturn bits 16-31 of a number”…”�”}”(hjÕçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´KhjÑçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jãçh´KhjøÊh²hubj„)�”}”(hŒ2**Parameters** ``n`` the number we're accessing”h]”(jM)�”}”(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&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Khjêçubj¤)�”}”(hhh]”j©)�”}”(hŒ ``n`` the number we're accessing”h]”(j¯)�”}”(hŒ``n``”h]”jS)�”}”(hjèh]”hŒn”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj èubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Khj èubjÉ)�”}”(hhh]”jM)�”}”(hŒthe number we're accessing”h]”hŒthe number we’re accessing”…”�”}”(hj(èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Khj%èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j$èh´Khjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjêçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒlower_16_bits (C macro)”Œc.lower_16_bits”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ lower_16_bits”h]”hù)�”}”(hŒ lower_16_bits”h]”hÿ)�”}”(hŒ lower_16_bits”h]”j)�”}”(hjcèh]”hŒ lower_16_bits”…”�”}”(hjmèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjièubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjeèh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjaèh²hh³j€èh´Kubah}”(h]”j\èah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j€èh´Khj^èh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj^èh²hh³j€èh´Kubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj™èjHj™èjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``lower_16_bits (n)``”h]”jS)�”}”(hjŸèh]”hŒlower_16_bits (n)”…”�”}”(hj¡èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�èubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´KhjøÊh²hubji)�”}”(hŒreturn bits 0-15 of a number ”h]”jM)�”}”(hŒreturn bits 0-15 of a number”h]”hŒreturn bits 0-15 of a number”…”�”}”(hj¹èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Khjµèubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jÇèh´KhjøÊh²hubj„)�”}”(hŒ2**Parameters** ``n`` the number we're accessing”h]”(jM)�”}”(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&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K!hjÎèubj¤)�”}”(hhh]”j©)�”}”(hŒ ``n`` the number we're accessing”h]”(j¯)�”}”(hŒ``n``”h]”jS)�”}”(hjóèh]”hŒn”…”�”}”(hjõèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjñèubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K#hjíèubjÉ)�”}”(hhh]”jM)�”}”(hŒthe number we're accessing”h]”hŒthe number we’re accessing”…”�”}”(hj éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Khj é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Îèubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒREPEAT_BYTE (C macro)”Œ c.REPEAT_BYTE”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ REPEAT_BYTE”h]”hù)�”}”(hŒ REPEAT_BYTE”h]”hÿ)�”}”(hŒ REPEAT_BYTE”h]”j)�”}”(hjGéh]”hŒ REPEAT_BYTE”…”�”}”(hjQéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMéubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjIéh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K#ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjEéh²hh³jdéh´K#ubah}”(h]”j@éah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jdéh´K#hjBéh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjBéh²hh³jdéh´K#ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj}éjHj}éjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``REPEAT_BYTE (x)``”h]”jS)�”}”(hjƒéh]”hŒREPEAT_BYTE (x)”…”�”}”(hj…éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�éubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K%hjøÊh²hubji)�”}”(hŒ@repeat the value **x** multiple times as an unsigned long value ”h]”jM)�”}”(hŒ?repeat the value **x** multiple times as an unsigned long value”h]”(hŒrepeat the value ”…”�”}”(hj�éh²hh³Nh´NubjŽ)�”}”(hŒ**x**”h]”hŒx”…”�”}”(hj¥éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�éubhŒ) multiple times as an unsigned long value”…”�”}”(hj�éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K#hj™éubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j½éh´K#hjøÊh²hubj„)�”}”(hŒv**Parameters** ``x`` value to repeat **NOTE** **x** is not checked for > 0xff; larger values produce odd results.”h]”(jM)�”}”(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&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K'hjÄéubj¤)�”}”(hhh]”j©)�”}”(hŒ``x`` value to repeat ”h]”(j¯)�”}”(hŒ``x``”h]”jS)�”}”(hjééh]”hŒx”…”�”}”(hjëéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjçéubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K$hjãéubjÉ)�”}”(hhh]”jM)�”}”(hŒvalue to repeat”h]”hŒvalue to repeat”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ÄéubjM)�”}”(hŒ**NOTE**”h]”jŽ)�”}”(hj$êh]”hŒNOTE”…”�”}”(hj&êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"êubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K&hjÄéubjM)�”}”(hŒC**x** is not checked for > 0xff; larger values produce odd results.”h]”(jŽ)�”}”(hŒ**x**”h]”hŒx”…”�”}”(hj>êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:êubhŒ> is not checked for > 0xff; larger values produce odd results.”…”�”}”(hj:êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K&hjÄéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒREPEAT_BYTE_U32 (C macro)”Œc.REPEAT_BYTE_U32”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒREPEAT_BYTE_U32”h]”hù)�”}”(hŒREPEAT_BYTE_U32”h]”hÿ)�”}”(hŒREPEAT_BYTE_U32”h]”j)�”}”(hjqêh]”hŒREPEAT_BYTE_U32”…”�”}”(hj{êh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwêubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjsêh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K+ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjoêh²hh³jŽêh´K+ubah}”(h]”jjêah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŽêh´K+hjlêh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjlêh²hh³jŽêh´K+ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj§êjHj§êjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´NubjM)�”}”(hŒ``REPEAT_BYTE_U32 (x)``”h]”jS)�”}”(hj­êh]”hŒREPEAT_BYTE_U32 (x)”…”�”}”(hj¯êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj«êubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K-hjøÊh²hubji)�”}”(hŒ5repeat the value **x** multiple times as a u32 value ”h]”jM)�”}”(hŒ4repeat the value **x** multiple times as a u32 value”h]”(hŒrepeat the value ”…”�”}”(hjÇêh²hh³Nh´NubjŽ)�”}”(hŒ**x**”h]”hŒx”…”�”}”(hjÏêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÇêubhŒ multiple times as a u32 value”…”�”}”(hjÇêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K+hjÃêubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jçêh´K+hjøÊh²hubj„)�”}”(hŒv**Parameters** ``x`` value to repeat **NOTE** **x** is not checked for > 0xff; larger values produce odd results.”h]”(jM)�”}”(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&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K/hjîêubj¤)�”}”(hhh]”j©)�”}”(hŒ``x`` value to repeat ”h]”(j¯)�”}”(hŒ``x``”h]”jS)�”}”(hjëh]”hŒx”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K,hj ëubjÉ)�”}”(hhh]”jM)�”}”(hŒvalue to repeat”h]”hŒvalue to repeat”…”�”}”(hj,ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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îêubjM)�”}”(hŒ**NOTE**”h]”jŽ)�”}”(hjNëh]”hŒNOTE”…”�”}”(hjPëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLëubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K.hjîêubjM)�”}”(hŒC**x** is not checked for > 0xff; larger values produce odd results.”h]”(jŽ)�”}”(hŒ**x**”h]”hŒx”…”�”}”(hjhëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdëubhŒ> is not checked for > 0xff; larger values produce odd results.”…”�”}”(hjdëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´K.hjîêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒconsole_list_lock (C function)”Œc.console_list_lock”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid console_list_lock (void)”h]”hù)�”}”(hŒvoid console_list_lock(void)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¡ëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�ëh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KóubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°ëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�ëh²hh³j¯ëh´Kóubhÿ)�”}”(hŒconsole_list_lock”h]”j)�”}”(hŒconsole_list_lock”h]”hŒconsole_list_lock”…”�”}”(hjÂëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾ëubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�ëh²hh³j¯ëh´Kóubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÞëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÚëubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÖëubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�ëh²hh³j¯ëh´Kóubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj™ëh²hh³j¯ëh´Kóubah}”(h]”j”ëah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¯ëh´Kóhj–ëh²hubj4)�”}”(hhh]”jM)�”}”(hŒLock the console list”h]”hŒLock the console list”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Kóhjìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–ëh²hh³j¯ëh´Kóubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj ìjHj ìjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒd**Parameters** ``void`` no arguments **Description** For console list or console->flags updates”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´K÷hj$ìubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hjIìh]”hŒvoid”…”�”}”(hjKìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjGìubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjCìubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjbìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j^ìh´Khj_ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjCìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j^ìh´Khj@ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj$ìubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Khj$ìubjM)�”}”(hŒ*For console list or console->flags updates”h]”hŒ*For console list or console->flags updates”…”�”}”(hjšìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Kôhj$ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ console_list_unlock (C function)”Œc.console_list_unlock”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid console_list_unlock (void)”h]”hù)�”}”(hŒvoid console_list_unlock(void)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÉìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÅìh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”u•h1jPhjÅìh²hh³j×ìh´M ubhÿ)�”}”(hŒconsole_list_unlock”h]”j)�”}”(hŒconsole_list_unlock”h]”hŒconsole_list_unlock”…”�”}”(hjêìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæìubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÅìh²hh³j×ìh´M ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjíubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjþìubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÅìh²hh³j×ìh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÁìh²hh³j×ìh´M ubah}”(h]”j¼ìah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j×ìh´M hj¾ìh²hubj4)�”}”(hhh]”jM)�”}”(hŒUnlock the console list”h]”hŒUnlock the console list”…”�”}”(hj0íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M hj-íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¾ìh²hh³j×ìh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjHíjHjHíjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒ\**Parameters** ``void`` no arguments **Description** Counterpart to console_list_lock()”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MhjLíubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hjqíh]”hŒvoid”…”�”}”(hjsíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoíubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjkíubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjŠíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j†íh´Khj‡íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjkíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j†íh´Khjhíubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjLíubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjLíubjM)�”}”(hŒ"Counterpart to console_list_lock()”h]”hŒ"Counterpart to console_list_lock()”…”�”}”(hjÂíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M hjLíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#console_srcu_read_lock (C function)”Œc.console_srcu_read_lock”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ!int console_srcu_read_lock (void)”h]”hù)�”}”(hŒ int console_srcu_read_lock(void)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjñíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjííh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjííh²hh³jÿíh´Mubhÿ)�”}”(hŒconsole_srcu_read_lock”h]”j)�”}”(hŒconsole_srcu_read_lock”h]”hŒconsole_srcu_read_lock”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjííh²hh³jÿíh´Mubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.îh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj*îubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj&îubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjííh²hh³jÿíh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjéíh²hh³jÿíh´Mubah}”(h]”jäíah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÿíh´Mhjæíh²hubj4)�”}”(hhh]”jM)�”}”(hŒ9Register a new reader for the SRCU-protected console list”h]”hŒ9Register a new reader for the SRCU-protected console list”…”�”}”(hjXîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MhjUîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjæíh²hh³jÿíh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjpîjHjpîjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒÉ**Parameters** ``void`` no arguments **Description** Use for_each_console_srcu() to iterate the console list **Context** Any context. **Return** A cookie to pass to console_srcu_read_unlock().”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjzîh]”hŒ Parameters”…”�”}”(hj|îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxîubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mhjtîubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj™îh]”hŒvoid”…”�”}”(hj›îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj—îubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Khj“îubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj²îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j®îh´Khj¯îubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj“îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j®îh´Khj�îubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjtîubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjtîubjM)�”}”(hŒ7Use for_each_console_srcu() to iterate the console list”h]”hŒ7Use for_each_console_srcu() to iterate the console list”…”�”}”(hjêîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MhjtîubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjûîh]”hŒContext”…”�”}”(hjýîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjùîubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MhjtîubjM)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MhjtîubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj"ïh]”hŒReturn”…”�”}”(hj$ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MhjtîubjM)�”}”(hŒ/A cookie to pass to console_srcu_read_unlock().”h]”hŒ/A cookie to pass to console_srcu_read_unlock().”…”�”}”(hj8ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mhjtîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%console_srcu_read_unlock (C function)”Œc.console_srcu_read_unlock”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*void console_srcu_read_unlock (int cookie)”h]”hù)�”}”(hŒ)void console_srcu_read_unlock(int cookie)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjgïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjcïh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M(ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcïh²hh³juïh´M(ubhÿ)�”}”(hŒconsole_srcu_read_unlock”h]”j)�”}”(hŒconsole_srcu_read_unlock”h]”hŒconsole_srcu_read_unlock”…”�”}”(hjˆïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„ïubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjcïh²hh³juïh´M(ubj4)�”}”(hŒ (int cookie)”h]”j:)�”}”(hŒ int cookie”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¤ïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj ïubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²ïh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ïubj)�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hjÀïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjœïubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjcïh²hh³juïh´M(ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj_ïh²hh³juïh´M(ubah}”(h]”jZïah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³juïh´M(hj\ïh²hubj4)�”}”(hhh]”jM)�”}”(hŒ=Unregister an old reader from the SRCU-protected console list”h]”hŒ=Unregister an old reader from the SRCU-protected console list”…”�”}”(hjêïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M(hjçïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj\ïh²hh³juïh´M(ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjðjHjðjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒˆ**Parameters** ``int cookie`` cookie returned from console_srcu_read_lock() **Description** Counterpart to console_srcu_read_lock()”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M,hjðubj¤)�”}”(hhh]”j©)�”}”(hŒ=``int cookie`` cookie returned from console_srcu_read_lock() ”h]”(j¯)�”}”(hŒ``int cookie``”h]”jS)�”}”(hj+ðh]”hŒ int cookie”…”�”}”(hj-ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj)ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M*hj%ðubjÉ)�”}”(hhh]”jM)�”}”(hŒ-cookie returned from console_srcu_read_lock()”h]”hŒ-cookie returned from console_srcu_read_lock()”…”�”}”(hjDðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@ðh´M*hjAð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£hjðubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M,hjðubjM)�”}”(hŒ'Counterpart to console_srcu_read_lock()”h]”hŒ'Counterpart to console_srcu_read_lock()”…”�”}”(hj|ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M+hjðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ7match_devname_and_update_preferred_console (C function)”Œ,c.match_devname_and_update_preferred_console”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒgint match_devname_and_update_preferred_console (const char *devname, const char *name, const short idx)”h]”hù)�”}”(hŒfint match_devname_and_update_preferred_console(const char *devname, const char *name, const short idx)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj«ðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj§ðh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M˜ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§ðh²hh³j¹ðh´M˜ ubhÿ)�”}”(hŒ*match_devname_and_update_preferred_console”h]”j)�”}”(hŒ*match_devname_and_update_preferred_console”h]”hŒ*match_devname_and_update_preferred_console”…”�”}”(hjÌðh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÈðubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj§ðh²hh³j¹ðh´M˜ ubj4)�”}”(hŒ8(const char *devname, const char *name, const short idx)”h]”(j:)�”}”(hŒconst char *devname”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjèðh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjäðubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjäðubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjäðubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjäðubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjäðubj)�”}”(hŒdevname”h]”hŒdevname”…”�”}”(hj,ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjàðubj:)�”}”(hŒconst char *name”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjEñh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjAñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjAñubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj`ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjAñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjAñubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj|ñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjAñubj)�”}”(hŒname”h]”hŒname”…”�”}”(hj‰ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjàðubj:)�”}”(hŒconst short idx”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj¢ñh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjžñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯ñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjžñubjü)�”}”(hŒshort”h]”hŒshort”…”�”}”(hj½ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjžñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjžñubj)�”}”(hŒidx”h]”hŒidx”…”�”}”(hjÙñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjžñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjàðubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj§ðh²hh³j¹ðh´M˜ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj£ðh²hh³j¹ðh´M˜ ubah}”(h]”jžðah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¹ðh´M˜ hj ðh²hubj4)�”}”(hhh]”jM)�”}”(hŒ:Update a preferred console when matching devname is found.”h]”hŒ:Update a preferred console when matching devname is found.”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M˜ hjòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj ðh²hh³j¹ðh´M˜ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjòjHjòjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hX**Parameters** ``const char *devname`` DEVNAME:0.0 style device name ``const char *name`` Name of the corresponding console driver, e.g. "ttyS" ``const short idx`` Console index, e.g. port number. **Description** The function checks whether a device with the given **devname** is preferred via the console=DEVNAME:0.0 command line option. It fills the missing console driver name and console index so that a later register_console() call could find (match) and enable this device. It might be used when a driver subsystem initializes particular devices with already known DEVNAME:0.0 style names. And it could predict which console driver name and index this device would later get associated with. **Return** 0 on success, negative error code on failure.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mœ hjòubj¤)�”}”(hhh]”(j©)�”}”(hŒ6``const char *devname`` DEVNAME:0.0 style device name ”h]”(j¯)�”}”(hŒ``const char *devname``”h]”jS)�”}”(hjDòh]”hŒconst char *devname”…”�”}”(hjFòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBòubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mš hj>òubjÉ)�”}”(hhh]”jM)�”}”(hŒDEVNAME:0.0 style device name”h]”hŒDEVNAME:0.0 style device name”…”�”}”(hj]òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒK``const char *name`` Name of the corresponding console driver, e.g. "ttyS" ”h]”(j¯)�”}”(hŒ``const char *name``”h]”jS)�”}”(hj}òh]”hŒconst char *name”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{òubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M› hjwòubjÉ)�”}”(hhh]”jM)�”}”(hŒ5Name of the corresponding console driver, e.g. "ttyS"”h]”hŒ9Name of the corresponding console driver, e.g. “ttySâ€�”…”�”}”(hj–òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j’òh´M› hj“òubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjwòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’òh´M› hj;òubj©)�”}”(hŒ5``const short idx`` Console index, e.g. port number. ”h]”(j¯)�”}”(hŒ``const short idx``”h]”jS)�”}”(hj¶òh]”hŒconst short idx”…”�”}”(hj¸òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj´òubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mœ hj°òubjÉ)�”}”(hhh]”jM)�”}”(hŒ Console index, e.g. port number.”h]”hŒ Console index, e.g. port number.”…”�”}”(hjÏòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjòubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mž hjòubjM)�”}”(hX The function checks whether a device with the given **devname** is preferred via the console=DEVNAME:0.0 command line option. It fills the missing console driver name and console index so that a later register_console() call could find (match) and enable this device.”h]”(hŒ4The function checks whether a device with the given ”…”�”}”(hjóh²hh³Nh´NubjŽ)�”}”(hŒ **devname**”h]”hŒdevname”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjóubhŒÌ is preferred via the console=DEVNAME:0.0 command line option. It fills the missing console driver name and console index so that a later register_console() call could find (match) and enable this device.”…”�”}”(hjóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M� hjòubjM)�”}”(hŒÙIt might be used when a driver subsystem initializes particular devices with already known DEVNAME:0.0 style names. And it could predict which console driver name and index this device would later get associated with.”h]”hŒÙIt might be used when a driver subsystem initializes particular devices with already known DEVNAME:0.0 style names. And it could predict which console driver name and index this device would later get associated with.”…”�”}”(hj(óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M£ hjòubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj9óh]”hŒReturn”…”�”}”(hj;óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7óubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M¨ hjòubjM)�”}”(hŒ-0 on success, negative error code on failure.”h]”hŒ-0 on success, negative error code on failure.”…”�”}”(hjOóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M© hjòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒconsole_lock (C function)”Œc.console_lock”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid console_lock (void)”h]”hù)�”}”(hŒvoid console_lock(void)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj~óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjzóh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MC ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�óh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjzóh²hh³jŒóh´MC ubhÿ)�”}”(hŒ console_lock”h]”j)�”}”(hŒ console_lock”h]”hŒ console_lock”…”�”}”(hjŸóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›óubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjzóh²hh³jŒóh´MC ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj»óh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj·óubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj³óubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjzóh²hh³jŒóh´MC ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjvóh²hh³jŒóh´MC ubah}”(h]”jqóah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŒóh´MC hjsóh²hubj4)�”}”(hhh]”jM)�”}”(hŒ)block the console subsystem from printing”h]”hŒ)block the console subsystem from printing”…”�”}”(hjåóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MC hjâóh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjsóh²hh³jŒóh´MC ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjýójHjýójI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒ´**Parameters** ``void`` no arguments **Description** Acquires a lock which guarantees that no consoles will be in or enter their write() callback. Can sleep, returns nothing.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MG hjôubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj&ôh]”hŒvoid”…”�”}”(hj(ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj$ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Khj ôubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj?ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j;ôh´Khj<ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j;ôh´Khjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjôubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjaôh]”hŒ Description”…”�”}”(hjcôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjôubjM)�”}”(hŒ]Acquires a lock which guarantees that no consoles will be in or enter their write() callback.”h]”hŒ]Acquires a lock which guarantees that no consoles will be in or enter their write() callback.”…”�”}”(hjwôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MD hjôubjM)�”}”(hŒCan sleep, returns nothing.”h]”hŒCan sleep, returns nothing.”…”�”}”(hj†ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MG hjôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒconsole_trylock (C function)”Œc.console_trylock”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒint console_trylock (void)”h]”hù)�”}”(hŒint console_trylock(void)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjµôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj±ôh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MY ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±ôh²hh³jÃôh´MY ubhÿ)�”}”(hŒconsole_trylock”h]”j)�”}”(hŒconsole_trylock”h]”hŒconsole_trylock”…”�”}”(hjÖôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒôubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj±ôh²hh³jÃôh´MY ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjòôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjîôubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjêôubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj±ôh²hh³jÃôh´MY ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj­ôh²hh³jÃôh´MY ubah}”(h]”j¨ôah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÃôh´MY hjªôh²hubj4)�”}”(hhh]”jM)�”}”(hŒ0try to block the console subsystem from printing”h]”hŒ0try to block the console subsystem from printing”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MY hjõh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjªôh²hh³jÃôh´MY ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj4õjHj4õjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒÚ**Parameters** ``void`` no arguments **Description** Try to acquire a lock which guarantees that no consoles will be in or enter their write() callback. returns 1 on success, and 0 on failure to acquire the lock.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M] hj8õubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj]õh]”hŒvoid”…”�”}”(hj_õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj[õubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjWõubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjvõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jrõh´Khjsõubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjWõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jrõh´KhjTõubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj8õubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Khj8õubjM)�”}”(hŒcTry to acquire a lock which guarantees that no consoles will be in or enter their write() callback.”h]”hŒcTry to acquire a lock which guarantees that no consoles will be in or enter their write() callback.”…”�”}”(hj®õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MZ hj8õubjM)�”}”(hŒ;returns 1 on success, and 0 on failure to acquire the lock.”h]”hŒ;returns 1 on success, and 0 on failure to acquire the lock.”…”�”}”(hj½õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M] hj8õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒconsole_unlock (C function)”Œc.console_unlock”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid console_unlock (void)”h]”hù)�”}”(hŒvoid console_unlock(void)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjìõh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjèõh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MM ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûõh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjèõh²hh³júõh´MM ubhÿ)�”}”(hŒconsole_unlock”h]”j)�”}”(hŒconsole_unlock”h]”hŒconsole_unlock”…”�”}”(hj öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj öubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjèõh²hh³júõh´MM ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj)öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj%öubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj!öubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjèõh²hh³júõh´MM ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjäõh²hh³júõh´MM ubah}”(h]”jßõah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³júõh´MM hjáõh²hubj4)�”}”(hhh]”jM)�”}”(hŒ2unblock the legacy console subsystem from printing”h]”hŒ2unblock the legacy console subsystem from printing”…”�”}”(hjSöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MM hjPöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjáõh²hh³júõh´MM ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjköjHjköjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hXŒ**Parameters** ``void`` no arguments **Description** Releases the console_lock which the caller holds to block printing of the legacy console subsystem. While the console_lock was held, console output may have been buffered by printk(). If this is the case, console_unlock() emits the output on legacy consoles prior to releasing the lock. console_unlock(); may be called from any context.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjuöh]”hŒ Parameters”…”�”}”(hjwöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsöubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MQ hjoöubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj”öh]”hŒvoid”…”�”}”(hj–öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj’öubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjŽöubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj­öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j©öh´Khjªöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŽöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j©öh´Khj‹öubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjoöubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjoöubjM)�”}”(hŒcReleases the console_lock which the caller holds to block printing of the legacy console subsystem.”h]”hŒcReleases the console_lock which the caller holds to block printing of the legacy console subsystem.”…”�”}”(hjåöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MN hjoöubjM)�”}”(hŒºWhile the console_lock was held, console output may have been buffered by printk(). If this is the case, console_unlock() emits the output on legacy consoles prior to releasing the lock.”h]”hŒºWhile the console_lock was held, console output may have been buffered by printk(). If this is the case, console_unlock() emits the output on legacy consoles prior to releasing the lock.”…”�”}”(hjôöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MQ hjoöubjM)�”}”(hŒ1console_unlock(); may be called from any context.”h]”hŒ1console_unlock(); may be called from any context.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MU hjoöubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ+console_force_preferred_locked (C function)”Œ c.console_force_preferred_locked”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9void console_force_preferred_locked (struct console *con)”h]”hù)�”}”(hŒ8void console_force_preferred_locked(struct console *con)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj2÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj.÷h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj.÷h²hh³j@÷h´M÷ubhÿ)�”}”(hŒconsole_force_preferred_locked”h]”j)�”}”(hŒconsole_force_preferred_locked”h]”hŒconsole_force_preferred_locked”…”�”}”(hjS÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO÷ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj.÷h²hh³j@÷h´M÷ubj4)�”}”(hŒ(struct console *con)”h]”j:)�”}”(hŒstruct console *con”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjo÷h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjk÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjk÷ubh)�”}”(hhh]”j)�”}”(hŒconsole”h]”hŒconsole”…”�”}”(hj�÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�÷Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjU÷sbŒ c.console_force_preferred_locked”†”asbuh1hhjk÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjk÷ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj»÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjk÷ubj)�”}”(hŒcon”h]”hŒcon”…”�”}”(hjÈ÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjg÷ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj.÷h²hh³j@÷h´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj*÷h²hh³j@÷h´M÷ubah}”(h]”j%÷ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j@÷h´M÷hj'÷h²hubj4)�”}”(hhh]”jM)�”}”(hŒ$force a registered console preferred”h]”hŒ$force a registered console preferred”…”�”}”(hjò÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M÷hjï÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj'÷h²hh³j@÷h´M÷ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj øjHj øjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒ�**Parameters** ``struct console *con`` The registered console to force preferred. **Description** Must be called under console_list_lock().”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mûhjøubj¤)�”}”(hhh]”j©)�”}”(hŒC``struct console *con`` The registered console to force preferred. ”h]”(j¯)�”}”(hŒ``struct console *con``”h]”jS)�”}”(hj3øh]”hŒstruct console *con”…”�”}”(hj5øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1øubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Møhj-øubjÉ)�”}”(hhh]”jM)�”}”(hŒ*The registered console to force preferred.”h]”hŒ*The registered console to force preferred.”…”�”}”(hjLøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jHøh´MøhjIøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj-øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jHøh´Møhj*øubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjøubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjnøh]”hŒ Description”…”�”}”(hjpøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjløubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MúhjøubjM)�”}”(hŒ)Must be called under console_list_lock().”h]”hŒ)Must be called under console_list_lock().”…”�”}”(hj„øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mùhjøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#printk_timed_ratelimit (C function)”Œc.printk_timed_ratelimit”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒXbool printk_timed_ratelimit (unsigned long *caller_jiffies, unsigned int interval_msecs)”h]”hù)�”}”(hŒWbool printk_timed_ratelimit(unsigned long *caller_jiffies, unsigned int interval_msecs)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj³øh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¯øh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M–ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁøh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯øh²hh³jÀøh´M–ubhÿ)�”}”(hŒprintk_timed_ratelimit”h]”j)�”}”(hŒprintk_timed_ratelimit”h]”hŒprintk_timed_ratelimit”…”�”}”(hjÓøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏøubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¯øh²hh³jÀøh´M–ubj4)�”}”(hŒ<(unsigned long *caller_jiffies, unsigned int interval_msecs)”h]”(j:)�”}”(hŒunsigned long *caller_jiffies”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjïøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjëøubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýøh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjëøubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjëøubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjëøubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj'ùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjëøubj)�”}”(hŒcaller_jiffies”h]”hŒcaller_jiffies”…”�”}”(hj4ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjëøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjçøubj:)�”}”(hŒunsigned int interval_msecs”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjMùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjIùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[ùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjIùubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjiùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjIùubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjIùubj)�”}”(hŒinterval_msecs”h]”hŒinterval_msecs”…”�”}”(hj…ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjçøubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¯øh²hh³jÀøh´M–ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj«øh²hh³jÀøh´M–ubah}”(h]”j¦øah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÀøh´M–hj¨øh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%caller-controlled printk ratelimiting”h]”hŒ%caller-controlled printk ratelimiting”…”�”}”(hj¯ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M–hj¬ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨øh²hh³jÀøh´M–ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÇùjHjÇùjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hX>**Parameters** ``unsigned long *caller_jiffies`` pointer to caller's state ``unsigned int interval_msecs`` minimum interval between prints **Description** printk_timed_ratelimit() returns true if more than **interval_msecs** milliseconds have elapsed since the last time printk_timed_ratelimit() returned true.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MšhjËùubj¤)�”}”(hhh]”(j©)�”}”(hŒ<``unsigned long *caller_jiffies`` pointer to caller's state ”h]”(j¯)�”}”(hŒ!``unsigned long *caller_jiffies``”h]”jS)�”}”(hjðùh]”hŒunsigned long *caller_jiffies”…”�”}”(hjòùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjîùubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M—hjêùubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to caller's state”h]”hŒpointer to caller’s state”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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 int interval_msecs`` minimum interval between prints ”h]”(j¯)�”}”(hŒ``unsigned int interval_msecs``”h]”jS)�”}”(hj)úh]”hŒunsigned int interval_msecs”…”�”}”(hj+úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj'úubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M˜hj#úubjÉ)�”}”(hhh]”jM)�”}”(hŒminimum interval between prints”h]”hŒminimum interval between prints”…”�”}”(hjBúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjËùubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjdúh]”hŒ Description”…”�”}”(hjfúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbúubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MšhjËùubjM)�”}”(hŒ›printk_timed_ratelimit() returns true if more than **interval_msecs** milliseconds have elapsed since the last time printk_timed_ratelimit() returned true.”h]”(hŒ3printk_timed_ratelimit() returns true if more than ”…”�”}”(hjzúh²hh³Nh´NubjŽ)�”}”(hŒ**interval_msecs**”h]”hŒinterval_msecs”…”�”}”(hj‚úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzúubhŒV milliseconds have elapsed since the last time printk_timed_ratelimit() returned true.”…”�”}”(hjzúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M™hjËùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkmsg_dump_register (C function)”Œc.kmsg_dump_register”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3int kmsg_dump_register (struct kmsg_dumper *dumper)”h]”hù)�”}”(hŒ2int kmsg_dump_register(struct kmsg_dumper *dumper)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj»úh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj·úh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M¯ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊúh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·úh²hh³jÉúh´M¯ubhÿ)�”}”(hŒkmsg_dump_register”h]”j)�”}”(hŒkmsg_dump_register”h]”hŒkmsg_dump_register”…”�”}”(hjÜúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØúubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj·úh²hh³jÉúh´M¯ubj4)�”}”(hŒ(struct kmsg_dumper *dumper)”h]”j:)�”}”(hŒstruct kmsg_dumper *dumper”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjøúh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjôúubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôúubh)�”}”(hhh]”j)�”}”(hŒ kmsg_dumper”h]”hŒ kmsg_dumper”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jûŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÞúsbŒc.kmsg_dump_register”†”asbuh1hhjôúubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6ûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôúubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjDûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjôúubj)�”}”(hŒdumper”h]”hŒdumper”…”�”}”(hjQûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjðúubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj·úh²hh³jÉúh´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj³úh²hh³jÉúh´M¯ubah}”(h]”j®úah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÉúh´M¯hj°úh²hubj4)�”}”(hhh]”jM)�”}”(hŒregister a kernel log dumper.”h]”hŒregister a kernel log dumper.”…”�”}”(hj{ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M¯hjxûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj°úh²hh³jÉúh´M¯ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj“ûjHj“ûjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hX4**Parameters** ``struct kmsg_dumper *dumper`` pointer to the kmsg_dumper structure **Description** Adds a kernel log dumper to the system. The dump callback in the structure will be called when the kernel oopses or panics and must be set. Returns zero on success and ``-EINVAL`` or ``-EBUSY`` otherwise.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M³hj—ûubj¤)�”}”(hhh]”j©)�”}”(hŒD``struct kmsg_dumper *dumper`` pointer to the kmsg_dumper structure ”h]”(j¯)�”}”(hŒ``struct kmsg_dumper *dumper``”h]”jS)�”}”(hj¼ûh]”hŒstruct kmsg_dumper *dumper”…”�”}”(hj¾ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjºûubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M°hj¶ûubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to the kmsg_dumper structure”h]”hŒ$pointer to the kmsg_dumper structure”…”�”}”(hjÕûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj—ûubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M²hj—ûubjM)�”}”(hŒÌAdds a kernel log dumper to the system. The dump callback in the structure will be called when the kernel oopses or panics and must be set. Returns zero on success and ``-EINVAL`` or ``-EBUSY`` otherwise.”h]”(hŒ¨Adds a kernel log dumper to the system. The dump callback in the structure will be called when the kernel oopses or panics and must be set. Returns zero on success and ”…”�”}”(hj üh²hh³Nh´NubjS)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj üubhŒ or ”…”�”}”(hj üh²hh³Nh´NubjS)�”}”(hŒ ``-EBUSY``”h]”hŒ-EBUSY”…”�”}”(hj'üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj üubhŒ otherwise.”…”�”}”(hj üh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M±hj—ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!kmsg_dump_unregister (C function)”Œc.kmsg_dump_unregister”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5int kmsg_dump_unregister (struct kmsg_dumper *dumper)”h]”hù)�”}”(hŒ4int kmsg_dump_unregister(struct kmsg_dumper *dumper)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj`üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj\üh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\üh²hh³jnüh´MÍubhÿ)�”}”(hŒkmsg_dump_unregister”h]”j)�”}”(hŒkmsg_dump_unregister”h]”hŒkmsg_dump_unregister”…”�”}”(hj�üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}üubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj\üh²hh³jnüh´MÍubj4)�”}”(hŒ(struct kmsg_dumper *dumper)”h]”j:)�”}”(hŒstruct kmsg_dumper *dumper”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj�üh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™üubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™üubh)�”}”(hhh]”j)�”}”(hŒ kmsg_dumper”h]”hŒ kmsg_dumper”…”�”}”(hj»üh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j½üŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjƒüsbŒc.kmsg_dump_unregister”†”asbuh1hhj™üubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™üubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjéüh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj™üubj)�”}”(hŒdumper”h]”hŒdumper”…”�”}”(hjöüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj•üubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj\üh²hh³jnüh´MÍubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjXüh²hh³jnüh´MÍubah}”(h]”jSüah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jnüh´MÍhjUüh²hubj4)�”}”(hhh]”jM)�”}”(hŒunregister a kmsg dumper.”h]”hŒunregister a kmsg dumper.”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MÍhjýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjUüh²hh³jnüh´MÍubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj8ýjHj8ýjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒÁ**Parameters** ``struct kmsg_dumper *dumper`` pointer to the kmsg_dumper structure **Description** Removes a dump device from the system. Returns zero on success and ``-EINVAL`` otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjBýh]”hŒ Parameters”…”�”}”(hjDýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MÑhj<ýubj¤)�”}”(hhh]”j©)�”}”(hŒD``struct kmsg_dumper *dumper`` pointer to the kmsg_dumper structure ”h]”(j¯)�”}”(hŒ``struct kmsg_dumper *dumper``”h]”jS)�”}”(hjaýh]”hŒstruct kmsg_dumper *dumper”…”�”}”(hjcýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj_ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MÎhj[ýubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to the kmsg_dumper structure”h]”hŒ$pointer to the kmsg_dumper structure”…”�”}”(hjzýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jvýh´MÎhjwýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj[ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jvýh´MÎhjXýubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj<ýubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MÐhj<ýubjM)�”}”(hŒYRemoves a dump device from the system. Returns zero on success and ``-EINVAL`` otherwise.”h]”(hŒCRemoves a dump device from the system. Returns zero on success and ”…”�”}”(hj²ýh²hh³Nh´NubjS)�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hjºýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj²ýubhŒ otherwise.”…”�”}”(hj²ýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MÏhj<ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkmsg_dump_get_line (C function)”Œc.kmsg_dump_get_line”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒhbool kmsg_dump_get_line (struct kmsg_dump_iter *iter, bool syslog, char *line, size_t size, size_t *len)”h]”hù)�”}”(hŒgbool kmsg_dump_get_line(struct kmsg_dump_iter *iter, bool syslog, char *line, size_t size, size_t *len)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjóýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjïýh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjïýh²hh³jþh´M ubhÿ)�”}”(hŒkmsg_dump_get_line”h]”j)�”}”(hŒkmsg_dump_get_line”h]”hŒkmsg_dump_get_line”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjïýh²hh³jþh´M ubj4)�”}”(hŒP(struct kmsg_dump_iter *iter, bool syslog, char *line, size_t size, size_t *len)”h]”(j:)�”}”(hŒstruct kmsg_dump_iter *iter”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj/þh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj+þubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<þh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+þubh)�”}”(hhh]”j)�”}”(hŒkmsg_dump_iter”h]”hŒkmsg_dump_iter”…”�”}”(hjMþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jOþŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjþsbŒc.kmsg_dump_get_line”†”asbuh1hhj+þubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+þubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj{þh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj+þubj)�”}”(hŒiter”h]”hŒiter”…”�”}”(hjˆþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj'þubj:)�”}”(hŒ bool syslog”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj¡þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�þubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®þh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�þubj)�”}”(hŒsyslog”h]”hŒsyslog”…”�”}”(hj¼þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj'þubj:)�”}”(hŒ char *line”h]”(jü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÕþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÑþubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÑþubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjñþh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÑþubj)�”}”(hŒline”h]”hŒline”…”�”}”(hjþþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÑþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj'þubj:)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÿŒmodname”NŒ classname”Njwjz)�”}”j}]”jiþŒc.kmsg_dump_get_line”†”asbuh1hhjÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿubj)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjFÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj'þubj:)�”}”(hŒ size_t *len”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjbÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jdÿŒmodname”NŒ classname”Njwjz)�”}”j}]”jiþŒc.kmsg_dump_get_line”†”asbuh1hhj[ÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[ÿubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŽÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj[ÿubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj›ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj'þubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjïýh²hh³jþh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjëýh²hh³jþh´M ubah}”(h]”jæýah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jþh´M hjèýh²hubj4)�”}”(hhh]”jM)�”}”(hŒretrieve one kmsg log line”h]”hŒretrieve one kmsg log line”…”�”}”(hjÅÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M hjÂÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjèýh²hh³jþh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÝÿjHjÝÿjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hXO**Parameters** ``struct kmsg_dump_iter *iter`` kmsg dump iterator ``bool syslog`` include the "<4>" prefixes ``char *line`` buffer to copy the line to ``size_t size`` maximum size of the buffer ``size_t *len`` length of line placed into buffer **Description** Start at the beginning of the kmsg buffer, with the oldest kmsg record, and copy one record into the provided buffer. Consecutive calls will return the next available record moving towards the end of the buffer with the youngest messages. A return value of FALSE indicates that there are no more records to read.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M$hjáÿubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``struct kmsg_dump_iter *iter`` kmsg dump iterator ”h]”(j¯)�”}”(hŒ``struct kmsg_dump_iter *iter``”h]”jS)�”}”(hjh]”hŒstruct kmsg_dump_iter *iter”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M!hjubjÉ)�”}”(hhh]”jM)�”}”(hŒkmsg dump iterator”h]”hŒkmsg dump iterator”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´M!hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´M!hjýÿubj©)�”}”(hŒ+``bool syslog`` include the "<4>" prefixes ”h]”(j¯)�”}”(hŒ``bool syslog``”h]”jS)�”}”(hj?h]”hŒ bool syslog”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M"hj9ubjÉ)�”}”(hhh]”jM)�”}”(hŒinclude the "<4>" prefixes”h]”hŒinclude the “<4>â€� prefixes”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jTh´M"hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jTh´M"hjýÿubj©)�”}”(hŒ*``char *line`` buffer to copy the line to ”h]”(j¯)�”}”(hŒ``char *line``”h]”jS)�”}”(hjxh]”hŒ char *line”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M#hjrubjÉ)�”}”(hhh]”jM)�”}”(hŒbuffer to copy the line to”h]”hŒbuffer to copy the line to”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�h´M#hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�h´M#hjýÿubj©)�”}”(hŒ+``size_t size`` maximum size of the buffer ”h]”(j¯)�”}”(hŒ``size_t size``”h]”jS)�”}”(hj±h]”hŒ size_t size”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M$hj«ubjÉ)�”}”(hhh]”jM)�”}”(hŒmaximum size of the buffer”h]”hŒmaximum size of the buffer”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ2``size_t *len`` length of line placed into buffer ”h]”(j¯)�”}”(hŒ``size_t *len``”h]”jS)�”}”(hjêh]”hŒ size_t *len”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M%hjäubjÉ)�”}”(hhh]”jM)�”}”(hŒ!length of line placed into buffer”h]”hŒ!length of line placed into buffer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÿh´M%hjubah}”(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£hjáÿubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M'hjáÿubjM)�”}”(hŒuStart at the beginning of the kmsg buffer, with the oldest kmsg record, and copy one record into the provided buffer.”h]”hŒuStart at the beginning of the kmsg buffer, with the oldest kmsg record, and copy one record into the provided buffer.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M&hjáÿubjM)�”}”(hŒxConsecutive calls will return the next available record moving towards the end of the buffer with the youngest messages.”h]”hŒxConsecutive calls will return the next available record moving towards the end of the buffer with the youngest messages.”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M)hjáÿubjM)�”}”(hŒIA return value of FALSE indicates that there are no more records to read.”h]”hŒIA return value of FALSE indicates that there are no more records to read.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M,hjáÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!kmsg_dump_get_buffer (C function)”Œc.kmsg_dump_get_buffer”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒmbool kmsg_dump_get_buffer (struct kmsg_dump_iter *iter, bool syslog, char *buf, size_t size, size_t *len_out)”h]”hù)�”}”(hŒlbool kmsg_dump_get_buffer(struct kmsg_dump_iter *iter, bool syslog, char *buf, size_t size, size_t *len_out)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj„h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MXubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„h²hh³j•h´MXubhÿ)�”}”(hŒkmsg_dump_get_buffer”h]”j)�”}”(hŒkmsg_dump_get_buffer”h]”hŒkmsg_dump_get_buffer”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ubah}”(h]”h ]”(•jjeh"]”h$]”h&]”jjuh1hþhj„h²hh³j•h´MXubj4)�”}”(hŒS(struct kmsg_dump_iter *iter, bool syslog, char *buf, size_t size, size_t *len_out)”h]”(j:)�”}”(hŒstruct kmsg_dump_iter *iter”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÀubh)�”}”(hhh]”j)�”}”(hŒkmsg_dump_iter”h]”hŒkmsg_dump_iter”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jäŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjªsbŒc.kmsg_dump_get_buffer”†”asbuh1hhjÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÀubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÀubj)�”}”(hŒiter”h]”hŒiter”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¼ubj:)�”}”(hŒ bool syslog”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj2ubj)�”}”(hŒsyslog”h]”hŒsyslog”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¼ubj:)�”}”(hŒ char *buf”h]”(jü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjfubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjfubj)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¼ubj:)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j±Œmodname”NŒ classname”Njwjz)�”}”j}]”jþŒc.kmsg_dump_get_buffer”†”asbuh1hhj¨ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¨ubj)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¼ubj:)�”}”(hŒsize_t *len_out”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jùŒmodname”NŒ classname”Njwjz)�”}”j}]”jþŒc.kmsg_dump_get_buffer”†”asbuh1hhjðubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjðubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjðubj)�”}”(hŒlen_out”h]”hŒlen_out”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj„h²hh³j•h´MXubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj€h²hh³j•h´MXubah}”(h]”j{ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j•h´MXhj}h²hubj4)�”}”(hhh]”jM)�”}”(hŒcopy kmsg log lines”h]”hŒcopy kmsg log lines”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MXhjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj}h²hh³j•h´MXubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjrjHjrjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hXÀ**Parameters** ``struct kmsg_dump_iter *iter`` kmsg dump iterator ``bool syslog`` include the "<4>" prefixes ``char *buf`` buffer to copy the line to ``size_t size`` maximum size of the buffer ``size_t *len_out`` length of line placed into buffer **Description** Start at the end of the kmsg buffer and fill the provided buffer with as many of the *youngest* kmsg records that fit into it. If the buffer is large enough, all available kmsg records will be copied with a single call. Consecutive calls will fill the buffer with the next block of available older records, not including the earlier retrieved ones. A return value of FALSE indicates that there are no more records to read.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj|h]”hŒ Parameters”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M\hjvubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``struct kmsg_dump_iter *iter`` kmsg dump iterator ”h]”(j¯)�”}”(hŒ``struct kmsg_dump_iter *iter``”h]”jS)�”}”(hj›h]”hŒstruct kmsg_dump_iter *iter”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MYhj•ubjÉ)�”}”(hhh]”jM)�”}”(hŒkmsg dump iterator”h]”hŒkmsg dump iterator”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j°h´MYhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j°h´MYhj’ubj©)�”}”(hŒ+``bool syslog`` include the "<4>" prefixes ”h]”(j¯)�”}”(hŒ``bool syslog``”h]”jS)�”}”(hjÔh]”hŒ bool syslog”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MZhjÎubjÉ)�”}”(hhh]”jM)�”}”(hŒinclude the "<4>" prefixes”h]”hŒinclude the “<4>â€� prefixes”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jéh´MZhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jéh´MZhj’ubj©)�”}”(hŒ)``char *buf`` buffer to copy the line to ”h]”(j¯)�”}”(hŒ ``char *buf``”h]”jS)�”}”(hj h]”hŒ char *buf”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M[hjubjÉ)�”}”(hhh]”jM)�”}”(hŒbuffer to copy the line to”h]”hŒbuffer to copy the line to”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j"h´M[hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j"h´M[hj’ubj©)�”}”(hŒ+``size_t size`` maximum size of the buffer ”h]”(j¯)�”}”(hŒ``size_t size``”h]”jS)�”}”(hjFh]”hŒ size_t size”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M\hj@ubjÉ)�”}”(hhh]”jM)�”}”(hŒmaximum size of the buffer”h]”hŒmaximum size of the buffer”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ6``size_t *len_out`` length of line placed into buffer ”h]”(j¯)�”}”(hŒ``size_t *len_out``”h]”jS)�”}”(hjh]”hŒsize_t *len_out”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M]hjyubjÉ)�”}”(hhh]”jM)�”}”(hŒ!length of line placed into buffer”h]”hŒ!length of line placed into buffer”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j”h´M]hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”h´M]hj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjvubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M_hjvubjM)�”}”(hŒÛStart at the end of the kmsg buffer and fill the provided buffer with as many of the *youngest* kmsg records that fit into it. If the buffer is large enough, all available kmsg records will be copied with a single call.”h]”(hŒUStart at the end of the kmsg buffer and fill the provided buffer with as many of the ”…”�”}”(hjÐh²hh³Nh´Nubj3)�”}”(hŒ *youngest*”h]”hŒyoungest”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2hjÐubhŒ| kmsg records that fit into it. If the buffer is large enough, all available kmsg records will be copied with a single call.”…”�”}”(hjÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M^hjvubjM)�”}”(hŒ€Consecutive calls will fill the buffer with the next block of available older records, not including the earlier retrieved ones.”h]”hŒ€Consecutive calls will fill the buffer with the next block of available older records, not including the earlier retrieved ones.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MchjvubjM)�”}”(hŒIA return value of FALSE indicates that there are no more records to read.”h]”hŒIA return value of FALSE indicates that there are no more records to read.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mfhjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒkmsg_dump_rewind (C function)”Œc.kmsg_dump_rewind”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3void kmsg_dump_rewind (struct kmsg_dump_iter *iter)”h]”hù)�”}”(hŒ2void kmsg_dump_rewind(struct kmsg_dump_iter *iter)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj+h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M¬ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+h²hh³j=h´M¬ubhÿ)�”}”(hŒkmsg_dump_rewind”h]”j)�”}”(hŒkmsg_dump_rewind”h]”hŒkmsg_dump_rewind”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj+h²hh³j=h´M¬ubj4)�”}”(hŒ(struct kmsg_dump_iter *iter)”h]”j:)�”}”(hŒstruct kmsg_dump_iter *iter”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjhubh)�”}”(hhh]”j)�”}”(hŒkmsg_dump_iter”h]”hŒkmsg_dump_iter”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjRsbŒc.kmsg_dump_rewind”†”asbuh1hhjhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjhubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjhubj)�”}”(hŒiter”h]”hŒiter”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjdubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj+h²hh³j=h´M¬ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj'h²hh³j=h´M¬ubah}”(h]”j"ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j=h´M¬hj$h²hubj4)�”}”(hhh]”jM)�”}”(hŒreset the iterator”h]”hŒreset the iterator”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M¬hjìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj$h²hh³j=h´M¬ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒþ**Parameters** ``struct kmsg_dump_iter *iter`` kmsg dump iterator **Description** Reset the dumper's iterator so that kmsg_dump_get_line() and kmsg_dump_get_buffer() can be called again and used multiple times within the same dumper.dump() callback.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M°hj ubj¤)�”}”(hhh]”j©)�”}”(hŒ3``struct kmsg_dump_iter *iter`` kmsg dump iterator ”h]”(j¯)�”}”(hŒ``struct kmsg_dump_iter *iter``”h]”jS)�”}”(hj0h]”hŒstruct kmsg_dump_iter *iter”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M­hj*ubjÉ)�”}”(hhh]”jM)�”}”(hŒkmsg dump iterator”h]”hŒkmsg dump iterator”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jEh´M­hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jEh´M­hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjkh]”hŒ Description”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M¯hj ubjM)�”}”(hŒ§Reset the dumper's iterator so that kmsg_dump_get_line() and kmsg_dump_get_buffer() can be called again and used multiple times within the same dumper.dump() callback.”h]”hŒ©Reset the dumper’s iterator so that kmsg_dump_get_line() and kmsg_dump_get_buffer() can be called again and used multiple times within the same dumper.dump() callback.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M®hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ#__printk_cpu_sync_wait (C function)”Œc.__printk_cpu_sync_wait”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ"void __printk_cpu_sync_wait (void)”h]”hù)�”}”(hŒ!void __printk_cpu_sync_wait(void)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¬h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MàubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¬h²hh³j¾h´Màubhÿ)�”}”(hŒ__printk_cpu_sync_wait”h]”j)�”}”(hŒ__printk_cpu_sync_wait”h]”hŒ__printk_cpu_sync_wait”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¬h²hh³j¾h´Màubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjéubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjåubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¬h²hh³j¾h´Màubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¨h²hh³j¾h´Màubah}”(h]”j£ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¾h´Màhj¥h²hubj4)�”}”(hhh]”jM)�”}”(hŒOBusy wait until the printk cpu-reentrant spinning lock is not owned by any CPU.”h]”hŒOBusy wait until the printk cpu-reentrant spinning lock is not owned by any CPU.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Màhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¥h²hh³j¾h´Màubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj/jHj/jI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒB**Parameters** ``void`` no arguments **Context** Any context.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj9h]”hŒ Parameters”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mähj3ubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hjXh]”hŒvoid”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjRubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmh´Khjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmh´KhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj3ubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hj“h]”hŒContext”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Khj3ubjM)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mãhj3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&__printk_cpu_sync_try_get (C function)”Œc.__printk_cpu_sync_try_get”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ$int __printk_cpu_sync_try_get (void)”h]”hù)�”}”(hŒ#int __printk_cpu_sync_try_get(void)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÔh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MîubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔh²hh³jæh´Mîubhÿ)�”}”(hŒ__printk_cpu_sync_try_get”h]”j)�”}”(hŒ__printk_cpu_sync_try_get”h]”hŒ__printk_cpu_sync_try_get”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÔh²hh³jæh´Mîubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÔh²hh³jæh´Mîubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÐh²hh³jæh´Mîubah}”(h]”jËah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jæh´MîhjÍh²hubj4)�”}”(hhh]”jM)�”}”(hŒ6Try to acquire the printk cpu-reentrant spinning lock.”h]”hŒ6Try to acquire the printk cpu-reentrant spinning lock.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mîhj<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÍh²hh³jæh´Mîubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjWjHjWjI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hXX**Parameters** ``void`` no arguments **Description** If no processor has the lock, the calling processor takes the lock and becomes the owner. If the calling processor is already the owner of the lock, this function succeeds immediately. **Context** Any context. Expects interrupts to be disabled. **Return** 1 on success, otherwise 0.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjah]”hŒ Parameters”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mòhj[ubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj€h]”hŒvoid”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjzubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j•h´Khj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j•h´Khjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj[ubjM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Khj[ubjM)�”}”(hŒ¸If no processor has the lock, the calling processor takes the lock and becomes the owner. If the calling processor is already the owner of the lock, this function succeeds immediately.”h]”hŒ¸If no processor has the lock, the calling processor takes the lock and becomes the owner. If the calling processor is already the owner of the lock, this function succeeds immediately.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mïhj[ubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjâh]”hŒContext”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Móhj[ubjM)�”}”(hŒ/Any context. Expects interrupts to be disabled.”h]”hŒ/Any context. Expects interrupts to be disabled.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Mõhj[ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M÷hj[ubjM)�”}”(hŒ1 on success, otherwise 0.”h]”hŒ1 on success, otherwise 0.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Möhj[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"__printk_cpu_sync_put (C function)”Œc.__printk_cpu_sync_put”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ!void __printk_cpu_sync_put (void)”h]”hù)�”}”(hŒ void __printk_cpu_sync_put(void)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjJ h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJ h²hh³j\ h´M&ubhÿ)�”}”(hŒ__printk_cpu_sync_put”h]”j)�”}”(hŒ__printk_cpu_sync_put”h]”hŒ__printk_cpu_sync_put”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjJ h²hh³j\ h´M&ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‡ ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƒ ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjJ h²hh³j\ h´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjF h²hh³j\ h´M&ubah}”(h]”jA ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j\ h´M&hjC h²hubj4)�”}”(hhh]”jM)�”}”(hŒ/Release the printk cpu-reentrant spinning lock.”h]”hŒ/Release the printk cpu-reentrant spinning lock.”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M&hj² h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjC h²hh³j\ h´M&ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÍ jHjÍ jI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒ¬**Parameters** ``void`` no arguments **Description** The calling processor must be the owner of the lock. **Context** Any context. Expects interrupts to be disabled.”h]”(jM)�”}”(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&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M*hjÑ ubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hjö h]”hŒvoid”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjô ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Khjð ubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j h´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjð ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j h´Khjí ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÑ ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj1 h]”hŒ Description”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjÑ ubjM)�”}”(hŒ4The calling processor must be the owner of the lock.”h]”hŒ4The calling processor must be the owner of the lock.”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M'hjÑ ubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjX h]”hŒContext”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M)hjÑ ubjM)�”}”(hŒ/Any context. Expects interrupts to be disabled.”h]”hŒ/Any context. Expects interrupts to be disabled.”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M*hjÑ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒvpanic (C function)”Œc.vpanic”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void vpanic (const char *fmt, va_list args)”h]”hù)�”}”(hŒ*void vpanic(const char *fmt, va_list args)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj™ h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´MEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™ h²hh³j« h´MEubhÿ)�”}”(hŒvpanic”h]”j)�”}”(hŒvpanic”h]”hŒvpanic”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjº ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj™ h²hh³j« h´MEubj4)�”}”(hŒ(const char *fmt, va_list args)”h]”(j:)�”}”(hŒconst char *fmt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÖ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖ ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÖ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÖ ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÖ ubj)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÒ ubj:)�”}”(hŒ va_list args”h]”(h)�”}”(hhh]”j)�”}”(hŒva_list”h]”hŒva_list”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7 ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j< Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÀ sbŒc.vpanic”†”asbuh1hhj3 ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3 ubj)�”}”(hŒargs”h]”hŒargs”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÒ ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj™ h²hh³j« h´MEubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj• h²hh³j« h´MEubah}”(h]”j� ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j« h´MEhj’ h²hubj4)�”}”(hhh]”jM)�”}”(hŒhalt the system”h]”hŒhalt the system”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´MEhj� h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj’ h²hh³j« h´MEubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjª jHjª jI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hŒË**Parameters** ``const char *fmt`` The text string to print ``va_list args`` Arguments for the format string **Description** Display a message, then perform cleanups. This function never returns.”h]”(jM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´MIhj® ubj¤)�”}”(hhh]”(j©)�”}”(hŒ-``const char *fmt`` The text string to print ”h]”(j¯)�”}”(hŒ``const char *fmt``”h]”jS)�”}”(hjÓ h]”hŒconst char *fmt”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´MFhjÍ ubjÉ)�”}”(hhh]”jM)�”}”(hŒThe text string to print”h]”hŒThe text string to print”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jè h´MFhjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÍ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jè h´MFhjÊ ubj©)�”}”(hŒ1``va_list args`` Arguments for the format string ”h]”(j¯)�”}”(hŒ``va_list args``”h]”jS)�”}”(hj h]”hŒ va_list args”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´MGhj ubjÉ)�”}”(hhh]”jM)�”}”(hŒArguments for the format string”h]”hŒArguments for the format string”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j! h´MGhj" ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j! h´MGhjÊ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj® ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjG h]”hŒ Description”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjE ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´MIhj® ubjM)�”}”(hŒFDisplay a message, then perform cleanups. This function never returns.”h]”hŒFDisplay a message, then perform cleanups. This function never returns.”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´MHhj® ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒadd_taint (C function)”Œ c.add_taint”hNt”auh1hÜhjøÊh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ:void add_taint (unsigned flag, enum lockdep_ok lockdep_ok)”h]”hù)�”}”(hŒ9void add_taint(unsigned flag, enum lockdep_ok lockdep_ok)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjˆ h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´M²ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjˆ h²hh³jš h´M²ubhÿ)�”}”(hŒ add_taint”h]”j)�”}”(hŒ add_taint”h]”hŒ add_taint”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj© ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjˆ h²hh³jš h´M²ubj4)�”}”(hŒ+(unsigned flag, enum lockdep_ok lockdep_ok)”h]”(j:)�”}”(hŒ unsigned flag”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÅ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÅ ubj)�”}”(hŒflag”h]”hŒflag”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁ ubj:)�”}”(hŒenum lockdep_ok lockdep_ok”h]”(j?)�”}”(hjâÞh]”hŒenum”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjú ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjú ubh)�”}”(hhh]”j)�”}”(hŒ lockdep_ok”h]”hŒ lockdep_ok”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¯ sbŒ c.add_taint”†”asbuh1hhjú ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjú ubj)�”}”(hŒ lockdep_ok”h]”hŒ lockdep_ok”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjú ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÁ ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjˆ h²hh³jš h´M²ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj„ h²hh³jš h´M²ubah}”(h]”j ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jš h´M²hj� h²hubj4)�”}”(hhh]”jM)�”}”(hŒ$add a taint flag if not already set.”h]”hŒ$add a taint flag if not already set.”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´M²hjq h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj� h²hh³jš h´M²ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŒ jHjŒ jI‰jJ‰jK‰uh1híh²hhjøÊh³Nh´Nubj„)�”}”(hXD**Parameters** ``unsigned flag`` one of the TAINT_* constants. ``enum lockdep_ok lockdep_ok`` whether lock debugging is still OK. **Description** If something bad has gone wrong, you'll want **lockdep_ok** = LOCKDEP_NOW_UNRELIABLE, but for some noteworthy-but-not-corrupting cases, it can be set to LOCKDEP_STILL_OK.”h]”(jM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´M¶hj� ubj¤)�”}”(hhh]”(j©)�”}”(hŒ0``unsigned flag`` one of the TAINT_* constants. ”h]”(j¯)�”}”(hŒ``unsigned flag``”h]”jS)�”}”(hjµ h]”hŒ unsigned flag”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj³ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´M³hj¯ ubjÉ)�”}”(hhh]”jM)�”}”(hŒone of the TAINT_* constants.”h]”hŒone of the TAINT_* constants.”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒC``enum lockdep_ok lockdep_ok`` whether lock debugging is still OK. ”h]”(j¯)�”}”(hŒ``enum lockdep_ok lockdep_ok``”h]”jS)�”}”(hjî h]”hŒenum lockdep_ok lockdep_ok”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjì ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´M´hjè ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#whether lock debugging is still OK.”h]”hŒ#whether lock debugging is still OK.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´M´hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjè ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´M´hj¬ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj� ubjM)�”}”(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&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´M¶hj� ubjM)�”}”(hŒªIf something bad has gone wrong, you'll want **lockdep_ok** = LOCKDEP_NOW_UNRELIABLE, but for some noteworthy-but-not-corrupting cases, it can be set to LOCKDEP_STILL_OK.”h]”(hŒ/If something bad has gone wrong, you’ll want ”…”�”}”(hj?h²hh³Nh´NubjŽ)�”}”(hŒ**lockdep_ok**”h]”hŒ lockdep_ok”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?ubhŒo = LOCKDEP_NOW_UNRELIABLE, but for some noteworthy-but-not-corrupting cases, it can be set to LOCKDEP_STILL_OK.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´Mµhj� ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjøÊh²hh³Nh´Nubeh}”(h]”Œkernel-utility-functions”ah ]”h"]”Œkernel utility functions”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kvubh¶)�”}”(hhh]”(h»)�”}”(hŒDevice Resource Management”h]”hŒDevice Resource Management”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjoh²hh³hÊh´K“ubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ __devres_alloc_node (C function)”Œc.__devres_alloc_node”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒdvoid * __devres_alloc_node (dr_release_t release, size_t size, gfp_t gfp, int nid, const char *name)”h]”hù)�”}”(hŒbvoid *__devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp, int nid, const char *name)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj•h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj•h²hh³j§h´Kªubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj•h²hh³j§h´Kªubhÿ)�”}”(hŒ__devres_alloc_node”h]”j)�”}”(hŒ__devres_alloc_node”h]”hŒ__devres_alloc_node”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÃubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj•h²hh³j§h´Kªubj4)�”}”(hŒI(dr_release_t release, size_t size, gfp_t gfp, int nid, const char *name)”h]”(j:)�”}”(hŒdr_release_t release”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_release_t”h]”hŒ dr_release_t”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jèŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÉsbŒc.__devres_alloc_node”†”asbuh1hhjßubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjßubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÛubj:)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j2Œmodname”NŒ classname”Njwjz)�”}”j}]”jŒc.__devres_alloc_node”†”asbuh1hhj)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)ubj)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÛubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jzŒmodname”NŒ classname”Njwjz)�”}”j}]”jŒc.__devres_alloc_node”†”asbuh1hhjqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjqubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÛubj:)�”}”(hŒint nid”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹ubj)�”}”(hŒnid”h]”hŒnid”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÛubj:)�”}”(hŒconst char *name”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjîubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjîubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjîubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjîubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjîubj)�”}”(hŒname”h]”hŒname”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÛubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj•h²hh³j§h´Kªubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‘h²hh³j§h´Kªubah}”(h]”jŒah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j§h´KªhjŽh²hubj4)�”}”(hhh]”jM)�”}”(hŒAllocate device resource data”h]”hŒAllocate device resource data”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Kªhj]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŽh²hh³j§h´Kªubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjxjHjxjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hXä**Parameters** ``dr_release_t release`` Release function devres will be associated with ``size_t size`` Allocation size ``gfp_t gfp`` Allocation flags ``int nid`` NUMA node ``const char *name`` Name of the resource **Description** Allocate devres of **size** bytes. The allocated area is zeroed, then associated with **release**. The returned pointer can be passed to other devres_*() functions. **Return** Pointer to allocated devres on success, NULL on failure.”h]”(jM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´K®hj|ubj¤)�”}”(hhh]”(j©)�”}”(hŒI``dr_release_t release`` Release function devres will be associated with ”h]”(j¯)�”}”(hŒ``dr_release_t release``”h]”jS)�”}”(hj¡h]”hŒdr_release_t release”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´K«hj›ubjÉ)�”}”(hhh]”jM)�”}”(hŒ/Release function devres will be associated with”h]”hŒ/Release function devres will be associated with”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ ``size_t size`` Allocation size ”h]”(j¯)�”}”(hŒ``size_t size``”h]”jS)�”}”(hjÚh]”hŒ size_t size”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´K¬hjÔubjÉ)�”}”(hhh]”jM)�”}”(hŒAllocation size”h]”hŒAllocation size”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``gfp_t gfp`` Allocation flags ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjh]”hŒ gfp_t gfp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´K­hj ubjÉ)�”}”(hhh]”jM)�”}”(hŒAllocation flags”h]”hŒAllocation flags”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``int nid`` NUMA node ”h]”(j¯)�”}”(hŒ ``int nid``”h]”jS)�”}”(hjLh]”hŒint nid”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´K®hjFubjÉ)�”}”(hhh]”jM)�”}”(hŒ NUMA node”h]”hŒ NUMA node”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jah´K®hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jah´K®hj˜ubj©)�”}”(hŒ*``const char *name`` Name of the resource ”h]”(j¯)�”}”(hŒ``const char *name``”h]”jS)�”}”(hj…h]”hŒconst char *name”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´K¯hjubjÉ)�”}”(hhh]”jM)�”}”(hŒName of the resource”h]”hŒName of the resource”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jšh´K¯hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jšh´K¯hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj|ubjM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´K±hj|ubjM)�”}”(hŒ¦Allocate devres of **size** bytes. The allocated area is zeroed, then associated with **release**. The returned pointer can be passed to other devres_*() functions.”h]”(hŒAllocate devres of ”…”�”}”(hjÖh²hh³Nh´NubjŽ)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖubhŒ< bytes. The allocated area is zeroed, then associated with ”…”�”}”(hjÖh²hh³Nh´NubjŽ)�”}”(hŒ **release**”h]”hŒrelease”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖubhŒD. The returned pointer can be passed to other devres_*() functions.”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´K°hj|ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´K´hj|ubjM)�”}”(hŒ8Pointer to allocated devres on success, NULL on failure.”h]”hŒ8Pointer to allocated devres on success, NULL on failure.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Kµhj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ devres_for_each_res (C function)”Œc.devres_for_each_res”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ void devres_for_each_res (struct device *dev, dr_release_t release, dr_match_t match, void *match_data, void (*fn)(struct device *, void *, void *), void *data)”h]”hù)�”}”(hŒœvoid devres_for_each_res(struct device *dev, dr_release_t release, dr_match_t match, void *match_data, void (*fn)(struct device*, void*, void*), void *data)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjLh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjLh²hh³j^h´KÆubhÿ)�”}”(hŒdevres_for_each_res”h]”j)�”}”(hŒdevres_for_each_res”h]”hŒdevres_for_each_res”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjLh²hh³j^h´KÆubj4)�”}”(hŒ„(struct device *dev, dr_release_t release, dr_match_t match, void *match_data, void (*fn)(struct device*, void*, void*), void *data)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j­Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjssbŒc.devres_for_each_res”†”asbuh1hhj‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‰ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‰ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj…ubj:)�”}”(hŒdr_release_t release”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_release_t”h]”hŒ dr_release_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”jÇŒc.devres_for_each_res”†”asbuh1hhjûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj…ubj:)�”}”(hŒdr_match_t match”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_match_t”h]”hŒ dr_match_t”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jLŒmodname”NŒ classname”Njwjz)�”}”j}]”jÇŒc.devres_for_each_res”†”asbuh1hhjCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCubj)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj…ubj:)�”}”(hŒvoid *match_data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‹ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‹ubj)�”}”(hŒ match_data”h]”hŒ match_data”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj…ubj:)�”}”(hŒ(void (*fn)(struct device*, void*, void*)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍubj”)�”}”(hjsh]”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Íubj)�”}”(hŒfn”h]”hŒfn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jOŒmodname”NŒ classname”Njwjz)�”}”j}]”jÇŒc.devres_for_each_res”†”asbuh1hhjÍubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍubj”)�”}”(hjh]”hŒ,”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÍubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍubj”)�”}”(hjh]”hŒ,”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÍubj”)�”}”(hj—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Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj…ubj:)�”}”(hŒ void *data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjøubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjøubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjøubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj…ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjLh²hh³j^h´KÆubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjHh²hh³j^h´KÆubah}”(h]”jCah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j^h´KÆhjEh²hubj4)�”}”(hhh]”jM)�”}”(hŒResource iterator”h]”hŒResource iterator”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÆhjLh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjEh²hh³j^h´KÆubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjgjHjgjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX9**Parameters** ``struct device *dev`` Device to iterate resource from ``dr_release_t release`` Look for resources associated with this release function ``dr_match_t match`` Match function (optional) ``void *match_data`` Data for the match function ``void (*fn)(struct device *, void *, void *)`` Function to be called for each matched resource. ``void *data`` Data for **fn**, the 3rd parameter of **fn** **Description** Call **fn** for each devres of **dev** which is associated with **release** and for which **match** returns 1. **Return** void”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjqh]”hŒ Parameters”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÊhjkubj¤)�”}”(hhh]”(j©)�”}”(hŒ7``struct device *dev`` Device to iterate resource from ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj�h]”hŒstruct device *dev”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÇhjŠubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to iterate resource from”h]”hŒDevice to iterate resource from”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒR``dr_release_t release`` Look for resources associated with this release function ”h]”(j¯)�”}”(hŒ``dr_release_t release``”h]”jS)�”}”(hjÉh]”hŒdr_release_t release”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÈhjÃubjÉ)�”}”(hhh]”jM)�”}”(hŒ8Look for resources associated with this release function”h]”hŒ8Look for resources associated with this release function”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ/``dr_match_t match`` Match function (optional) ”h]”(j¯)�”}”(hŒ``dr_match_t match``”h]”jS)�”}”(hjh]”hŒdr_match_t match”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÉhjüubjÉ)�”}”(hhh]”jM)�”}”(hŒMatch function (optional)”h]”hŒMatch function (optional)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´KÉhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´KÉhj‡ubj©)�”}”(hŒ1``void *match_data`` Data for the match function ”h]”(j¯)�”}”(hŒ``void *match_data``”h]”jS)�”}”(hj;h]”hŒvoid *match_data”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÊhj5ubjÉ)�”}”(hhh]”jM)�”}”(hŒData for the match function”h]”hŒData for the match function”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jPh´KÊhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jPh´KÊhj‡ubj©)�”}”(hŒa``void (*fn)(struct device *, void *, void *)`` Function to be called for each matched resource. ”h]”(j¯)�”}”(hŒ/``void (*fn)(struct device *, void *, void *)``”h]”jS)�”}”(hjth]”hŒ+void (*fn)(struct device *, void *, void *)”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KËhjnubjÉ)�”}”(hhh]”jM)�”}”(hŒ0Function to be called for each matched resource.”h]”hŒ0Function to be called for each matched resource.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‰h´KËhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‰h´KËhj‡ubj©)�”}”(hŒ<``void *data`` Data for **fn**, the 3rd parameter of **fn** ”h]”(j¯)�”}”(hŒ``void *data``”h]”jS)�”}”(hj­h]”hŒ void *data”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÌhj§ubjÉ)�”}”(hhh]”jM)�”}”(hŒ,Data for **fn**, the 3rd parameter of **fn**”h]”(hŒ Data for ”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubhŒ, the 3rd parameter of ”…”�”}”(hjÆh²hh³Nh´NubjŽ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjkubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÎhjkubjM)�”}”(hŒnCall **fn** for each devres of **dev** which is associated with **release** and for which **match** returns 1.”h]”(hŒCall ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ for each devres of ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ which is associated with ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **release**”h]”hŒrelease”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ and for which ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ returns 1.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÍhjkubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjwh]”hŒReturn”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÐhjkubjM)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÑhjkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_free (C function)”Œ c.devres_free”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒvoid devres_free (void *res)”h]”hù)�”}”(hŒvoid devres_free(void *res)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¸h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KõubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸h²hh³jÊh´Kõubhÿ)�”}”(hŒ devres_free”h]”j)�”}”(hŒ devres_free”h]”hŒ devres_free”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¸h²hh³jÊh´Kõubj4)�”}”(hŒ (void *res)”h]”j:)�”}”(hŒ void *res”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjõubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjõubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjõubj)�”}”(hŒres”h]”hŒres”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjñubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¸h²hh³jÊh´Kõubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj´h²hh³jÊh´Kõubah}”(h]”j¯ah ]”(j+j,eh"•]”h$]”h&]”j0ˆj1)j2huh1hòh³jÊh´Kõhj±h²hubj4)�”}”(hhh]”jM)�”}”(hŒFree device resource data”h]”hŒFree device resource data”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KõhjIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj±h²hh³jÊh´Kõubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjdjHjdjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hŒy**Parameters** ``void *res`` Pointer to devres data to free **Description** Free devres created with devres_alloc().”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjnh]”hŒ Parameters”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Kùhjhubj¤)�”}”(hhh]”j©)�”}”(hŒ-``void *res`` Pointer to devres data to free ”h]”(j¯)�”}”(hŒ ``void *res``”h]”jS)�”}”(hj�h]”hŒ void *res”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Köhj‡ubjÉ)�”}”(hhh]”jM)�”}”(hŒPointer to devres data to free”h]”hŒPointer to devres data to free”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjhubjM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KøhjhubjM)�”}”(hŒ(Free devres created with devres_alloc().”h]”hŒ(Free devres created with devres_alloc().”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´K÷hjhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_add (C function)”Œ c.devres_add”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void devres_add (struct device *dev, void *res)”h]”hù)�”}”(hŒ.void devres_add(struct device *dev, void *res)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj h²hh³jh´M ubhÿ)�”}”(hŒ devres_add”h]”j)�”}”(hŒ devres_add”h]”hŒ devres_add”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj h²hh³jh´M ubj4)�”}”(hŒ(struct device *dev, void *res)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjFubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jjŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj0sbŒ c.devres_add”†”asbuh1hhjFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjFubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjFubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjBubj:)�”}”(hŒ void *res”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¸ubj)�”}”(hŒres”h]”hŒres”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjBubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj h²hh³jh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³jh´M ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´M hjh²hubj4)�”}”(hhh]”jM)�”}”(hŒRegister device resource”h]”hŒRegister device resource”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³jh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj'jHj'jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hXC**Parameters** ``struct device *dev`` Device to add resource to ``void *res`` Resource to register **Description** Register devres **res** to **dev**. **res** should have been allocated using devres_alloc(). On driver detach, the associated release function will be invoked and devres will be freed automatically.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj1h]”hŒ Parameters”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj+ubj¤)�”}”(hhh]”(j©)�”}”(hŒ1``struct device *dev`` Device to add resource to ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjPh]”hŒstruct device *dev”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MhjJubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to add resource to”h]”hŒDevice to add resource to”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jeh´Mhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jeh´MhjGubj©)�”}”(hŒ#``void *res`` Resource to register ”h]”(j¯)�”}”(hŒ ``void *res``”h]”jS)�”}”(hj‰h]”hŒ void *res”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MhjƒubjÉ)�”}”(hhh]”jM)�”}”(hŒResource to register”h]”hŒResource to register”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jžh´MhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jžh´MhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj+ubjM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj+ubjM)�”}”(hŒÈRegister devres **res** to **dev**. **res** should have been allocated using devres_alloc(). On driver detach, the associated release function will be invoked and devres will be freed automatically.”h]”(hŒRegister devres ”…”�”}”(hjÚh²hh³Nh´NubjŽ)�”}”(hŒ**res**”h]”hŒres”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚubhŒ to ”…”�”}”(hjÚh²hh³Nh´NubjŽ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚubhŒ. ”…”�”}”(hjÚh²hh³Nh´NubjŽ)�”}”(hŒ**res**”h]”hŒres”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚubhŒœ should have been allocated using devres_alloc(). On driver detach, the associated release function will be invoked and devres will be freed automatically.”…”�”}”(hjÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_find (C function)”Œ c.devres_find”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒavoid * devres_find (struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”hù)�”}”(hŒ_void *devres_find(struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj;h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;h²hh³jMh´M2ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj;h²hh³jMh´M2ubhÿ)�”}”(hŒ devres_find”h]”j)�”}”(hŒ devres_find”h]”hŒ devres_find”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj;h²hh³jMh´M2ubj4)�”}”(hŒN(struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj…ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j©Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjosbŒ c.devres_find”†”asbuh1hhj…ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj…ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�ubj:)�”}”(hŒdr_release_t release”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_release_t”h]”hŒ dr_release_t”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”jÃŒ c.devres_find”†”asbuh1hhj÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷ubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�ubj:)�”}”(hŒdr_match_t match”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_match_t”h]”hŒ dr_match_t”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jHŒmodname”NŒ classname”Njwjz)�”}”j}]”jÃŒ c.devres_find”†”asbuh1hhj?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?ubj)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�ubj:)�”}”(hŒvoid *match_data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‡ubj)�”}”(hŒ match_data”h]”hŒ match_data”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj;h²hh³jMh´M2ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj7h²hh³jMh´M2ubah}”(h]”j2ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jMh´M2hj4h²hubj4)�”}”(hhh]”jM)�”}”(hŒFind device resource”h]”hŒFind device resource”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M2hjÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj4h²hh³jMh´M2ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjöjHjöjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hXì**Parameters** ``struct device *dev`` Device to lookup resource from ``dr_release_t release`` Look for resources associated with this release function ``dr_match_t match`` Match function (optional) ``void *match_data`` Data for the match function **Description** Find the latest devres of **dev** which is associated with **release** and for which **match** returns 1. If **match** is NULL, it's considered to match all. **Return** Pointer to found devres, NULL if not found.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M6hjúubj¤)�”}”(hhh]”(j©)�”}”(hŒ6``struct device *dev`` Device to lookup resource from ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjh]”hŒstruct device *dev”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M3hjubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to lookup resource from”h]”hŒDevice to lookup resource from”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4h´M3hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4h´M3hjubj©)�”}”(hŒR``dr_release_t release`` Look for resources associated with this release function ”h]”(j¯)�”}”(hŒ``dr_release_t release``”h]”jS)�”}”(hjXh]”hŒdr_release_t release”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M4hjRubjÉ)�”}”(hhh]”jM)�”}”(hŒ8Look for resources associated with this release function”h]”hŒ8Look for resources associated with this release function”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmh´M4hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmh´M4hjubj©)�”}”(hŒ/``dr_match_t match`` Match function (optional) ”h]”(j¯)�”}”(hŒ``dr_match_t match``”h]”jS)�”}”(hj‘h]”hŒdr_match_t match”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M5hj‹ubjÉ)�”}”(hhh]”jM)�”}”(hŒMatch function (optional)”h]”hŒMatch function (optional)”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¦h´M5hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¦h´M5hjubj©)�”}”(hŒ1``void *match_data`` Data for the match function ”h]”(j¯)�”}”(hŒ``void *match_data``”h]”jS)�”}”(hjÊh]”hŒvoid *match_data”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M6hjÄubjÉ)�”}”(hhh]”jM)�”}”(hŒData for the match function”h]”hŒData for the match function”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jßh´M6hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jßh´M6hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjúubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M8hjúubjM)�”}”(hŒžFind the latest devres of **dev** which is associated with **release** and for which **match** returns 1. If **match** is NULL, it's considered to match all.”h]”(hŒFind the latest devres of ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ which is associated with ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **release**”h]”hŒrelease”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ and for which ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ returns 1. If ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ) is NULL, it’s considered to match all.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M7hjúubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjth]”hŒReturn”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M;hjúubjM)�”}”(hŒ+Pointer to found devres, NULL if not found.”h]”hŒ+Pointer to found devres, NULL if not found.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M<hjúubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_get (C function)”Œ c.devres_get”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒYvoid * devres_get (struct device *dev, void *new_res, dr_match_t match, void *match_data)”h]”hù)�”}”(hŒWvoid *devres_get(struct device *dev, void *new_res, dr_match_t match, void *match_data)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MNubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµh²hh³jÇh´MNubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjµh²hh³jÇh´MNubhÿ)�”}”(hŒ devres_get”h]”j)�”}”(hŒ devres_get”h]”hŒ devres_get”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjãubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjµh²hh³jÇh´MNubj4)�”}”(hŒG(struct device *dev, void *new_res, dr_match_t match, void *match_data)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j#Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjésbŒ c.devres_get”†”asbuh1hhjÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÿubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjûubj:)�”}”(hŒ void *new_res”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjqubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjqubj)�”}”(hŒnew_res”h]”hŒnew_res”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjûubj:)�”}”(hŒdr_match_t match”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_match_t”h]”hŒ dr_match_t”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¼Œmodname”NŒ classname”Njwjz)�”}”j}]”j=Œ c.devres_get”†”asbuh1hhj³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj³ubj)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjûubj:)�”}”(hŒvoid *match_data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjûubj)�”}”(hŒ match_data”h]”hŒ match_data”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjûubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjµh²hh³jÇh´MNubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj±h²hh³jÇh´MNubah}”(h]”j¬ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÇh´MNhj®h²hubj4)�”}”(hhh]”jM)�”}”(hŒ0Find devres, if non-existent, add one atomically”h]”hŒ0Find devres, if non-existent, add one atomically”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MNhjO h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj®h²hh³jÇh´MNubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjj jHjj jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX**Parameters** ``struct device *dev`` Device to lookup or add devres for ``void *new_res`` Pointer to new initialized devres to add if not found ``dr_match_t match`` Match function (optional) ``void *match_data`` Data for the match function **Description** Find the latest devres of **dev** which has the same release function as **new_res** and for which **match** return 1. If found, **new_res** is freed; otherwise, **new_res** is added atomically. **Return** Pointer to found or added devres.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjt h]”hŒ Parameters”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjr ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MRhjn ubj¤)�”}”(hhh]”(j©)�”}”(hŒ:``struct device *dev`` Device to lookup or add devres for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj“ h]”hŒstruct device *dev”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MOhj� ubjÉ)�”}”(hhh]”jM)�”}”(hŒ"Device to lookup or add devres for”h]”hŒ"Device to lookup or add devres for”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¨ h´MOhj© ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¨ h´MOhjŠ ubj©)�”}”(hŒH``void *new_res`` Pointer to new initialized devres to add if not found ”h]”(j¯)�”}”(hŒ``void *new_res``”h]”jS)�”}”(hjÌ h]”hŒ void *new_res”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÊ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MPhjÆ ubjÉ)�”}”(hhh]”jM)�”}”(hŒ5Pointer to new initialized devres to add if not found”h]”hŒ5Pointer to new initialized devres to add if not found”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³já h´MPhjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÆ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³já h´MPhjŠ ubj©)�”}”(hŒ/``dr_match_t match`` Match function (optional) ”h]”(j¯)�”}”(hŒ``dr_match_t match``”h]”jS)�”}”(hj!h]”hŒdr_match_t match”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MQhjÿ ubjÉ)�”}”(hhh]”jM)�”}”(hŒMatch function (optional)”h]”hŒMatch function (optional)”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j!h´MQhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j!h´MQhjŠ ubj©)�”}”(hŒ1``void *match_data`` Data for the match function ”h]”(j¯)�”}”(hŒ``void *match_data``”h]”jS)�”}”(hj>!h]”hŒvoid *match_data”…”�”}”(hj@!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjhj…"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…"ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj§"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j©"Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjo"sbŒc.devres_remove”†”asbuh1hhj…"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ"h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…"ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÕ"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj…"ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjâ"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�"ubj:)�”}”(hŒdr_release_t release”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_release_t”h]”hŒ dr_release_t”…”�”}”(hjþ"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjû"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j#Œmodname”NŒ classname”Njwjz)�”}”j}]”jÃ"Œc.devres_remove”†”asbuh1hhj÷"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷"ubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hj*#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�"ubj:)�”}”(hŒdr_match_t match”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_match_t”h]”hŒ dr_match_t”…”�”}”(hjF#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjC#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jH#Œmodname”NŒ classname”Njwjz)�”}”j}]”jÃ"Œc.devres_remove”†”asbuh1hhj?#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?#ubj)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjr#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�"ubj:)�”}”(hŒvoid *match_data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‹#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‡#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡#ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj§#h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‡#ubj)�”}”(hŒ match_data”h]”hŒ match_data”…”�”}”(hj´#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�"ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj;"h²hh³jM"h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj7"h²hh³jM"h´M�ubah}”(h]”j2"ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jM"h´M�hj4"h²hubj4)�”}”(hhh]”jM)�”}”(hŒ$Find a device resource and remove it”h]”hŒ$Find a device resource and remove it”…”�”}”(hjÞ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M�hjÛ#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj4"h²hh³jM"h´M�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjö#jHjö#jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX***Parameters** ``struct device *dev`` Device to find resource from ``dr_release_t release`` Look for resources associated with this release function ``dr_match_t match`` Match function (optional) ``void *match_data`` Data for the match function **Description** Find the latest devres of **dev** associated with **release** and for which **match** returns 1. If **match** is NULL, it's considered to match all. If found, the resource is removed atomically and returned. **Return** Pointer to removed devres on success, NULL if not found.”h]”(jM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M…hjú#ubj¤)�”}”(hhh]”(j©)�”}”(hŒ4``struct device *dev`` Device to find resource from ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj$h]”hŒstruct device *dev”…”�”}”(hj!$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‚hj$ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to find resource from”h]”hŒDevice to find resource from”…”�”}”(hj8$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4$h´M‚hj5$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4$h´M‚hj$ubj©)�”}”(hŒR``dr_release_t release`` Look for resources associated with this release function ”h]”(j¯)�”}”(hŒ``dr_release_t release``”h]”jS)�”}”(hjX$h]”hŒdr_release_t release”…”�”}”(hjZ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjV$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MƒhjR$ubjÉ)�”}”(hhh]”jM)�”}”(hŒ8Look for resources associated with this release function”h]”hŒ8Look for resources associated with this release function”…”�”}”(hjq$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jm$h´Mƒhjn$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjR$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jm$h´Mƒhj$ubj©)�”}”(hŒ/``dr_match_t match`` Match function (optional) ”h]”(j¯)�”}”(hŒ``dr_match_t match``”h]”jS)�”}”(hj‘$h]”hŒdr_match_t match”…”�”}”(hj“$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M„hj‹$ubjÉ)�”}”(hhh]”jM)�”}”(hŒMatch function (optional)”h]”hŒMatch function (optional)”…”�”}”(hjª$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ1``void *match_data`` Data for the match function ”h]”(j¯)�”}”(hŒ``void *match_data``”h]”jS)�”}”(hjÊ$h]”hŒvoid *match_data”…”�”}”(hjÌ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÈ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M…hjÄ$ubjÉ)�”}”(hhh]”jM)�”}”(hŒData for the match function”h]”hŒData for the match function”…”�”}”(hjã$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjú#ubjM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‡hjú#ubjM)�”}”(hŒÑFind the latest devres of **dev** associated with **release** and for which **match** returns 1. If **match** is NULL, it's considered to match all. If found, the resource is removed atomically and returned.”h]”(hŒFind the latest devres of ”…”�”}”(hj%h²hh³Nh´NubjŽ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj#%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ubhŒ associated with ”…”�”}”(hj%h²hh³Nh´NubjŽ)�”}”(hŒ **release**”h]”hŒrelease”…”�”}”(hj5%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ubhŒ and for which ”…”�”}”(hj%h²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjG%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ubhŒ returns 1. If ”…”�”}”(hj%h²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjY%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%ubhŒe is NULL, it’s considered to match all. If found, the resource is removed atomically and returned.”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M†hjú#ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjt%h]”hŒReturn”…”�”}”(hjv%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjr%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‹hjú#ubjM)�”}”(hŒ8Pointer to removed devres on success, NULL if not found.”h]”hŒ8Pointer to removed devres on success, NULL if not found.”…”�”}”(hjŠ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MŒhjú#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_destroy (C function)”Œc.devres_destroy”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒaint devres_destroy (struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”hù)�”}”(hŒ`int devres_destroy(struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¹%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµ%h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ%h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµ%h²hh³jÇ%h´M¡ubhÿ)�”}”(hŒdevres_destroy”h]”j)�”}”(hŒdevres_destroy”h]”hŒdevres_destroy”…”�”}”(hjÚ%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ%ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjµ%h²hh³jÇ%h´M¡ubj4)�”}”(hŒN(struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjö%h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjò%ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjò%ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j&Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÜ%sbŒc.devres_destroy”†”asbuh1hhjò%ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjò%ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjB&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjò%ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjO&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjò%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjî%ubj:)�”}”(hŒdr_release_t release”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_release_t”h]”hŒ dr_release_t”…”�”}”(hjk&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jm&Œmodname”NŒ classname”Njwjz)�”}”j}]”j0&Œc.devres_destroy”†”asbuh1hhjd&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjd&ubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hj—&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjî%ubj:)�”}”(hŒdr_match_t match”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_match_t”h]”hŒ dr_match_t”…”�”}”(hj³&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jµ&Œmodname”NŒ classname”Njwjz)�”}”j}]”j0&Œc.devres_destroy”†”asbuh1hhj¬&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¬&ubj)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjß&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjî%ubj:)�”}”(hŒvoid *match_data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjø&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjô&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjô&ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjô&ubj)�”}”(hŒ match_data”h]”hŒ match_data”…”�”}”(hj!'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjî%ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjµ%h²hh³jÇ%h´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj±%h²hh³jÇ%h´M¡ubah}”(h]”j¬%ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÇ%h´M¡hj®%h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%Find a device resource and destroy it”h]”hŒ%Find a device resource and destroy it”…”�”}”(hjK'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¡hjH'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj®%h²hh³jÇ%h´M¡ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjc'jHjc'jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hXÓ**Parameters** ``struct device *dev`` Device to find resource from ``dr_release_t release`` Look for resources associated with this release function ``dr_match_t match`` Match function (optional) ``void *match_data`` Data for the match function **Description** Find the latest devres of **dev** associated with **release** and for which **match** returns 1. If **match** is NULL, it's considered to match all. If found, the resource is removed atomically and freed. Note that the release function for the resource will not be called, only the devres-allocated data will be freed. The caller becomes responsible for freeing any other data. **Return** 0 if devres is found and freed, -ENOENT if not found.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjm'h]”hŒ Parameters”…”�”}”(hjo'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¥hjg'ubj¤)�”}”(hhh]”(j©)�”}”(hŒ4``struct device *dev`` Device to find resource from ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjŒ'h]”hŒstruct device *dev”…”�”}”(hjŽ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŠ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¢hj†'ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to find resource from”h]”hŒDevice to find resource from”…”�”}”(hj¥'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒR``dr_release_t release`` Look for resources associated with this release function ”h]”(j¯)�”}”(hŒ``dr_release_t release``”h]”jS)�”}”(hjÅ'h]”hŒdr_release_t release”…”�”}”(hjÇ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÃ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M£hj¿'ubjÉ)�”}”(hhh]”jM)�”}”(hŒ8Look for resources associated with this release function”h]”hŒ8Look for resources associated with this release function”…”�”}”(hjÞ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ/``dr_match_t match`` Match function (optional) ”h]”(j¯)�”}”(hŒ``dr_match_t match``”h]”jS)�”}”(hjþ'h]”hŒdr_match_t match”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjü'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¤hjø'ubjÉ)�”}”(hhh]”jM)�”}”(hŒMatch function (optional)”h]”hŒMatch function (optional)”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ1``void *match_data`` Data for the match function ”h]”(j¯)�”}”(hŒ``void *match_data``”h]”jS)�”}”(hj7(h]”hŒvoid *match_data”…”�”}”(hj9(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¥hj1(ubjÉ)�”}”(hhh]”jM)�”}”(hŒData for the match function”h]”hŒData for the match function”…”�”}”(hjP(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jL(h´M¥hjM(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jL(h´M¥hjƒ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjg'ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjr(h]”hŒ Description”…”�”}”(hjt(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjp(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M§hjg'ubjM)�”}”(hŒÎFind the latest devres of **dev** associated with **release** and for which **match** returns 1. If **match** is NULL, it's considered to match all. If found, the resource is removed atomically and freed.”h]”(hŒFind the latest devres of ”…”�”}”(hjˆ(h²hh³Nh´NubjŽ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ(ubhŒ associated with ”…”�”}”(hjˆ(h²hh³Nh´NubjŽ)�”}”(hŒ **release**”h]”hŒrelease”…”�”}”(hj¢(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ(ubhŒ and for which ”…”�”}”(hjˆ(h²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj´(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ(ubhŒ returns 1. If ”…”�”}”(hjˆ(h²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjÆ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ(ubhŒb is NULL, it’s considered to match all. If found, the resource is removed atomically and freed.”…”�”}”(hjˆ(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¦hjg'ubjM)�”}”(hŒ­Note that the release function for the resource will not be called, only the devres-allocated data will be freed. The caller becomes responsible for freeing any other data.”h]”hŒ­Note that the release function for the resource will not be called, only the devres-allocated data will be freed. The caller becomes responsible for freeing any other data.”…”�”}”(hjß(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mªhjg'ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjð(h]”hŒReturn”…”�”}”(hjò(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjî(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M®hjg'ubjM)�”}”(hŒ50 if devres is found and freed, -ENOENT if not found.”h]”hŒ50 if devres is found and freed, -ENOENT if not found.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¯hjg'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_release (C function)”Œc.devres_release”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒaint devres_release (struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”hù)�”}”(hŒ`int devres_release(struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj5)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj1)h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1)h²hh³jC)h´MÂubhÿ)�”}”(hŒdevres_release”h]”j)�”}”(hŒdevres_release”h]”hŒdevres_release”…”�”}”(hjV)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjR)ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj1)h²hh³jC)h´MÂubj4)�”}”(hŒN(struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjr)h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjn)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjn)ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j’)Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjX)sbŒc.devres_release”†”asbuh1hhjn)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjn)ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¾)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjn)ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjË)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjn)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjj)ubj:)�”}”(hŒdr_release_t release”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_release_t”h]”hŒ dr_release_t”…”�”}”(hjç)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjä)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jé)Œmodname”NŒ classname”Njwjz)�”}”j}]”j¬)Œc.devres_release”†”asbuh1hhjà)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjà)ubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjà)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjj)ubj:)�”}”(hŒdr_match_t match”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_match_t”h]”hŒ dr_match_t”…”�”}”(hj/*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j1*Œmodname”NŒ classname”Njwjz)�”}”j}]”j¬)Œc.devres_release”†”asbuh1hhj(*ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj(*ubj)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hj[*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjj)ubj:)�”}”(hŒvoid *match_data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjt*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjp*ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjp*ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjp*ubj)�”}”(hŒ match_data”h]”hŒ match_data”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjj)ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj1)h²hh³jC)h´MÂubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj-)h²hh³jC)h´MÂubah}”(h]”j()ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jC)h´MÂhj*)h²hubj4)�”}”(hhh]”jM)�”}”(hŒ6Find a device resource and destroy it, calling release”h]”hŒ6Find a device resource and destroy it, calling release”…”�”}”(hjÇ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÂhjÄ*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj*)h²hh³jC)h´MÂubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjß*jHjß*jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hXN**Parameters** ``struct device *dev`` Device to find resource from ``dr_release_t release`` Look for resources associated with this release function ``dr_match_t match`` Match function (optional) ``void *match_data`` Data for the match function **Description** Find the latest devres of **dev** associated with **release** and for which **match** returns 1. If **match** is NULL, it's considered to match all. If found, the resource is removed atomically, the release function called and the resource freed. **Return** 0 if devres is found and freed, -ENOENT if not found.”h]”(jM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÆhjã*ubj¤)�”}”(hhh]”(j©)�”}”(hŒ4``struct device *dev`` Device to find resource from ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj+h]”hŒstruct device *dev”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÃhj+ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to find resource from”h]”hŒDevice to find resource from”…”�”}”(hj!+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒR``dr_release_t release`` Look for resources associated with this release function ”h]”(j¯)�”}”(hŒ``dr_release_t release``”h]”jS)�”}”(hjA+h]”hŒdr_release_t release”…”�”}”(hjC+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj?+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÄhj;+ubjÉ)�”}”(hhh]”jM)�”}”(hŒ8Look for resources associated with this release function”h]”hŒ8Look for resources associated with this release function”…”�”}”(hjZ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jV+h´MÄhjW+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj;+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jV+h´MÄhjÿ*ubj©)�”}”(hŒ/``dr_match_t match`` Match function (optional) ”h]”(j¯)�”}”(hŒ``dr_match_t match``”h]”jS)�”}”(hjz+h]”hŒdr_match_t match”…”�”}”(hj|+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjx+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÅhjt+ubjÉ)�”}”(hhh]”jM)�”}”(hŒMatch function (optional)”h]”hŒMatch function (optional)”…”�”}”(hj“+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�+h´MÅhj�+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjt+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�+h´MÅhjÿ*ubj©)�”}”(hŒ1``void *match_data`` Data for the match function ”h]”(j¯)�”}”(hŒ``void *match_data``”h]”jS)�”}”(hj³+h]”hŒvoid *match_data”…”�”}”(hjµ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj±+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÆhj­+ubjÉ)�”}”(hhh]”jM)�”}”(hŒData for the match function”h]”hŒData for the match function”…”�”}”(hjÌ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjã*ubjM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÈhjã*ubjM)�”}”(hŒøFind the latest devres of **dev** associated with **release** and for which **match** returns 1. If **match** is NULL, it's considered to match all. If found, the resource is removed atomically, the release function called and the resource freed.”h]”(hŒFind the latest devres of ”…”�”}”(hj,h²hh³Nh´NubjŽ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,ubhŒ associated with ”…”�”}”(hj,h²hh³Nh´NubjŽ)�”}”(hŒ **release**”h]”hŒrelease”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,ubhŒ and for which ”…”�”}”(hj,h²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj0,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,ubhŒ returns 1. If ”…”�”}”(hj,h²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjB,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,ubhŒŒ is NULL, it’s considered to match all. If found, the resource is removed atomically, the release function called and the resource freed.”…”�”}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÇhjã*ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj],h]”hŒReturn”…”�”}”(hj_,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÌhjã*ubjM)�”}”(hŒ50 if devres is found and freed, -ENOENT if not found.”h]”hŒ50 if devres is found and freed, -ENOENT if not found.”…”�”}”(hjs,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÍhjã*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_open_group (C function)”Œc.devres_open_group”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBvoid * devres_open_group (struct device *dev, void *id, gfp_t gfp)”h]”hù)�”}”(hŒ@void *devres_open_group(struct device *dev, void *id, gfp_t gfp)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¢,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjž,h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MLubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjž,h²hh³j°,h´MLubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¿,h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjž,h²hh³j°,h´MLubhÿ)�”}”(hŒdevres_open_group”h]”j)�”}”(hŒdevres_open_group”h]”hŒdevres_open_group”…”�”}”(hjÐ,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌ,ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjž,h²hh³j°,h´MLubj4)�”}”(hŒ)(struct device *dev, void *id, gfp_t gfp)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjì,h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjè,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjè,ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j -Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÒ,sbŒc.devres_open_group”†”asbuh1hhjè,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*-h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjè,ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj8-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjè,ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjE-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjä,ubj:)�”}”(hŒvoid *id”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjZ-ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl-h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZ-ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjz-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjZ-ubj)�”}”(hŒid”h]”hŒid”…”�”}”(hj‡-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjä,ubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj£-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj -ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¥-Œmodname”NŒ classname”Njwjz)�”}”j}]”j&-Œc.devres_open_group”†”asbuh1hhjœ-ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ-h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjœ-ubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjÏ-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœ-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjä,ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjž,h²hh³j°,h´MLubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjš,h²hh³j°,h´MLubah}”(h]”j•,ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j°,h´MLhj—,h²hubj4)�”}”(hhh]”jM)�”}”(hŒOpen a new devres group”h]”hŒOpen a new devres group”…”�”}”(hjù-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MLhjö-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj—,h²hh³j°,h´MLubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj.jHj.jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX”**Parameters** ``struct device *dev`` Device to open devres group for ``void *id`` Separator ID ``gfp_t gfp`` Allocation flags **Description** Open a new devres group for **dev** with **id**. For **id**, using a pointer to an object which won't be used for another group is recommended. If **id** is NULL, address-wise unique ID is created. **Return** ID of the new group, NULL on failure.”h]”(jM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MPhj.ubj¤)�”}”(hhh]”(j©)�”}”(hŒ7``struct device *dev`` Device to open devres group for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj:.h]”hŒstruct device *dev”…”�”}”(hj<.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MMhj4.ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to open devres group for”h]”hŒDevice to open devres group for”…”�”}”(hjS.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jO.h´MMhjP.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj4.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jO.h´MMhj1.ubj©)�”}”(hŒ``void *id`` Separator ID ”h]”(j¯)�”}”(hŒ ``void *id``”h]”jS)�”}”(hjs.h]”hŒvoid *id”…”�”}”(hju.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjq.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MNhjm.ubjÉ)�”}”(hhh]”jM)�”}”(hŒ Separator ID”h]”hŒ Separator ID”…”�”}”(hjŒ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jˆ.h´MNhj‰.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjm.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆ.h´•MNhj1.ubj©)�”}”(hŒ``gfp_t gfp`` Allocation flags ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hj¬.h]”hŒ gfp_t gfp”…”�”}”(hj®.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjª.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MOhj¦.ubjÉ)�”}”(hhh]”jM)�”}”(hŒAllocation flags”h]”hŒAllocation flags”…”�”}”(hjÅ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÁ.h´MOhjÂ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¦.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÁ.h´MOhj1.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj.ubjM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MQhj.ubjM)�”}”(hŒÇOpen a new devres group for **dev** with **id**. For **id**, using a pointer to an object which won't be used for another group is recommended. If **id** is NULL, address-wise unique ID is created.”h]”(hŒOpen a new devres group for ”…”�”}”(hjý.h²hh³Nh´NubjŽ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjý.ubhŒ with ”…”�”}”(hjý.h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjý.ubhŒ. For ”…”�”}”(hjý.h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj)/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjý.ubhŒ[, using a pointer to an object which won’t be used for another group is recommended. If ”…”�”}”(hjý.h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj;/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjý.ubhŒ, is NULL, address-wise unique ID is created.”…”�”}”(hjý.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MPhj.ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjV/h]”hŒReturn”…”�”}”(hjX/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjT/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MThj.ubjM)�”}”(hŒ%ID of the new group, NULL on failure.”h]”hŒ%ID of the new group, NULL on failure.”…”�”}”(hjl/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MUhj.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_close_group (C function)”Œc.devres_close_group”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6void devres_close_group (struct device *dev, void *id)”h]”hù)�”}”(hŒ5void devres_close_group(struct device *dev, void *id)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj›/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj—/h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª/h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj—/h²hh³j©/h´M‰ubhÿ)�”}”(hŒdevres_close_group”h]”j)�”}”(hŒdevres_close_group”h]”hŒdevres_close_group”…”�”}”(hj¼/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸/ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj—/h²hh³j©/h´M‰ubj4)�”}”(hŒ(struct device *dev, void *id)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjØ/h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÔ/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå/h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔ/ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjö/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jø/Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¾/sbŒc.devres_close_group”†”asbuh1hhjÔ/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÔ/ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj$0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÔ/ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj10h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔ/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÐ/ubj:)�”}”(hŒvoid *id”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJ0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjF0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjF0ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjf0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjF0ubj)�”}”(hŒid”h]”hŒid”…”�”}”(hjs0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjF0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÐ/ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj—/h²hh³j©/h´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj“/h²hh³j©/h´M‰ubah}”(h]”jŽ/ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j©/h´M‰hj�/h²hubj4)�”}”(hhh]”jM)�”}”(hŒClose a devres group”h]”hŒClose a devres group”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‰hjš0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�/h²hh³j©/h´M‰ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjµ0jHjµ0jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hŒè**Parameters** ``struct device *dev`` Device to close devres group for ``void *id`` ID of target group, can be NULL **Description** Close the group identified by **id**. If **id** is NULL, the latest open group is selected.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj¿0h]”hŒ Parameters”…”�”}”(hjÁ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj½0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M�hj¹0ubj¤)�”}”(hhh]”(j©)�”}”(hŒ8``struct device *dev`` Device to close devres group for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjÞ0h]”hŒstruct device *dev”…”�”}”(hjà0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÜ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MŠhjØ0ubjÉ)�”}”(hhh]”jM)�”}”(hŒ Device to close devres group for”h]”hŒ Device to close devres group for”…”�”}”(hj÷0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jó0h´MŠhjô0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjØ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jó0h´MŠhjÕ0ubj©)�”}”(hŒ-``void *id`` ID of target group, can be NULL ”h]”(j¯)�”}”(hŒ ``void *id``”h]”jS)�”}”(hj1h]”hŒvoid *id”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‹hj1ubjÉ)�”}”(hhh]”jM)�”}”(hŒID of target group, can be NULL”h]”hŒID of target group, can be NULL”…”�”}”(hj01h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j,1h´M‹hj-1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j,1h´M‹hjÕ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¹0ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjR1h]”hŒ Description”…”�”}”(hjT1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M�hj¹0ubjM)�”}”(hŒ\Close the group identified by **id**. If **id** is NULL, the latest open group is selected.”h]”(hŒClose the group identified by ”…”�”}”(hjh1h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjp1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh1ubhŒ. If ”…”�”}”(hjh1h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj‚1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh1ubhŒ, is NULL, the latest open group is selected.”…”�”}”(hjh1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MŒhj¹0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ devres_remove_group (C function)”Œc.devres_remove_group”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7void devres_remove_group (struct device *dev, void *id)”h]”hù)�”}”(hŒ6void devres_remove_group(struct device *dev, void *id)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj»1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj·1h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MžubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·1h²hh³jÉ1h´Mžubhÿ)�”}”(hŒdevres_remove_group”h]”j)�”}”(hŒdevres_remove_group”h]”hŒdevres_remove_group”…”�”}”(hjÜ1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ1ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj·1h²hh³jÉ1h´Mžubj4)�”}”(hŒ(struct device *dev, void *id)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjø1h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjô1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjô1ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j2Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÞ1sbŒc.devres_remove_group”†”asbuh1hhjô1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj62h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjô1ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjD2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjô1ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjQ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjô1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjð1ubj:)�”}”(hŒvoid *id”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjj2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjf2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjf2ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj†2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjf2ubj)�”}”(hŒid”h]”hŒid”…”�”}”(hj“2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjð1ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj·1h²hh³jÉ1h´Mžubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj³1h²hh³jÉ1h´Mžubah}”(h]”j®1ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÉ1h´Mžhj°1h²hubj4)�”}”(hhh]”jM)�”}”(hŒRemove a devres group”h]”hŒRemove a devres group”…”�”}”(hj½2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mžhjº2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj°1h²hh³jÉ1h´Mžubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÕ2jHjÕ2jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX#**Parameters** ``struct device *dev`` Device to remove group for ``void *id`` ID of target group, can be NULL **Description** Remove the group identified by **id**. If **id** is NULL, the latest open group is selected. Note that removing a group doesn't affect any other resources.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjß2h]”hŒ Parameters”…”�”}”(hjá2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÝ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¢hjÙ2ubj¤)�”}”(hhh]”(j©)�”}”(hŒ2``struct device *dev`` Device to remove group for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjþ2h]”hŒstruct device *dev”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjü2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MŸhjø2ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to remove group for”h]”hŒDevice to remove group for”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j3h´MŸhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjø2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j3h´MŸhjõ2ubj©)�”}”(hŒ-``void *id`` ID of target group, can be NULL ”h]”(j¯)�”}”(hŒ ``void *id``”h]”jS)�”}”(hj73h]”hŒvoid *id”…”�”}”(hj93h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj53ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M hj13ubjÉ)�”}”(hhh]”jM)�”}”(hŒID of target group, can be NULL”h]”hŒID of target group, can be NULL”…”�”}”(hjP3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jL3h´M hjM3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj13ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jL3h´M hjõ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÙ2ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjr3h]”hŒ Description”…”�”}”(hjt3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjp3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¢hjÙ2ubjM)�”}”(hŒ�Remove the group identified by **id**. If **id** is NULL, the latest open group is selected. Note that removing a group doesn't affect any other resources.”h]”(hŒRemove the group identified by ”…”�”}”(hjˆ3h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj�3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ3ubhŒ. If ”…”�”}”(hjˆ3h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj¢3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjˆ3ubhŒn is NULL, the latest open group is selected. Note that removing a group doesn’t affect any other resources.”…”�”}”(hjˆ3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¡hjÙ2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!devres_release_group (C function)”Œc.devres_release_group”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7int devres_release_group (struct device *dev, void *id)”h]”hù)�”}”(hŒ6int devres_release_group(struct device *dev, void *id)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjÛ3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj×3h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¼ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj×3h²hh³jé3h´M¼ubhÿ)�”}”(hŒdevres_release_group”h]”j)�”}”(hŒdevres_release_group”h]”hŒdevres_release_group”…”�”}”(hjü3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjø3ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj×3h²hh³jé3h´M¼ubj4)�”}”(hŒ(struct device *dev, void *id)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj64h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj34ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j84Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjþ3sbŒc.devres_release_group”†”asbuh1hhj4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjd4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj4ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjq4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj4ubj:)�”}”(hŒvoid *id”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŠ4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj†4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†4ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¦4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj†4ubj)�”}”(hŒid”h]”hŒid”…”�”}”(hj³4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj4ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj×3h²hh³jé3h´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÓ3h²hh³jé3h´M¼ubah}”(h]”jÎ3ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jé3h´M¼hjÐ3h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#Release resources in a devres group”h]”hŒ#Release resources in a devres group”…”�”}”(hjÝ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¼hjÚ4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÐ3h²hh³jé3h´M¼ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjõ4jHjõ4jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX…**Parameters** ``struct device *dev`` Device to release group for ``void *id`` ID of target group, can be NULL **Description** Release all resources in the group identified by **id**. If **id** is NULL, the latest open group is selected. The selected group and groups properly nested inside the selected group are removed. **Return** The number of released non-group resources.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjÿ4h]”hŒ Parameters”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjý4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÀhjù4ubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``struct device *dev`` Device to release group for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj5h]”hŒstruct device *dev”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M½hj5ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to release group for”h]”hŒDevice to release group for”…”�”}”(hj75h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j35h´M½hj45ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j35h´M½hj5ubj©)�”}”(hŒ-``void *id`` ID of target group, can be NULL ”h]”(j¯)�”}”(hŒ ``void *id``”h]”jS)�”}”(hjW5h]”hŒvoid *id”…”�”}”(hjY5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjU5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¾hjQ5ubjÉ)�”}”(hhh]”jM)�”}”(hŒID of target group, can be NULL”h]”hŒID of target group, can be NULL”…”�”}”(hjp5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jl5h´M¾hjm5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jl5h´M¾hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjù4ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj’5h]”hŒ Description”…”�”}”(hj”5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÀhjù4ubjM)�”}”(hŒÅRelease all resources in the group identified by **id**. If **id** is NULL, the latest open group is selected. The selected group and groups properly nested inside the selected group are removed.”h]”(hŒ1Release all resources in the group identified by ”…”�”}”(hj¨5h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj°5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨5ubhŒ. If ”…”�”}”(hj¨5h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjÂ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¨5ubhŒ‚ is NULL, the latest open group is selected. The selected group and groups properly nested inside the selected group are removed.”…”�”}”(hj¨5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¿hjù4ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÝ5h]”hŒReturn”…”�”}”(hjß5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÃhjù4ubjM)�”}”(hŒ+The number of released non-group resources.”h]”hŒ+The number of released non-group resources.”…”�”}”(hjó5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÄhjù4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ__devm_add_action (C function)”Œc.__devm_add_action”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ`int __devm_add_action (struct device *dev, void (*action)(void *), void *data, const char *name)”h]”hù)�”}”(hŒ^int __devm_add_action(struct device *dev, void (*action)(void*), void *data, const char *name)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj"6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj6h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj16h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6h²hh³j06h´M ubhÿ)�”}”(hŒ__devm_add_action”h]”j)�”}”(hŒ__devm_add_action”h]”hŒ__devm_add_action”…”�”}”(hjC6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?6ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj6h²hh³j06h´M ubj4)�”}”(hŒI(struct device *dev, void (*action)(void*), void *data, const char *name)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj_6h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj[6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[6ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj}6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j6Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjE6sbŒc.__devm_add_action”†”asbuh1hhj[6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[6ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj«6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj[6ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¸6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjW6ubj:)�”}”(hŒvoid (*action)(void*)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÑ6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÍ6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÍ6ubj”)�”}”(hjsh]”hŒ(”…”�”}”(hjí6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍ6ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjú6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍ6ubj)�”}”(hŒaction”h]”hŒaction”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÍ6ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍ6ubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj"7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍ6ubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj/7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÍ6ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj=7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍ6ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjJ7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÍ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjW6ubj:)�”}”(hŒ void *data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjb7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj^7ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj^7ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj~7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj^7ubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj‹7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjW6ubj:)�”}”(hŒconst char *name”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj¤7h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj 7ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj 7ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¿7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj 7ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj 7ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÛ7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj 7ubj)�”}”(hŒname”h]”hŒname”…”�”}”(hjè7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj 7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjW6ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj6h²hh³j06h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj6h²hh³j06h´M ubah}”(h]”j6ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j06h´M hj6h²hubj4)�”}”(hhh]”jM)�”}”(hŒ0add a custom action to list of managed resources”h]”hŒ0add a custom action to list of managed resources”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M hj8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj6h²hh³j06h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj*8jHj*8jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX›**Parameters** ``struct device *dev`` Device that owns the action ``void (*action)(void *)`` Function that should be called ``void *data`` Pointer to data passed to **action** implementation ``const char *name`` Name of the resource (for debugging purposes) **Description** This adds a custom action to the list of managed resources so that it gets executed as part of standard resource unwinding.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj48h]”hŒ Parameters”…”�”}”(hj68h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj28ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj.8ubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``struct device *dev`` Device that owns the action ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjS8h]”hŒstruct device *dev”…”�”}”(hjU8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjQ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MhjM8ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice that owns the action”h]”hŒDevice that owns the action”…”�”}”(hjl8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh8h´Mhji8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjM8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh8h´MhjJ8ubj©)�”}”(hŒ:``void (*action)(void *)`` Function that should be called ”h]”(j¯)�”}”(hŒ``void (*action)(void *)``”h]”jS)�”}”(hjŒ8h]”hŒvoid (*action)(void *)”…”�”}”(hjŽ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŠ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj†8ubjÉ)�”}”(hhh]”jM)�”}”(hŒFunction that should be called”h]”hŒFunction that should be called”…”�”}”(hj¥8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¡8h´Mhj¢8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj†8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¡8h´MhjJ8ubj©)�”}”(hŒC``void *data`` Pointer to data passed to **action** implementation ”h]”(j¯)�”}”(hŒ``void *data``”h]”jS)�”}”(hjÅ8h]”hŒ void *data”…”�”}”(hjÇ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÃ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj¿8ubjÉ)�”}”(hhh]”jM)�”}”(hŒ3Pointer to data passed to **action** implementation”h]”(hŒPointer to data passed to ”…”�”}”(hjÞ8h²hh³Nh´NubjŽ)�”}”(hŒ **action**”h]”hŒaction”…”�”}”(hjæ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞ8ubhŒ implementation”…”�”}”(hjÞ8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÚ8h´MhjÛ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¿8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÚ8h´MhjJ8ubj©)�”}”(hŒC``const char *name`` Name of the resource (for debugging purposes) ”h]”(j¯)�”}”(hŒ``const char *name``”h]”jS)�”}”(hj9h]”hŒconst char *name”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj 9ubjÉ)�”}”(hhh]”jM)�”}”(hŒ-Name of the resource (for debugging purposes)”h]”hŒ-Name of the resource (for debugging purposes)”…”�”}”(hj)9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j%9h´Mhj&9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj 9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j%9h´MhjJ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj.8ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjK9h]”hŒ Description”…”�”}”(hjM9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj.8ubjM)�”}”(hŒ{This adds a custom action to the list of managed resources so that it gets executed as part of standard resource unwinding.”h]”hŒ{This adds a custom action to the list of managed resources so that it gets executed as part of standard resource unwinding.”…”�”}”(hja9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj.8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&devm_remove_action_nowarn (C function)”Œc.devm_remove_action_nowarn”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒVint devm_remove_action_nowarn (struct device *dev, void (*action)(void *), void *data)”h]”hù)�”}”(hŒTint devm_remove_action_nowarn(struct device *dev, void (*action)(void*), void *data)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŒ9h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŒ9h²hh³jž9h´MZubhÿ)�”}”(hŒdevm_remove_action_nowarn”h]”j)�”}”(hŒdevm_remove_action_nowarn”h]”hŒdevm_remove_action_nowarn”…”�”}”(hj±9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­9ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjŒ9h²hh³jž9h´MZubj4)�”}”(hŒ7(struct device *dev, void (*action)(void*), void *data)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÍ9h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÉ9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉ9ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjë9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjè9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jí9Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj³9sbŒc.devm_remove_action_nowarn”†”asbuh1hhjÉ9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉ9ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÉ9ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj&:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉ9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÅ9ubj:)�”}”(hŒvoid (*action)(void*)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj;:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;:ubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj[:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj;:ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj;:ubj)�”}”(hŒaction”h]”hŒaction”…”�”}”(hju:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;:ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjƒ:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj;:ubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj;:ubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj;:ubj”)�”}”(hj—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;:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÅ9ubj:)�”}”(hŒ void *data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÐ:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÌ:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÌ:ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjì:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÌ:ubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjù:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌ:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÅ9ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjŒ9h²hh³jž9h´MZubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjˆ9h²hh³jž9h´MZubah}”(h]”jƒ9ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jž9h´MZhj…9h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&removes previously added custom action”h]”hŒ&removes previously added custom action”…”�”}”(hj#;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MZhj ;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj…9h²hh³jž9h´MZubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj;;jHj;;jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX÷**Parameters** ``struct device *dev`` Device that owns the action ``void (*action)(void *)`` Function implementing the action ``void *data`` Pointer to data passed to **action** implementation **Description** Removes instance of **action** previously added by devm_add_action(). Both action and data should match one of the existing entries. In contrast to devm_remove_action(), this function does not WARN() if no entry could have been found. This should only be used if the action is contained in an object with independent lifetime management, e.g. the Devres rust abstraction. Causing the warning from regular driver code most likely indicates an abuse of the devres API. **Return** 0 on success, -ENOENT if no entry could have been found.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjE;h]”hŒ Parameters”…”�”}”(hjG;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjC;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M^hj?;ubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``struct device *dev`` Device that owns the action ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjd;h]”hŒstruct device *dev”…”�”}”(hjf;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjb;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M[hj^;ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice that owns the action”h]”hŒDevice that owns the action”…”�”}”(hj};h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ<``void (*action)(void *)`` Function implementing the action ”h]”(j¯)�”}”(hŒ``void (*action)(void *)``”h]”jS)�”}”(hj�;h]”hŒvoid (*action)(void *)”…”�”}”(hjŸ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj›;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M\hj—;ubjÉ)�”}”(hhh]”jM)�”}”(hŒ Function implementing the action”h]”hŒ Function implementing the action”…”�”}”(hj¶;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒC``void *data`` Pointer to data passed to **action** implementation ”h]”(j¯)�”}”(hŒ``void *data``”h]”jS)�”}”(hjÖ;h]”hŒ void *data”…”�”}”(hjØ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÔ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M]hjÐ;ubjÉ)�”}”(hhh]”jM)�”}”(hŒ3Pointer to data passed to **action** implementation”h]”(hŒPointer to data passed to ”…”�”}”(hjï;h²hh³Nh´NubjŽ)�”}”(hŒ **action**”h]”hŒaction”…”�”}”(hj÷;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjï;ubhŒ implementation”…”�”}”(hjï;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj?;ubjM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M_hj?;ubjM)�”}”(hŒ„Removes instance of **action** previously added by devm_add_action(). Both action and data should match one of the existing entries.”h]”(hŒRemoves instance of ”…”�”}”(hj9<h²hh³Nh´NubjŽ)�”}”(hŒ **action**”h]”hŒaction”…”�”}”(hjA<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9<ubhŒf previously added by devm_add_action(). Both action and data should match one of the existing entries.”…”�”}”(hj9<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M^hj?;ubjM)�”}”(hŒeIn contrast to devm_remove_action(), this function does not WARN() if no entry could have been found.”h]”hŒeIn contrast to devm_remove_action(), this function does not WARN() if no entry could have been found.”…”�”}”(hjZ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mahj?;ubjM)�”}”(hŒˆThis should only be used if the action is contained in an object with independent lifetime management, e.g. the Devres rust abstraction.”h]”hŒˆThis should only be used if the action is contained in an object with independent lifetime management, e.g. the Devres rust abstraction.”…”�”}”(hji<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mdhj?;ubjM)�”}”(hŒ^Causing the warning from regular driver code most likely indicates an abuse of the devres API.”h]”hŒ^Causing the warning from regular driver code most likely indicates an abuse of the devres API.”…”�”}”(hjx<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mghj?;ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj‰<h]”hŒReturn”…”�”}”(hj‹<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‡<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mjhj?;ubjM)�”}”(hŒ80 on success, -ENOENT if no entry could have been found.”h]”hŒ80 on success, -ENOENT if no entry could have been found.”…”�”}”(hjŸ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mkhj?;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ devm_release_action (C function)”Œc.devm_release_action”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒQvoid devm_release_action (struct device *dev, void (*action)(void *), void *data)”h]”hù)�”}”(hŒOvoid devm_release_action(struct device *dev, void (*action)(void*), void *data)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÎ<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÊ<h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M~ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÊ<h²hh³jÜ<h´M~ubhÿ)�”}”(hŒdevm_release_action”h]”j)�”}”(hŒdevm_release_action”h]”hŒdevm_release_action”…”�”}”(hjï<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjë<ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÊ<h²hh³jÜ<h´M~ubj4)�”}”(hŒ7(struct device *dev, void (*action)(void*), void *data)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj=ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj)=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j+=Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjñ<sbŒc.devm_release_action”†”asbuh1hhj=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj=ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjW=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj=ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjd=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj=ubj:)�”}”(hŒvoid (*action)(void*)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj}=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjy=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjy=ubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj™=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjy=ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¦=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjy=ubj)�”}”(hŒaction”h]”hŒaction”…”�”}”(hj³=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjy=ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjÁ=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjy=ubj”)�”}”(hjsh]”hŒ(”…”�”}”(hjÎ=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjy=ubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛ=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjy=ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjé=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjy=ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjö=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjy=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj=ubj:)�”}”(hŒ void *data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj >ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj >ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj*>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj >ubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj7>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj >ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj=ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÊ<h²hh³jÜ<h´M~ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÆ<h²hh³jÜ<h´M~ubah}”(h]”jÁ<ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÜ<h´M~hjÃ<h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&release previously added custom action”h]”hŒ&release previously added custom action”…”�”}”(hja>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M~hj^>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÃ<h²hh³jÜ<h´M~ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjy>jHjy>jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hXn**Parameters** ``struct device *dev`` Device that owns the action ``void (*action)(void *)`` Function implementing the action ``void *data`` Pointer to data passed to **action** implementation **Description** Releases and removes instance of **action** previously added by devm_add_action(). Both action and data should match one of the existing entries.”h]”(jM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‚hj}>ubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``struct device *dev`` Device that owns the action ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj¢>h]”hŒstruct device *dev”…”�”}”(hj¤>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj >ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhjœ>ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice that owns the action”h]”hŒDevice that owns the action”…”�”}”(hj»>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j·>h´Mhj¸>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjœ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j·>h´Mhj™>ubj©)�”}”(hŒ<``void (*action)(void *)`` Function implementing the action ”h]”(j¯)�”}”(hŒ``void (*action)(void *)``”h]”jS)�”}”(hjÛ>h]”hŒvoid (*action)(void *)”…”�”}”(hjÝ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÙ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M€hjÕ>ubjÉ)�”}”(hhh]”jM)�”}”(hŒ Function implementing the action”h]”hŒ Function implementing the action”…”�”}”(hjô>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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ŒC``void *data`` Pointer to data passed to **action** implementation ”h]”(j¯)�”}”(hŒ``void *data``”h]”jS)�”}”(hj?h]”hŒ void *data”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M�hj?ubjÉ)�”}”(hhh]”jM)�”}”(hŒ3Pointer to data passed to **action** implementation”h]”(hŒPointer to data passed to ”…”�”}”(hj-?h²hh³Nh´NubjŽ)�”}”(hŒ **action**”h]”hŒaction”…”�”}”(hj5?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-?ubhŒ implementation”…”�”}”(hj-?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj}>ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hja?h]”hŒ Description”…”�”}”(hjc?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mƒhj}>ubjM)�”}”(hŒ’Releases and removes instance of **action** previously added by devm_add_action(). Both action and data should match one of the existing entries.”h]”(hŒ!Releases and removes instance of ”…”�”}”(hjw?h²hh³Nh´NubjŽ)�”}”(hŒ **action**”h]”hŒaction”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw?ubhŒg previously added by devm_add_action(). Both action and data should match one of the existing entries.”…”�”}”(hjw?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‚hj}>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kmalloc (C function)”Œc.devm_kmalloc”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@void * devm_kmalloc (struct device *dev, size_t size, gfp_t gfp)”h]”hù)�”}”(hŒ>void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¸?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj´?h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj´?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£ubhÿ)�”}”(hŒ devm_kmalloc”h]”j)�”}”(hŒ devm_kmalloc”h]”hŒ devm_kmalloc”…”�”}”(hjæ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâ?ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj´?h²hh³jÆ?h´M£ubj4)�”}”(hŒ,(struct device *dev, size_t size, gfp_t gfp)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjþ?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþ?ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j"@Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjè?sbŒc.devm_kmalloc”†”asbuh1hhjþ?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþ?ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjN@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjþ?ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj[@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjú?ubj:)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjw@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jy@Œmodname”NŒ classname”Njwjz)�”}”j}]”j<@Œc.devm_kmalloc”†”asbuh1hhjp@ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjp@ubj)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj£@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjú?ubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj¿@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÁ@Œmodname”NŒ classname”Njwjz)�”}”j}]”j<@Œc.devm_kmalloc”†”asbuh1hhj¸@ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ@h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¸@ubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjë@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjú?ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj´?h²hh³jÆ?h´M£ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj°?h²hh³jÆ?h´M£ubah}”(h]”j«?ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÆ?h´M£hj­?h²hubj4)�”}”(hhh]”jM)�”}”(hŒResource-managed kmalloc”h]”hŒResource-managed kmalloc”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M£hjAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj­?h²hh³jÆ?h´M£ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj-AjHj-AjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX”**Parameters** ``struct device *dev`` Device to allocate memory for ``size_t size`` Allocation size ``gfp_t gfp`` Allocation gfp flags **Description** Managed kmalloc. Memory allocated with this function is automatically freed on driver detach. Like all other devres resources, guaranteed alignment is unsigned long long. **Return** Pointer to allocated memory on success, NULL on failure.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj7Ah]”hŒ Parameters”…”�”}”(hj9Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M§hj1Aubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device to allocate memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjVAh]”hŒstruct device *dev”…”�”}”(hjXAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjTAubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¤hjPAubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to allocate memory for”h]”hŒDevice to allocate memory for”…”�”}”(hjoAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jkAh´M¤hjlAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjPAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jkAh´M¤hjMAubj©)�”}”(hŒ ``size_t size`` Allocation size ”h]”(j¯)�”}”(hŒ``size_t size``”h]”jS)�”}”(hj�Ah]”hŒ size_t size”…”�”}”(hj‘Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj�Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¥hj‰AubjÉ)�”}”(hhh]”jM)�”}”(hŒAllocation size”h]”hŒAllocation size”…”�”}”(hj¨Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¤Ah´M¥hj¥Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‰Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¤Ah´M¥hjMAubj©)�”}”(hŒ#``gfp_t gfp`` Allocation gfp flags ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjÈAh]”hŒ gfp_t gfp”…”�”}”(hjÊAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆAubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¦hjÂAubjÉ)�”}”(hhh]”jM)�”}”(hŒAllocation gfp flags”h]”hŒAllocation gfp flags”…”�”}”(hjáAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÝAh´M¦hjÞAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÂAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÝAh´M¦hjMAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj1AubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjBh]”hŒ Description”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¨hj1AubjM)�”}”(hŒ¬Managed kmalloc. Memory allocated with this function is automatically freed on driver detach. Like all other devres resources, guaranteed alignment is unsigned long long.”h]”hŒ¬Managed kmalloc. Memory allocated with this function is automatically freed on driver detach. Like all other devres resources, guaranteed alignment is unsigned long long.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M§hj1AubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj*Bh]”hŒReturn”…”�”}”(hj,Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M«hj1AubjM)�”}”(hŒ8Pointer to allocated memory on success, NULL on failure.”h]”hŒ8Pointer to allocated memory on success, NULL on failure.”…”�”}”(hj@Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¬hj1Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_krealloc (C function)”Œc.devm_krealloc”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPvoid * devm_krealloc (struct device *dev, void *ptr, size_t new_size, gfp_t gfp)”h]”hù)�”}”(hŒNvoid *devm_krealloc(struct device *dev, void *ptr, size_t new_size, gfp_t gfp)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjoBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjkBh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjkBh²hh³j}Bh´MÆubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŒBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjkBh²hh³j}Bh´MÆubhÿ)�”}”(hŒ devm_krealloc”h]”j)�”}”(hŒ devm_krealloc”h]”hŒ devm_krealloc”…”�”}”(hj�Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™Bubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjkBh²hh³j}Bh´MÆubj4)�”}”(hŒ;(struct device *dev, void *ptr, size_t new_size, gfp_t gfp)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj¹Bh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjµBubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆBh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµBubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj×Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÙBŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjŸBsbŒc.devm_krealloc”†”asbuh1hhjµBubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµBubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjµBubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±Bubj:)�”}”(hŒ void *ptr”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj+Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj'CubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Ch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'Cubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjGCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj'Cubj)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjTCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±Bubj:)�”}”(hŒsize_t new_size”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjpCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jrCŒmodname”NŒ classname”Njwjz)�”}”j}]”jóBŒc.devm_krealloc”†”asbuh1hhjiCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽCh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjiCubj)�”}”(hŒnew_size”h]”hŒnew_size”…”�”}”(hjœCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±Bubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj¸Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jºCŒmodname”NŒ classname”Njwjz)�”}”j}]”jóBŒc.devm_krealloc”†”asbuh1hhj±CubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖCh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±Cubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjäCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj±Bubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjkBh²hh³j}Bh´MÆubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjgBh²hh³j}Bh´MÆubah}”(h]”jbBah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j}Bh´MÆhjdBh²hubj4)�”}”(hhh]”jM)�”}”(hŒResource-managed krealloc()”h]”hŒResource-managed krealloc()”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÆhj Dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjdBh²hh³j}Bh´MÆubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj&DjHj&DjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX**Parameters** ``struct device *dev`` Device to re-allocate memory for ``void *ptr`` Pointer to the memory chunk to re-allocate ``size_t new_size`` New allocation size ``gfp_t gfp`` Allocation gfp flags **Description** Managed krealloc(). Resizes the memory chunk allocated with devm_kmalloc(). Behaves similarly to regular krealloc(): if **ptr** is NULL or ZERO_SIZE_PTR, it's the equivalent of devm_kmalloc(). If new_size is zero, it frees the previously allocated memory and returns ZERO_SIZE_PTR. This function doesn't change the order in which the release callback for the re-alloc'ed devres will be called (except when falling back to devm_kmalloc() or when freeing resources when new_size is zero). The contents of the memory are preserved up to the lesser of new and old sizes.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj0Dh]”hŒ Parameters”…”�”}”(hj2Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÊhj*Dubj¤)�”}”(hhh]”(j©)�”}”(hŒ8``struct device *dev`` Device to re-allocate memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjODh]”hŒstruct device *dev”…”�”}”(hjQDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjMDubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÇhjIDubjÉ)�”}”(hhh]”jM)�”}”(hŒ Device to re-allocate memory for”h]”hŒ Device to re-allocate memory for”…”�”}”(hjhDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jdDh´MÇhjeDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjIDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jdDh´MÇhjFDubj©)�”}”(hŒ9``void *ptr`` Pointer to the memory chunk to re-allocate ”h]”(j¯)�”}”(hŒ ``void *ptr``”h]”jS)�”}”(hjˆDh]”hŒ void *ptr”…”�”}”(hjŠDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj†Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÈhj‚DubjÉ)�”}”(hhh]”jM)�”}”(hŒ*Pointer to the memory chunk to re-allocate”h]”hŒ*Pointer to the memory chunk to re-allocate”…”�”}”(hj¡Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�Dh´MÈhjžDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‚Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Dh´MÈhjFDubj©)�”}”(hŒ(``size_t new_size`` New allocation size ”h]”(j¯)�”}”(hŒ``size_t new_size``”h]”jS)�”}”(hjÁDh]”hŒsize_t new_size”…”�”}”(hjÃDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¿Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÉhj»DubjÉ)�”}”(hhh]”jM)�”}”(hŒNew allocation size”h]”hŒNew allocation size”…”�”}”(hjÚDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÖDh´MÉhj×Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj»Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÖDh´MÉhjFDubj©)�”}”(hŒ#``gfp_t gfp`` Allocation gfp flags ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjúDh]”hŒ gfp_t gfp”…”�”}”(hjüDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjøDubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÊhjôDubjÉ)�”}”(hhh]”jM)�”}”(hŒAllocation gfp flags”h]”hŒAllocation gfp flags”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jEh´MÊhjEubah}”(h•-]”h ]”h"]”h$]”h&]”uh1jÈhjôDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jEh´MÊhjFDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj*DubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj5Eh]”hŒ Description”…”�”}”(hj7Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÌhj*DubjM)�”}”(hX6Managed krealloc(). Resizes the memory chunk allocated with devm_kmalloc(). Behaves similarly to regular krealloc(): if **ptr** is NULL or ZERO_SIZE_PTR, it's the equivalent of devm_kmalloc(). If new_size is zero, it frees the previously allocated memory and returns ZERO_SIZE_PTR. This function doesn't change the order in which the release callback for the re-alloc'ed devres will be called (except when falling back to devm_kmalloc() or when freeing resources when new_size is zero). The contents of the memory are preserved up to the lesser of new and old sizes.”h]”(hŒxManaged krealloc(). Resizes the memory chunk allocated with devm_kmalloc(). Behaves similarly to regular krealloc(): if ”…”�”}”(hjKEh²hh³Nh´NubjŽ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hjSEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKEubhX½ is NULL or ZERO_SIZE_PTR, it’s the equivalent of devm_kmalloc(). If new_size is zero, it frees the previously allocated memory and returns ZERO_SIZE_PTR. This function doesn’t change the order in which the release callback for the re-alloc’ed devres will be called (except when falling back to devm_kmalloc() or when freeing resources when new_size is zero). The contents of the memory are preserved up to the lesser of new and old sizes.”…”�”}”(hjKEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MËhj*Dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kstrdup (C function)”Œc.devm_kstrdup”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒBchar * devm_kstrdup (struct device *dev, const char *s, gfp_t gfp)”h]”hù)�”}”(hŒ@char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp)”h]”(jü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjŒEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjˆEh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjˆEh²hh³jšEh´M,ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj©Eh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjˆEh²hh³jšEh´M,ubhÿ)�”}”(hŒ devm_kstrdup”h]”j)�”}”(hŒ devm_kstrdup”h]”hŒ devm_kstrdup”…”�”}”(hjºEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¶Eubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjˆEh²hh³jšEh´M,ubj4)�”}”(hŒ.(struct device *dev, const char *s, gfp_t gfp)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjÖEh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÒEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãEh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÒEubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjôEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jöEŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¼EsbŒc.devm_kstrdup”†”asbuh1hhjÒEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÒEubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj"Fh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÒEubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj/Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÒEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÎEubj:)�”}”(hŒ const char *s”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjHFh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjDFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjDFubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjcFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjDFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjDFubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjDFubj)�”}”(hŒs”h]”hŒs”…”�”}”(hjŒFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÎEubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj¨Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jªFŒmodname”NŒ classname”Njwjz)�”}”j}]”jFŒc.devm_kstrdup”†”asbuh1hhj¡FubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡Fubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjÔFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÎEubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjˆEh²hh³jšEh´M,ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj„Eh²hh³jšEh´M,ubah}”(h]”jEah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jšEh´M,hj�Eh²hubj4)�”}”(hhh]”jM)�”}”(hŒFAllocate resource managed space and copy an existing string into that.”h]”hŒFAllocate resource managed space and copy an existing string into that.”…”�”}”(hjþFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M,hjûFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�Eh²hh³jšEh´M,ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjGjHjGjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX**Parameters** ``struct device *dev`` Device to allocate memory for ``const char *s`` the string to duplicate ``gfp_t gfp`` the GFP mask used in the devm_kmalloc() call when allocating memory **Return** Pointer to allocated string on success, NULL on failure.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj Gh]”hŒ Parameters”…”�”}”(hj"Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M0hjGubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device to allocate memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj?Gh]”hŒstruct device *dev”…”�”}”(hjAGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M.hj9GubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to allocate memory for”h]”hŒDevice to allocate memory for”…”�”}”(hjXGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jTGh´M.hjUGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jTGh´M.hj6Gubj©)�”}”(hŒ*``const char *s`` the string to duplicate ”h]”(j¯)�”}”(hŒ``const char *s``”h]”jS)�”}”(hjxGh]”hŒ const char *s”…”�”}”(hjzGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjvGubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M/hjrGubjÉ)�”}”(hhh]”jM)�”}”(hŒthe string to duplicate”h]”hŒthe string to duplicate”…”�”}”(hj‘Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�Gh´M/hjŽGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjrGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Gh´M/hj6Gubj©)�”}”(hŒR``gfp_t gfp`` the GFP mask used in the devm_kmalloc() call when allocating memory ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hj±Gh]”hŒ gfp_t gfp”…”�”}”(hj³Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¯Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M1hj«GubjÉ)�”}”(hhh]”jM)�”}”(hŒCthe GFP mask used in the devm_kmalloc() call when allocating memory”h]”hŒCthe GFP mask used in the devm_kmalloc() call when allocating memory”…”�”}”(hjÊGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M0hjÇGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj«Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÆGh´M1hj6Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjGubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjíGh]”hŒReturn”…”�”}”(hjïGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjëGubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M3hjGubjM)�”}”(hŒ8Pointer to allocated string on success, NULL on failure.”h]”hŒ8Pointer to allocated string on success, NULL on failure.”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M2hjGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kstrdup_const (C function)”Œc.devm_kstrdup_const”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒNconst char * devm_kstrdup_const (struct device *dev, const char *s, gfp_t gfp)”h]”hù)�”}”(hŒLconst char *devm_kstrdup_const(struct device *dev, const char *s, gfp_t gfp)”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj2Hh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj.Hh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj.Hh²hh³j?Hh´M?ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjNHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj.Hh²hh³j?Hh´M?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj.Hh²hh³j?Hh´M?ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjjHh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj.Hh²hh³j?Hh´M?ubhÿ)�”}”(hŒdevm_kstrdup_const”h]”j)�”}”(hŒdevm_kstrdup_const”h]”hŒdevm_kstrdup_const”…”�”}”(hj{Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwHubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj.Hh²hh³j?Hh´M?ubj4)�”}”(hŒ.(struct device *dev, const char *s, gfp_t gfp)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj—Hh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj“HubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“Hubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjµHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj²Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j·HŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj}HsbŒc.devm_kstrdup_const”†”asbuh1hhj“HubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕHh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj“Hubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjãHh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj“Hubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjðHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“Hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Hubj:)�”}”(hŒ const char *s”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjIubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjIubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj$Ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjIubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjIubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj@Ih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjIubj)�”}”(hjŽFh]”hŒs”…”�”}”(hjMIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Hubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjhIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jjIŒmodname”NŒ classname”Njwjz)�”}”j}]”jÑHŒc.devm_kstrdup_const”†”asbuh1hhjaIubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaIubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj”Ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Hubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj.Hh²hh³j?Hh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj*Hh²hh³j?Hh´M?ubah}”(h]”j%Hah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j?Hh´M?hj'Hh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/resource managed conditional string duplication”h]”hŒ/resource managed conditional string duplication”…”�”}”(hj¾Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M?hj»Ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj'Hh²hh³j?Hh´M?ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÖIjHjÖIjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX¬**Parameters** ``struct device *dev`` device for which to duplicate the string ``const char *s`` the string to duplicate ``gfp_t gfp`` the GFP mask used in the kmalloc() call when allocating memory **Description** Strings allocated by devm_kstrdup_const will be automatically freed when the associated device is detached. **Return** Source string if it is in .rodata section otherwise it falls back to devm_kstrdup.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjàIh]”hŒ Parameters”…”�”}”(hjâIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞIubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MChjÚIubj¤)�”}”(hhh]”(j©)�”}”(hŒ@``struct device *dev`` device for which to duplicate the string ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjÿIh]”hŒstruct device *dev”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjýIubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M@hjùIubjÉ)�”}”(hhh]”jM)�”}”(hŒ(device for which to duplicate the string”h]”hŒ(device for which to duplicate the string”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJh´M@hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjùIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJh´M@hjöIubj©)�”}”(hŒ*``const char *s`` the string to duplicate ”h]”(j¯)�”}”(hŒ``const char *s``”h]”jS)�”}”(hj8Jh]”hŒ const char *s”…”�”}”(hj:Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj6Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MAhj2JubjÉ)�”}”(hhh]”jM)�”}”(hŒthe string to duplicate”h]”hŒthe string to duplicate”…”�”}”(hjQJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jMJh´MAhjNJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj2Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jMJh´MAhjöIubj©)�”}”(hŒM``gfp_t gfp`` the GFP mask used in the kmalloc() call when allocating memory ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjqJh]”hŒ gfp_t gfp”…”�”}”(hjsJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoJubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MBhjkJubjÉ)�”}”(hhh]”jM)�”}”(hŒ>the GFP mask used in the kmalloc() call when allocating memory”h]”hŒ>the GFP mask used in the kmalloc() call when allocating memory”…”�”}”(hjŠJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j†Jh´MBhj‡Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjkJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j†Jh´MBhjöIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÚIubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj¬Jh]”hŒ Description”…”�”}”(hj®Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªJubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MDhjÚIubjM)�”}”(hŒkStrings allocated by devm_kstrdup_const will be automatically freed when the associated device is detached.”h]”hŒkStrings allocated by devm_kstrdup_const will be automatically freed when the associated device is detached.”…”�”}”(hjÂJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MChjÚIubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjÓJh]”hŒReturn”…”�”}”(hjÕJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑJubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MFhjÚIubjM)�”}”(hŒRSource string if it is in .rodata section otherwise it falls back to devm_kstrdup.”h]”hŒRSource string if it is in .rodata section otherwise it falls back to devm_kstrdup.”…”�”}”(hjéJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MGhjÚIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kvasprintf (C function)”Œc.devm_kvasprintf”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒSchar * devm_kvasprintf (struct device *dev, gfp_t gfp, const char *fmt, va_list ap)”h]”hù)�”}”(hŒQchar *devm_kvasprintf(struct device *dev, gfp_t gfp, const char *fmt, va_list ap)”h]”(jü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjKh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MUubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjKh²hh³j&Kh´MUubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj5Kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjKh²hh³j&Kh´MUubhÿ)�”}”(hŒdevm_kvasprintf”h]”j)�”}”(hŒdevm_kvasprintf”h]”hŒdevm_kvasprintf”…”�”}”(hjFKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBKubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjKh²hh³j&Kh´MUubj4)�”}”(hŒ<(struct device *dev, gfp_t gfp, const char *fmt, va_list ap)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjbKh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj^KubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoKh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj^Kubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj€Kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‚KŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjHKsbŒc.devm_kvasprintf”†”asbuh1hhj^KubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj^Kubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj®Kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj^Kubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj»Kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZKubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj×Kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÙKŒmodname”NŒ classname”Njwjz)�”}”j}]”jœKŒc.devm_kvasprintf”†”asbuh1hhjÐKubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõKh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÐKubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZKubj:)�”}”(hŒconst char *fmt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjLubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Lh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjLubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj7Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjLubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjELh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjLubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjSLh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjLubj)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj`Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZKubj:)�”}”(hŒ va_list ap”h]”(h)�”}”(hhh]”j)�”}”(hŒva_list”h]”hŒva_list”…”�”}”(hj|Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j~LŒmodname”NŒ classname”Njwjz)�”}”j}]”jœKŒc.devm_kvasprintf”†”asbuh1hhjuLubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšLh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjuLubj)�”}”(hŒap”h]”hŒap”…”�”}”(hj¨Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZKubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjKh²hh³j&Kh´MUubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjKh²hh³j&Kh´MUubah}”(h]”j Kah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j&Kh´MUhj Kh²hubj4)�”}”(hhh]”jM)�”}”(hŒ>Allocate resource managed space and format a string into that.”h]”hŒ>Allocate resource managed space and format a string into that.”…”�”}”(hjÒLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MUhjÏLh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj Kh²hh³j&Kh´MUubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjêLjHjêLjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hXM**Parameters** ``struct device *dev`` Device to allocate memory for ``gfp_t gfp`` the GFP mask used in the devm_kmalloc() call when allocating memory ``const char *fmt`` The printf()-style format string ``va_list ap`` Arguments for the format string **Return** Pointer to allocated string on success, NULL on failure.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjôLh]”hŒ Parameters”…”�”}”(hjöLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòLubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MYhjîLubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device to allocate memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjMh]”hŒstruct device *dev”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MWhj MubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to allocate memory for”h]”hŒDevice to allocate memory for”…”�”}”(hj,Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j(Mh´MWhj)Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j(Mh´MWhj Mubj©)�”}”(hŒR``gfp_t gfp`` the GFP mask used in the devm_kmalloc() call when allocating memory ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjLMh]”hŒ gfp_t gfp”…”�”}”(hjNMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJMubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MYhjFMubjÉ)�”}”(hhh]”jM)�”}”(hŒCthe GFP mask used in the devm_kmalloc() call when allocating memory”h]”hŒCthe GFP mask used in the devm_kmalloc() call when allocating memory”…”�”}”(hjeMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MXhjbMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jaMh´MYhj Mubj©)�”}”(hŒ5``const char *fmt`` The printf()-style format string ”h]”(j¯)�”}”(hŒ``const char *fmt``”h]”jS)�”}”(hj†Mh]”hŒconst char *fmt”…”�”}”(hjˆMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj„Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MZhj€MubjÉ)�”}”(hhh]”jM)�”}”(hŒ The printf()-style format string”h]”hŒ The printf()-style format string”…”�”}”(hjŸMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j›Mh´MZhjœMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj€Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›Mh´MZhj Mubj©)�”}”(hŒ/``va_list ap`` Arguments for the format string ”h]”(j¯)�”}”(hŒ``va_list ap``”h]”jS)�”}”(hj¿Mh]”hŒ va_list ap”…”�”}”(hjÁMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj½Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M[hj¹MubjÉ)�”}”(hhh]”jM)�”}”(hŒArguments for the format string”h]”hŒArguments for the format string”…”�”}”(hjØMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÔMh´M[hjÕMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¹Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÔMh´M[hj Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjîLubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjúMh]”hŒReturn”…”�”}”(hjüMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjøMubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M]hjîLubjM)�”}”(hŒ8Pointer to allocated string on success, NULL on failure.”h]”hŒ8Pointer to allocated string on success, NULL on failure.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M\hjîLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kasprintf (C function)”Œc.devm_kasprintf”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒKchar * devm_kasprintf (struct device *dev, gfp_t gfp, const char *fmt, ...)”h]”hù)�”}”(hŒIchar *devm_kasprintf(struct device *dev, gfp_t gfp, const char *fmt, ...)”h]”(jü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj?Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj;Nh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MuubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;Nh²hh³jMNh´Muubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj\Nh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj;Nh²hh³jMNh´Muubhÿ)�”}”(hŒdevm_kasprintf”h]”j)�”}”(hŒdevm_kasprintf”h]”hŒdevm_kasprintf”…”�”}”(hjmNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiNubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj;Nh²hh³jMNh´Muubj4)�”}”(hŒ5(struct device *dev, gfp_t gfp, const char *fmt, ...)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj‰Nh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj…NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Nh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…Nubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj§Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¤Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j©NŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjoNsbŒc.devm_kasprintf”†”asbuh1hhj…NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…Nubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÕNh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj…Nubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjâNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj…Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Nubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjþNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jOŒmodname”NŒ classname”Njwjz)�”}”j}]”jÃNŒc.devm_kasprintf”†”asbuh1hhj÷NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷Nubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj*Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Nubj:)�”}”(hŒconst char *fmt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjCOh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj?OubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPOh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?Oubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj^Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj?OubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlOh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?Oubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjzOh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj?Oubj)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj‡Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Nubj:)�”}”(hŒ...”h]”j”)�”}”(hj›h]”hŒ...”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjœOubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Nubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj;Nh²hh³jMNh´Muubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj7Nh²hh³jMNh´Muubah}”(h]”j2Nah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jMNh´Muhj4Nh²hubj4)�”}”(hhh]”jM)�”}”(hŒ>Allocate resource managed space and format a string into that.”h]”hŒ>Allocate resource managed space and format a string into that.”…”�”}”(hjÉOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MuhjÆOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj4Nh²hh³jMNh´Muubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjáOjHjáOjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hXF**Parameters** ``struct device *dev`` Device to allocate memory for ``gfp_t gfp`` the GFP mask used in the devm_kmalloc() call when allocating memory ``const char *fmt`` The printf()-style format string ``...`` Arguments for the format string **Return** Pointer to allocated string on success, NULL on failure.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjëOh]”hŒ Parameters”…”�”}”(hjíOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjéOubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MyhjåOubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device to allocate memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj Ph]”hŒstruct device *dev”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MwhjPubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to allocate memory for”h]”hŒDevice to allocate memory for”…”�”}”(hj#Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jPh´Mwhj Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jPh´MwhjPubj©)�”}”(hŒR``gfp_t gfp`` the GFP mask used in the devm_kmalloc() call when allocating memory ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjCPh]”hŒ gfp_t gfp”…”�”}”(hjEPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAPubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Myhj=PubjÉ)�”}”(hhh]”jM)�”}”(hŒCthe GFP mask used in the devm_kmalloc() call when allocating memory”h]”hŒCthe GFP mask used in the devm_kmalloc() call when allocating memory”…”�”}”(hj\Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MxhjYPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jXPh´MyhjPubj©)�”}”(hŒ5``const char *fmt`` The printf()-style format string ”h]”(j¯)�”}”(hŒ``const char *fmt``”h]”jS)�”}”(hj}Ph]”hŒconst char *fmt”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MzhjwPubjÉ)�”}”(hhh]”jM)�”}”(hŒ The printf()-style format string”h]”hŒ The printf()-style format string”…”�”}”(hj–Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j’Ph´Mzhj“Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjwPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’Ph´MzhjPubj©)�”}”(hŒ(``...`` Arguments for the format string ”h]”(j¯)�”}”(hŒ``...``”h]”jS)�”}”(hj¶Ph]”hŒ...”…”�”}”(hj¸Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj´Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M{hj°PubjÉ)�”}”(hhh]”jM)�”}”(hŒArguments for the format string”h]”hŒArguments for the format string”…”�”}”(hjÏPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jËPh´M{hjÌPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj°Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jËPh´M{hjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjåOubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjñPh]”hŒReturn”…”�”}”(hjóPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjïPubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M}hjåOubjM)�”}”(hŒ8Pointer to allocated string on success, NULL on failure.”h]”hŒ8Pointer to allocated string on success, NULL on failure.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M|hjåOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kfree (C function)”Œ c.devm_kfree”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3void devm_kfree (struct device *dev, const void *p)”h]”hù)�”}”(hŒ2void devm_kfree(struct device *dev, const void *p)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj6Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj2Qh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEQh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj2Qh²hh³jDQh´M�ubhÿ)�”}”(hŒ devm_kfree”h]”j)�”}”(hŒ devm_kfree”h]”hŒ devm_kfree”…”�”}”(hjWQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSQubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj2Qh²hh³jDQh´M�ubj4)�”}”(hŒ#(struct device *dev, const void *p)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjsQh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjoQubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Qh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjoQubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj‘Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j“QŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjYQsbŒ c.devm_kfree”†”asbuh1hhjoQubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Qh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjoQubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¿Qh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjoQubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÌQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjoQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjkQubj:)�”}”(hŒ const void *p”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjåQh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjáQubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòQh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjáQubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjáQubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjáQubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjáQubj)�”}”(hj h]”hŒp”…”�”}”(hj)Rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjáQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjkQubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj2Qh²hh³jDQh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj.Qh²hh³jDQh´M�ubah}”(h]”j)Qah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jDQh´M�hj+Qh²hubj4)�”}”(hhh]”jM)�”}”(hŒResource-managed kfree”h]”hŒResource-managed kfree”…”�”}”(hjRRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M�hjORh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj+Qh²hh³jDQh´M�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjRjHjjRjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hŒ§**Parameters** ``struct device *dev`` Device this memory belongs to ``const void *p`` Memory to free **Description** Free memory allocated with devm_kmalloc().”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjtRh]”hŒ Parameters”…”�”}”(hjvRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrRubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‘hjnRubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device this memory belongs to ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj“Rh]”hŒstruct device *dev”…”�”}”(hj•Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‘Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MŽhj�RubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice this memory belongs to”h]”hŒDevice this memory belongs to”…”�”}”(hj¬Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¨Rh´MŽhj©Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¨Rh´MŽhjŠRubj©)�”}”(hŒ!``const void *p`` Memory to free ”h]”(j¯)�”}”(hŒ``const void *p``”h]”jS)�”}”(hjÌRh]”hŒ const void *p”…”�”}”(hjÎRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÊRubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M�hjÆRubjÉ)�”}”(hhh]”jM)�”}”(hŒMemory to free”h]”hŒMemory to free”…”�”}”(hjåRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jáRh´M�hjâRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÆRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jáRh´M�hjŠRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjnRubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjSh]”hŒ Description”…”�”}”(hj Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‘hjnRubjM)�”}”(hŒ*Free memory allocated with devm_kmalloc().”h]”hŒ*Free memory allocated with devm_kmalloc().”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M�hjnRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kmemdup (C function)”Œc.devm_kmemdup”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPvoid * devm_kmemdup (struct device *dev, const void *src, size_t len, gfp_t gfp)”h]”hù)�”}”(hŒNvoid *devm_kmemdup(struct device *dev, const void *src, size_t len, gfp_t gfp)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjLSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjHSh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¥ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Sh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjHSh²hh³jZSh´M¥ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjiSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjHSh²hh³jZSh´M¥ubhÿ)�”}”(hŒ devm_kmemdup”h]”j)�”}”(hŒ devm_kmemdup”h]”hŒ devm_kmemdup”…”�”}”(hjzSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvSubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjHSh²hh³jZSh´M¥ubj4)�”}”(hŒ<(struct device *dev, const void *src, size_t len, gfp_t gfp)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj–Sh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj’SubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£Sh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj’Subh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj´Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±Subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j¶SŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj|SsbŒc.devm_kmemdup”†”asbuh1hhj’SubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔSh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj’Subj”)�”}”(hj—h]”hŒ*”…”�”}”(hjâSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj’Subj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjïSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽSubj:)�”}”(hŒconst void *src”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjTubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj#Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjTubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj?Th²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjTubj)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjLTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽSubj:)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjhTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jjTŒmodname”NŒ classname”Njwjz)�”}”j}]”jÐSŒc.devm_kmemdup”†”asbuh1hhjaTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaTubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj”Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽSubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj°Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j²TŒmodname”NŒ classname”Njwjz)�”}”j}]”jÐSŒc.devm_kmemdup”†”asbuh1hhj©TubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎTh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj©Tubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjÜTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj©Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŽSubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjHSh²hh³jZSh´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjDSh²hh³jZSh´M¥ubah}”(h]”j?Sah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jZSh´M¥hjASh²hubj4)�”}”(hhh]”jM)�”}”(hŒResource-managed kmemdup”h]”hŒResource-managed kmemdup”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¥hjUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjASh²hh³jZSh´M¥ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjUjHjUjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX**Parameters** ``struct device *dev`` Device this memory belongs to ``const void *src`` Memory region to duplicate ``size_t len`` Memory region length ``gfp_t gfp`` GFP mask to use **Description** Duplicate region of a memory using resource managed kmalloc”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj(Uh]”hŒ Parameters”…”�”}”(hj*Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M©hj"Uubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device this memory belongs to ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjGUh]”hŒstruct device *dev”…”�”}”(hjIUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjEUubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¦hjAUubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice this memory belongs to”h]”hŒDevice this memory belongs to”…”�”}”(hj`Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j\Uh´M¦hj]Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjAUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j\Uh´M¦hj>Uubj©)�”}”(hŒ/``const void *src`` Memory region to duplicate ”h]”(j¯)�”}”(hŒ``const void *src``”h]”jS)�”}”(hj€Uh]”hŒconst void *src”…”�”}”(hj‚Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj~Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M§hjzUubjÉ)�”}”(hhh]”jM)�”}”(hŒMemory region to duplicate”h]”hŒMemory region to duplicate”…”�”}”(hj™Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j•Uh´M§hj–Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjzUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j•Uh´M§hj>Uubj©)�”}”(hŒ$``size_t len`` Memory region length ”h]”(j¯)�”}”(hŒ``size_t len``”h]”jS)�”}”(hj¹Uh]”hŒ size_t len”…”�”}”(hj»Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj·Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¨hj³UubjÉ)�”}”(hhh]”jM)�”}”(hŒMemory region length”h]”hŒMemory region length”…”�”}”(hjÒUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÎUh´M¨hjÏUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj³Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÎUh´M¨hj>Uubj©)�”}”(hŒ``gfp_t gfp`` GFP mask to use ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjòUh]”hŒ gfp_t gfp”…”�”}”(hjôUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjðUubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M©hjìUubjÉ)�”}”(hhh]”jM)�”}”(hŒGFP mask to use”h]”hŒGFP mask to use”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jVh´M©hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjìUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jVh´M©hj>Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj"UubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj-Vh]”hŒ Description”…”�”}”(hj/Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj+Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M«hj"UubjM)�”}”(hŒ;Duplicate region of a memory using resource managed kmalloc”h]”hŒ;Duplicate region of a memory using resource managed kmalloc”…”�”}”(hjCVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mªhj"Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kmemdup_const (C function)”Œc.devm_kmemdup_const”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ\const void * devm_kmemdup_const (struct device *dev, const void *src, size_t len, gfp_t gfp)”h]”hù)�”}”(hŒZconst void *devm_kmemdup_const(struct device *dev, const void *src, size_t len, gfp_t gfp)”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjrVh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjnVh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MºubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Vh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjnVh²hh³jVh´Mºubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŽVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjnVh²hh³jVh´MºubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœVh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjnVh²hh³jVh´Mºubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjªVh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjnVh²hh³jVh´Mºubhÿ)�”}”(hŒdevm_kmemdup_const”h]”j)�”}”(hŒdevm_kmemdup_const”h]”hŒdevm_kmemdup_const”…”�”}”(hj»Vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·Vubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjnVh²hh³jVh´Mºubj4)�”}”(hŒ<(struct device *dev, const void *src, size_t len, gfp_t gfp)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj×Vh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÓVubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäVh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÓVubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjõVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j÷VŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj½VsbŒc.devm_kmemdup_const”†”asbuh1hhjÓVubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÓVubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj#Wh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÓVubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj0Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÏVubj:)�”}”(hŒconst void *src”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjIWh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjEWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjEWubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjdWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjEWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjEWubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj€Wh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjEWubj)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj�Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÏVubj:)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj©Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j«WŒmodname”NŒ classname”Njwjz)�”}”j}]”jWŒc.devm_kmemdup_const”†”asbuh1hhj¢WubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¢Wubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÕWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÏVubj:)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjñWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjîWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jóWŒmodname”NŒ classname”Njwjz)�”}”j}]”jWŒc.devm_kmemdup_const”†”asbuh1hhjêWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjêWubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjêWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÏVubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjnVh²hh³jVh´Mºubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjjVh²hh³jVh´Mºubah}”(h]”jeVah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jVh´MºhjgVh²hubj4)�”}”(hhh]”jM)�”}”(hŒ5conditionally duplicate and manage a region of memory”h]”hŒ5conditionally duplicate and manage a region of memory”…”�”}”(hjGXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MºhjDXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjgVh²hh³jVh´Mºubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj_XjHj_XjI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hX>**Parameters** ``struct device *dev`` Device this memory belongs to ``const void *src`` memory region to duplicate ``size_t len`` memory region length, ``gfp_t gfp`` GFP mask to use **Return** source address if it is in .rodata or the return value of kmemdup() to which the function falls back otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjiXh]”hŒ Parameters”…”�”}”(hjkXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgXubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¾hjcXubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device this memory belongs to ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjˆXh]”hŒstruct device *dev”…”�”}”(hjŠXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj†Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¼hj‚XubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice this memory belongs to”h]”hŒDevice this memory belongs to”…”�”}”(hj¡Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�Xh´M¼hjžXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‚Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Xh´M¼hjXubj©)�”}”(hŒ/``const void *src`` memory region to duplicate ”h]”(j¯)�”}”(hŒ``const void *src``”h]”jS)�”}”(hjÁXh]”hŒconst void *src”…”�”}”(hjÃXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¿Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M½hj»XubjÉ)�”}”(hhh]”jM)�”}”(hŒmemory region to duplicate”h]”hŒmemory region to duplicate”…”�”}”(hjÚXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÖXh´M½hj×Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj»Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÖXh´M½hjXubj©)�”}”(hŒ%``size_t len`` memory region length, ”h]”(j¯)�”}”(hŒ``size_t len``”h]”jS)�”}”(hjúXh]”hŒ size_t len”…”�”}”(hjüXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjøXubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¾hjôXubjÉ)�”}”(hhh]”jM)�”}”(hŒmemory region length,”h]”hŒmemory region length,”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jYh´M¾hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjôXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jYh´M¾hjXubj©)�”}”(hŒ``gfp_t gfp`` GFP mask to use ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hj3Yh]”hŒ gfp_t gfp”…”�”}”(hj5Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¿hj-YubjÉ)�”}”(hhh]”jM)�”}”(hŒGFP mask to use”h]”hŒGFP mask to use”…”�”}”(hjLYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jHYh´M¿hjIYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj-Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jHYh´M¿hjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjcXubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjnYh]”hŒReturn”…”�”}”(hjpYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlYubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÁhjcXubjM)�”}”(hŒosource address if it is in .rodata or the return value of kmemdup() to which the function falls back otherwise.”h]”hŒosource address if it is in .rodata or the return value of kmemdup() to which the function falls back otherwise.”…”�”}”(hj„Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÁhjcXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ devm_get_free_pages (C function)”Œc.devm_get_free_pages”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒZunsigned long devm_get_free_pages (struct device *dev, gfp_t gfp_mask, unsigned int order)”h]”hù)�”}”(hŒYunsigned long devm_get_free_pages(struct device *dev, gfp_t gfp_mask, unsigned int order)”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj³Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¯Yh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂYh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯Yh²hh³jÁYh´Mãubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÐYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¯Yh²hh³jÁYh´MãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞYh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¯Yh²hh³jÁYh´Mãubhÿ)�”}”(hŒdevm_get_free_pages”h]”j)�”}”(hŒdevm_get_free_pages”h]”hŒdevm_get_free_pages”…”�”}”(hjðYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìYubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¯Yh²hh³jÁYh´Mãubj4)�”}”(hŒ8(struct device *dev, gfp_t gfp_mask, unsigned int order)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj*Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'Zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j,ZŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjòYsbŒc.devm_get_free_pages”†”asbuh1hhjZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjXZh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjZubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjeZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZubj:)�”}”(hŒgfp_t gfp_mask”h]”(h)�”}”(hhh]”j)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~Zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jƒZŒmodname”NŒ classname”Njwjz)�”}”j}]”jFZŒc.devm_get_free_pages”†”asbuh1hhjzZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjzZubj)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hj­Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZubj:)�”}”(hŒunsigned int order”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÆZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÂZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÂZubjü)�”}”(hŒint”h]”hŒint”…”�”}”(hjâZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÂZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÂZubj)�”}”(hŒorder”h]”hŒorder”…”�”}”(hjþZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÂZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¯Yh²hh³jÁYh´Mãubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj«Yh²hh³jÁYh´Mãubah}”(h]”j¦Yah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÁYh´Mãhj¨Yh²hubj4)�”}”(hhh]”jM)�”}”(hŒ!Resource-managed __get_free_pages”h]”hŒ!Resource-managed __get_free_pages”…”�”}”(hj([h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mãhj%[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¨Yh²hh³jÁYh´Mãubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj@[jHj@[jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hXl**Parameters** ``struct device *dev`` Device to allocate memory for ``gfp_t gfp_mask`` Allocation gfp flags ``unsigned int order`` Allocation size is (1 << order) pages **Description** Managed get_free_pages. Memory allocated with this function is automatically freed on driver detach. **Return** Address of allocated memory on success, 0 on failure.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjJ[h]”hŒ Parameters”…”�”}”(hjL[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjH[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MçhjD[ubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device to allocate memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hji[h]”hŒstruct device *dev”…”�”}”(hjk[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjg[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mähjc[ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to allocate memory for”h]”hŒDevice to allocate memory for”…”�”}”(hj‚[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~[h´Mähj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjc[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~[h´Mähj`[ubj©)�”}”(hŒ(``gfp_t gfp_mask`` Allocation gfp flags ”h]”(j¯)�”}”(hŒ``gfp_t gfp_mask``”h]”jS)�”}”(hj¢[h]”hŒgfp_t gfp_mask”…”�”}”(hj¤[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj [ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Måhjœ[ubjÉ)�”}”(hhh]”jM)�”}”(hŒAllocation gfp flags”h]”hŒAllocation gfp flags”…”�”}”(hj»[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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 int order`` Allocation size is (1 << order) pages ”h]”(j¯)�”}”(hŒ``unsigned int order``”h]”jS)�”}”(hjÛ[h]”hŒunsigned int order”…”�”}”(hjÝ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÙ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MæhjÕ[ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%Allocation size is (1 << order) pages”h]”hŒ%Allocation size is (1 << order) pages”…”�”}”(hjô[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjD[ubjM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MèhjD[ubjM)�”}”(hŒeManaged get_free_pages. Memory allocated with this function is automatically freed on driver detach.”h]”hŒeManaged get_free_pages. Memory allocated with this function is automatically freed on driver detach.”…”�”}”(hj,\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”•‰fh´MçhjD[ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj=\h]”hŒReturn”…”�”}”(hj?\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MêhjD[ubjM)�”}”(hŒ5Address of allocated memory on success, 0 on failure.”h]”hŒ5Address of allocated memory on success, 0 on failure.”…”�”}”(hjS\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MëhjD[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_free_pages (C function)”Œc.devm_free_pages”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=void devm_free_pages (struct device *dev, unsigned long addr)”h]”hù)�”}”(hŒhj»\ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ\h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj»\ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjÝ\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jß\Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj¥\sbŒc.devm_free_pages”†”asbuh1hhj»\ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý\h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj»\ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj»\ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj»\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj·\ubj:)�”}”(hŒunsigned long addr”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj1]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj-]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj-]ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjM]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj-]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj-]ubj)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hji]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj·\ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj~\h²hh³j�\h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjz\h²hh³j�\h´M ubah}”(h]”ju\ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�\h´M hjw\h²hubj4)�”}”(hhh]”jM)�”}”(hŒResource-managed free_pages”h]”hŒResource-managed free_pages”…”�”}”(hj“]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M hj�]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjw\h²hh³j�\h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj«]jHj«]jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hŒð**Parameters** ``struct device *dev`` Device this memory belongs to ``unsigned long addr`` Memory to free **Description** Free memory allocated with devm_get_free_pages(). Unlike free_pages, there is no need to supply the **order**.”h]”(jM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj¯]ubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device this memory belongs to ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjÔ]h]”hŒstruct device *dev”…”�”}”(hjÖ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÒ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M hjÎ]ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice this memory belongs to”h]”hŒDevice this memory belongs to”…”�”}”(hjí]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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 addr`` Memory to free ”h]”(j¯)�”}”(hŒ``unsigned long addr``”h]”jS)�”}”(hj ^h]”hŒunsigned long addr”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M hj^ubjÉ)�”}”(hhh]”jM)�”}”(hŒMemory to free”h]”hŒMemory to free”…”�”}”(hj&^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hj¯]ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjH^h]”hŒ Description”…”�”}”(hjJ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Mhj¯]ubjM)�”}”(hŒnFree memory allocated with devm_get_free_pages(). Unlike free_pages, there is no need to supply the **order**.”h]”(hŒdFree memory allocated with devm_get_free_pages(). Unlike free_pages, there is no need to supply the ”…”�”}”(hj^^h²hh³Nh´NubjŽ)�”}”(hŒ **order**”h]”hŒorder”…”�”}”(hjf^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^^ubhŒ.”…”�”}”(hj^^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M hj¯]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ __devm_alloc_percpu (C function)”Œc.__devm_alloc_percpu”hNt”auh1hÜhjoh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒSvoid __percpu * __devm_alloc_percpu (struct device *dev, size_t size, size_t align)”h]”hù)�”}”(hŒQvoid __percpu *__devm_alloc_percpu(struct device *dev, size_t size, size_t align)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŸ^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj›^h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›^h²hh³j­^h´M#ubhŒ__percpu”…”�”}”(hj›^h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj›^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#ubhÿ)�”}”(hŒ__devm_alloc_percpu”h]”j)�”}”(hŒ__devm_alloc_percpu”h]”hŒ__devm_alloc_percpu”…”�”}”(hjß^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛ^ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj›^h²hh³j­^h´M#ubj4)�”}”(hŒ/(struct device *dev, size_t size, size_t align)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjû^h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj÷^ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷^ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j_Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjá^sbŒc.__devm_alloc_percpu”†”asbuh1hhj÷^ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷^ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjG_h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj÷^ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjT_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjó^ubj:)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjp_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjm_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jr_Œmodname”NŒ classname”Njwjz)�”}”j}]”j5_Œc.__devm_alloc_percpu”†”asbuh1hhji_ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhji_ubj)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjœ_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhji_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjó^ubj:)�”}”(hŒ size_t align”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¸_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµ_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jº_Œmodname”NŒ classname”Njwjz)�”}”j}]”j5_Œc.__devm_alloc_percpu”†”asbuh1hhj±_ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±_ubj)�”}”(hŒalign”h]”hŒalign”…”�”}”(hjä_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj±_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjó^ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj›^h²hh³j­^h´M#ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj—^h²hh³j­^h´M#ubah}”(h]”j’^ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j­^h´M#hj”^h²hubj4)�”}”(hhh]”jM)�”}”(hŒResource-managed alloc_percpu”h]”hŒResource-managed alloc_percpu”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M#hj `h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj”^h²hh³j­^h´M#ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj&`jHj&`jI‰jJ‰jK‰uh1híh²hhjoh³Nh´Nubj„)�”}”(hXƒ**Parameters** ``struct device *dev`` Device to allocate per-cpu memory for ``size_t size`` Size of per-cpu memory to allocate ``size_t align`` Alignment of per-cpu memory to allocate **Description** Managed alloc_percpu. Per-cpu memory allocated with this function is automatically freed on driver detach. **Return** Pointer to allocated memory on success, NULL on failure.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj0`h]”hŒ Parameters”…”�”}”(hj2`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M'hj*`ubj¤)�”}”(hhh]”(j©)�”}”(hŒ=``struct device *dev`` Device to allocate per-cpu memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjO`h]”hŒstruct device *dev”…”�”}”(hjQ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjM`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M$hjI`ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%Device to allocate per-cpu memory for”h]”hŒ%Device to allocate per-cpu memory for”…”�”}”(hjh`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jd`h´M$hje`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjI`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jd`h´M$hjF`ubj©)�”}”(hŒ3``size_t size`` Size of per-cpu memory to allocate ”h]”(j¯)�”}”(hŒ``size_t size``”h]”jS)�”}”(hjˆ`h]”hŒ size_t size”…”�”}”(hjŠ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj†`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M%hj‚`ubjÉ)�”}”(hhh]”jM)�”}”(hŒ"Size of per-cpu memory to allocate”h]”hŒ"Size of per-cpu memory to allocate”…”�”}”(hj¡`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�`h´M%hjž`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj‚`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�`h´M%hjF`ubj©)�”}”(hŒ9``size_t align`` Alignment of per-cpu memory to allocate ”h]”(j¯)�”}”(hŒ``size_t align``”h]”jS)�”}”(hjÁ`h]”hŒ size_t align”…”�”}”(hjÃ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj¿`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M&hj»`ubjÉ)�”}”(hhh]”jM)�”}”(hŒ'Alignment of per-cpu memory to allocate”h]”hŒ'Alignment of per-cpu memory to allocate”…”�”}”(hjÚ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÖ`h´M&hj×`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj»`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÖ`h´M&hjF`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj*`ubjM)�”}”(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&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M(hj*`ubjM)�”}”(hŒjManaged alloc_percpu. Per-cpu memory allocated with this function is automatically freed on driver detach.”h]”hŒjManaged alloc_percpu. Per-cpu memory allocated with this function is automatically freed on driver detach.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M'hj*`ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj#ah]”hŒReturn”…”�”}”(hj%ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!aubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M*hj*`ubjM)�”}”(hŒ8Pointer to allocated memory on success, NULL on failure.”h]”hŒ8Pointer to allocated memory on success, NULL on failure.”…”�”}”(hj9ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M+hj*`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjoh²hh³Nh´Nubeh}”(h]”Œdevice-resource-management”ah ]”h"]”Œdevice resource management”ah$]”h&]”uh1hµhh·h²hh³hÊh´K“ubeh}”(h]”Œ driver-basics”ah ]”h"]”Œ driver basics”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‚aŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j\ajYajmjjj†jƒjPHjMHj¢ÑjŸÑj\jYjzDjwDjÞËjÛËj«j¨jz¡jw¡jõÊjòÊjljijTajQauŒ nametypes”}”(j\a‰jm‰j†‰jPH‰j¢Ñ‰j\‰jzD‰jÞˉj«‰jz¡‰jõʉjl‰jTa‰uh}”(jYah·jjhËhëhôj'j,j1j6jîjójójøjƒjpjMHj‰j¦j«jH jM jø jý j. j3 jsjxjjjºj¿jpjujËjÐj`jej»jÀjjj’j—j!j!jn"js"j $j$jT&jY&j~(jƒ(j¨*j­*j9.j>.jr0jw0j�3j¢3jm7jr7jS;jX;jA=jF=jE?jJ?jIAjNAjBCjGCjLDjQDjVEj[Ej×FjÜFjŸÑjSHjpHjuHjÔIjÙIj^KjcKjÁLjÆLj$Nj)Nj‡OjŒOj#Qj(Qj¿RjÄRjITjNTjÓUjØUj]WjbWjçXjìXjƒZjˆZj­[j²[j×\jÜ\j^j^j+_j0_jU`jZ`jaj„aj©bj®bjÓcjØcj‘ej–ej'gj,gj¶hj»hjéjjîjjŒjCŒj ŽjŽjÅ�jÊ�j�“j†“j–j–j¨˜j­˜j^›jc›jžj žjØ jÝ j•£jš£ju¦jz¦j�¨j¢¨jHªjMªjó«jø«jÜ­já­jW¯j\¯jÒ°j×°j'µj,µjú·jÿ·jW»j\»j~¾jƒ¾jËÀjÐÀj[Âj`ÂjëÃjðÃjéÅjîÅjéÇjîÇjøÉjýÉjÌj ÌjTÎjYÎjYj¥ÑjÂÑjÇÑjîÓjóÓjþÕjÖj ØjØjÚj!ÚjXÜj]ÜjÁÝjÆÝjUàjZàjÞájãáj…ãjŠãjšåjŸåjAèjFèjrëjwëj†îj‹îjçñjìñjµójºój6õj;õj,÷j1÷jûújûjÎþjÓþjëjðjwDj_j|j�j–j›j%j*j´j¹jD jI jÌ jÑ jT jY jÞjãjØjÝj�j†jj"jÿjjájæjijnjjjŠj�j#"j("jü#j$jÕ%jÚ%j½'jÂ'j¥)jª)jN+jS+jf-jk-j0j0j2j!2jí3jò3j6j6j 8j8j6:j;:j*=j/=j¿?jÄ?jWBj\BjÛËj}DjšDjŸDjHj!HjZKj_Kj8Mj=Mj÷OjüOj=RjBRj*Tj/TjIVjNVjJYjOYjˆ[j�[j ]j]jk^jp^j�`j•`j’aj—ajøbjýbjÙejÞej¬gj±gjñijöij¬lj±ljpj#pj¿qjÄqjètjítjLwjQwjyj!yj]{jb{j¯|j´|j5j:jg‚jl‚jL„jQ„j!†j&†jè‡jí‡j�‹j”‹j �j�j¼�jÁ�jã�jè�j’j’jz“j“j•j •jº–j¿–jý˜j™jL�jQ�jzŸjŸj!£j&£j³¤j¸¤jT¦jY¦j¨j¨j–©j›©jü«j¬jk­jp­jj°jo°jÓ³jسjw¶j|¶j÷·jü·j'»j,»jº¼j¿¼jPÀjUÀj Âj¥ÂjyÄj~Äj ÆjÆj®Çj³Çj ÉjÉjdÊjiÊj¨jáËjþËjÌj«Íj°Íj›Ïj Ïj7Ñj<ÑjNÓjSÓjsÕjxÕjc×jh×jýØjÙj¦Új«Új)Üj.Üj?ÞjDÞjÙßjÞßjMájRájöâjûâj³äj¸äjöæjûæjéj#éjÎëjÓëjíj„íj«ïj°ïjMñjRñj®ój³ójsõjxõj÷j ÷jÙøjÞøjûj ûj§üj¬üjlþjqþjÝjâj”j™jj jœj¡jƒ jˆ j j jÏ jÔ j§j¬jw¡j®jËjÐj¦j«j€j…j¬j±jØjÝjjjfjkj¶ j» j#j #jV%j[%j¦'j«'jö)jû)jF,jK,j–.j›.jÔ0jÙ0j$3j)3jt5jy5jÄ7jÉ7j:j:jd<ji<j´>j¹>jAj AjTCjYCjEjEjäFjéFjµHjºHj†Jj‹JjWLj\Lj(Nj-NjùOjþOjÊQjÏQj›Sj SjZUj_Uj+Wj0WjüXjYjÍZjÒZjž\j£\jo^jt^j@`jE`jbjbjâcjçcj fj%fjphjuhjÀjjÅjjmjmj`ojeojžqj£qjîsjósj>vjCvjŽxj“xjÞzjãzj}j!}jljqj¼�jÁ�j „j„j\†ja†jšˆjŸˆjêŠjïŠj:�j?�jŠ�j��jÚ‘jß‘j”j”jX–j]–j—˜jœ˜jÖšjÛšj¹�j¾�jœ j¡ j£j„£jb¦jg¦jƒ©jˆ©j¤¬j©¬jůjʯjæ²jë²jUµjZµjE·jJ·j5¹j:¹j¤»j©»j¾j¾j‚Àj‡ÀjñÂjöÂjåÅjêÅj÷ÈjüÈj ËjËjÍj$Íj3Ïj8Ïj:Ñj?Ñj'Ój,ÓjÕjÕjS×jX×j’Ùj—ÙjãÛjèÛjYÞj^ÞjÏàjÔàjEãjJãj»åjÀåj1èj6èj§êj¬êjíj"íj“ïj˜ïjäñjéñjZôj_ôjÐöjÕöjFùjKùj¼ûjÁûj2þj7þj¨j­jj#j”j™jSjXj7 j< j j jÿ j jãjèjÇjÌj«j°j�j”jsjxj2j7jjjújÿjÞjãjÂjÇj¦!j«!jŠ#j�#jn%js%jR'jW'j£)j¨)j,j,j�.j”.j1j 1j{3j€3jÌ5jÑ5jB8jG8j¸:j½:j.=j3=j¤?j©?jõAjúAjkDjpDjáFjæFjWIj\IjÍKjÒKjNj#Nj”Pj™Pj SjSj€Uj…UjöWjûWj[Zj`ZjÀ\jÅ\j%_j*_jŠaj�aj¦dj«djÂgjÇgjÞjjãjjúmjÿmjAqjFqjˆtj�tjÏwjÔwj{j{j˜}j�}jˆj�jx�j}�júƒjÿƒj|†j�†jþˆj‰j€‹j…‹j¬Žj±Žjä‘jé‘jø“jý“j –j–j ˜j%˜j:šj?šjœjœjî�jó�j j jF¢jK¢j„¤j‰¤jÔ¦jÙ¦j$©j)©jt«jy«jÄ­jÉ­j°j°jd²ji²j´´j¹´j·j ·jB¹jG¹j’»j—»jâ½jç½j2Àj7Àj‚Âj‡ÂjÒÄj×Äj"Çj'ÇjrÉjwÉjÂËjÇËj�Íj†ÍjRÏjWÏj#Ñj(ÑjôÒjùÒjÅÔjÊÔj–Öj›ÖjgØjlØj8Új=Új ÜjÜjÈÝjÍÝj™ßjžßjjájoáj;ãj@ãj åjåjÝæjâæj®èj³èjêj„êjPìjUìjŽîj“îjÞðjãðj.ój3ój~õjƒõjÎ÷jÓ÷j újúj\üjaüj¬þj±þjüjjLjQjŠj�jÚjßj* j/ jz j jÊjÏjj jXj]j¨j­jøjýjHjMj‡jŒjÆjËj!j !jD#jI#j'&j,&j )j)jí+jò+jÐ.jÕ.jñ1jö1j5j5j38j88jT;jY;jÃ=jÈ=j³?j¸?j£Aj¨AjDjDj�Fj†FjðHjõHj_KjdKjRNjWNjdQjiQjxSj}SjŒUj‘Uj Wj¥Wj§Yj¬Yj�[j†[j[]j`]j‡_jŒ_j³aj¸ajñcjöcjAfjFfj‘hj–hjájjæjj1mj6mj�oj†ojÑqjÖqj!tj&tjqvjvvj¯xj´xjÿzj{jO}jT}jŸj¤jï�jô�j?„jD„j�†j”†j߈jäˆj/‹j4‹jîŒjóŒj¿ŽjÄŽj��j•�ja’jf’j2”j7”j–j–jÔ—jÙ—j¥™jª™jv›j{›j5�j:�jŸj Ÿj× jÜ j¨¢j­¢jy¤j~¤jJ¦jO¦j¨j ¨jì©jñ©j½«j«jû­j®jK°jP°j›²j ²jë´jð´j;·j@·jy¹j~¹jÉ»jλj¾j¾jiÀjnÀj¹Âj¾Âj÷ÄjüÄjGÇjLÇj—ÉjœÉjçËjìËj7Îj<ÎjuÐjzÐjÅÒjÊÒjÕjÕje×jj×jµÙjºÙjôÛjùÛj3Þj8Þjràjwàj±âj¶âj”åj™åjwèj|èjZëj_ëj=îjBîj^ñjcñjôj„ôj ÷j¥÷jÁújÆúj0ýj5ýj ÿj%ÿjjjj„jîjój]jbjÌ jÑ j¿ jÄ jÑjÖjåjêjùjþj jjjjjjîjój-j2jl!jq!j½#jÂ#j3&j8&j©(j®(j+j$+j•-jš-j 0j0j�2j†2j÷4jü4jm7jr7j¾9jÃ9j4<j9<jª>j¯>j Aj%Aj–Cj›Cj FjFj‚Hj‡HjøJjýJjnMjsMj-Oj2OjQjQjõRjúRjÙTjÞTj½VjÂVj¡Xj¦Xj…ZjŠZji\jn\jM^jR^j `j`jðajõajÔcjÙcj¸ej½ejœgj¡gj€ij…ijdkjikjHmjMmj,oj1oj}qj‚qjósjøsjivjnvjßxjäxjU{jZ{j¦}j«}j€j!€j’‚j—‚j…j …j~‡jƒ‡jωjÔ‰jEŒjJŒj»ŽjÀŽj1‘j6‘j§“j¬“jø•jý•jn˜js˜jäšjéšjZ�j_�jПjÕŸj5¢j:¢jš¤jŸ¤jÿ¦j§jd©ji©j€¬j…¬jœ¯j¡¯j¸²j½²jÔµjÙµj¹j ¹jb¼jg¼j©¿j®¿jðÂjõÂjrÅjwÅjbÇjgÇjRÉjWÉjÔËjÙËjVÎj[ÎjØÐjÝÐjZÓj_Ój†Öj‹Öj¾ÙjÃÙjÒÛj×ÛjæÝjëÝjúßjÿßjâjâjîãjóãjÈåjÍåjôçjùçj êj%êj^ìjcìj®îj³îjþðjñjNójSójžõj£õjî÷jó÷j>újCújŽüj“üjÞþjãþjj!jljqj¼jÁj jj\ ja j¬ j± jüjjLjQjœj¡j[j`j,j1jýjjÎjÓjŸj¤jpjujA jF j"j"jã#jè#j¢%j§%js'jx'jD)jI)j+j+jæ,jë,j·.j¼.jˆ0j�0jY2j^2j*4j/4jh6jm6j¸8j½8j;j ;jX=j]=j¨?j­?jæAjëAj6Dj;Dj†Fj‹FjÖHjÛHj&Kj+KjdMjiMj´Oj¹OjRj RjTTjYTj¤Vj©VjâXjçXj2[j7[j‚]j‡]jÒ_j×_j"bj'bjadjfdj fj¥fjßhjähjkj#kjnjnjäpjépjÇsjÌsjªvj¯vjËyjÐyjì|jñ|j €j€j.ƒj3ƒj�…j¢…j�‡j’‡j}‰j‚‰jì‹jñ‹j[Žj`ŽjÊ�jÏ�j9“j>“j,–j1–j>™jC™jR›jW›jf�jk�jzŸjŸjòÊj}¡jš¡jŸ¡jÖ£jÛ£j>¦jC¦j’¨j—¨jX¬j]¬j<°jA°jS²jX²jW´j\´jصjݵjn·js·jï¸jô¸jP»jU»jмjÕ¼j*¾j/¾j Àj¥ÀjÅÃjÊÃjwÆj|Æj”Èj™ÈjijøÊjËjËjÌj ÌjùÌjþÌj‡ÎjŒÎjÐjÐj Ñj%Ñj=ÒjBÒj€Ój…ÓjüÔjÕjxÖj}Öj»×jÀ×j©Új®ÚjlÜjqÜj”Ýj™ÝjcßjhßjààjåàjõâjúâjÿãjäjŠåj�åj”æj™æjxçj}çj\èjaèj@éjEéjjêjoêj”ëj™ëj¼ìjÁìjäíjéíjZïj_ïjžðj£ðjqójvój¨ôj­ôjßõjäõj%÷j*÷j¦øj«øj®új³újSüjXüjæýjëýj{j€j"j'j£j¨jËjÐjA jF j� j• j j„ jQajojŒj‘jCjHj¯j´jjj2j7j¬j±j2"j7"j¬%j±%j()j-)j•,jš,jŽ/j“/j®1j³1jÎ3jÓ3j6j6jƒ9jˆ9jÁ<jÆ<j«?j°?jbBjgBjEj„Ej%Hj*Hj KjKj2Nj7Nj)Qj.Qj?SjDSjeVjjVj¦Yj«Yju\jz\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”]”hŒsystem_message”“”)�”}”(hhh]”jM)�”}”(hŒeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.”h]”hŒgUnexpected possible title overline or transition. Treating it as ordinary text because it’s so short.”…”�”}”(hjéah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLhjæaubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œline”KXŒsource”jêÕuh1jäahj-ÕubaŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.