€•Œ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´MÎubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÃh²hh³jÕh´MÎubhÿ)�”}”(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´MÎubj4)�”}”(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´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Œ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´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„)�”}”(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´MÒhj¢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´MÏhjÁ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´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Œ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´MÐhj¢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´MÔhj¢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´MÖhj¢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´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_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´MZubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjih²hh³jh´MZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjih²hh³jh´MZubhŒnotrace”…”�”}”(hjih²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjih²hh³jh´MZubhÿ)�”}”(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´MZubj4)�”}”(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´MZubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjeh²hh³jh´MZubah}”(h]”j`ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´MZhjbh²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´MZhjõh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjbh²hh³jh´MZubeh}”(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´Mbhjubeh}”(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´MhjW#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´Mhj­'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´Mhj(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´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Ž)�”}”(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´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éŒ#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´MCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš(h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj‡(h²hh³j™(h´MCubhÿ)�”}”(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´MCubj4)�”}”(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´MCubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjƒ(h²hh³j™(h´MCubah}”(h]”j~(ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j™(h´MChj€(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´MChj¸)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj€(h²hh³j™(h´MCubeh}”(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´MGhj×)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´MDhjö)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´MDhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjö)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j*h´MDhjó)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´MEhj/*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´MEhjK*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJ*h´MEhjó)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´MGhj×)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´MFhj×)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´MU$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±*h²hh³jÃ*h´MU$ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÒ*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj±*h²hh³jÃ*h´MU$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj±*h²hh³jÃ*h´MU$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´MU$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´MU$ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj­*h²hh³jÃ*h´MU$ubah}”(h]”j¨*ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÃ*h´MU$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´MU$hj,,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjª*h²hh³jÃ*h´MU$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´MY$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´MV$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´MV$hj†,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…,h´MV$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´MW$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´MW$hj¿,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj£,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¾,h´MW$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´MX$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´MX$hjø,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÜ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j÷,h´MX$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´MY$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´MY$hjy-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jx-h´MY$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´M[$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´MZ$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´M]$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´Mc$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´Mj$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´Mp$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´Mz$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´M{$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´M,0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjv7h²hh³j‡7h´M,0ubhÿ)�”}”(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´M,0ubj4)�”}”(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´M,0ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjr7h²hh³j‡7h´M,0ubah}”(h]”jm7ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‡7h´M,0hjo7h²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´M,0hj†9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjo7h²hh³j‡7h´M,0ubeh}”(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´M00hj¥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´M00hjo: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´M00hj‹:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjo:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠ:h´M00hjÁ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´M20hj¥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´M10hj¥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´M40hj¥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´M50hj¥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ÿ0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj\;h²hh³jn;h´Mÿ0ubhÿ)�”}”(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ÿ0ubj4)�”}”(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ÿ0ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjX;h²hh³jn;h´Mÿ0ubah}”(h]”jS;ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jn;h´Mÿ0hjU;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ÿ0hjQ<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjU;h²hh³jn;h´Mÿ0ubeh}”(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´M1hj�<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´M1hj«<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jª<h´M1hjŒ<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´M2hj¹>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´M2hjÕ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¹>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÔ>h´M2hj¶>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´MaubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÛ°h²hh³jí°h´Maubhÿ)�”}”(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´Maubj4)�”}”(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´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Œ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´Mahjy³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** ``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´Mehj˜³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´Mbhj·³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´MbhjÓ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj·³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÒ³h´Mbhj´³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´Mchjð³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´Mchj ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjð³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j ´h´Mchj´³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´Mdhj)´ubjÉ)�”}”(hhh]”jM)�”}”(hŒ timer flags”h]”hŒ timer flags”…”�”}”(hjH´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jD´h´MdhjE´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj)´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jD´h´Mdhj´³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´Mehjb´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´Mehj~´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjb´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j}´h´Mehj´³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´Mghj›´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´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³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:45: ./kernel/time/timer.c”h´Mihj˜³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´Mhhj˜³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´MyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCµh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0µh²hh³jBµh´Myubhÿ)�”}”(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´Myubj4)�”}”(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´Myubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,µh²hh³jBµh´Myubah}”(h]”j'µah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jBµh´Myhj)µ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´MyhjB¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj)µh²hh³jBµh´Myubeh}”(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´Mzhj€¶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´Mzhjœ¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj€¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›¶h´Mzhj}¶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´Mhja¶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´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôÃh²hh³jÄh´Mubhÿ)�”}”(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´Mubj4)�”}”(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´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Œ!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´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²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´MoubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòÅh²hh³jÆh´Moubhÿ)�”}”(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´Moubj4)�”}”(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´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Œ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´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²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´MshjÒÆ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´MphjñÆ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´Mphj Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjñÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j Çh´MphjîÆ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´MrhjÒÆ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´MqhjÒÆ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´MwhjÒÆ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´Mxhj„Ç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´MyhjªÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj�Çubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³j£Çh´MxhjÒÆ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´MaubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$Ìh²hh³j6Ìh´Maubhÿ)�”}”(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´Maubj4)�”}”(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´Maubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj Ìh²hh³j6Ìh´Maubah}”(h]”jÌah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j6Ìh´MahjÌ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´MahjåÌh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÌh²hh³j6Ìh´Maubeh}”(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´MehjÍ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´Mbhj#Í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´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Ž)�”}”(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´MdhjÍ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´MchjÍ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´MjhjÍ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´MnhjÍ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´MyhjÍ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´KChj¤Ü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´KGhjÃÜ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´KIhjÃÜ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´KNhjÃÜ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´KEhjÝ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´KEhj*Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j)Ýh´KEhj Ý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´KEhjGÝ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´KFhjcÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbÝh´KEhj Ý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´KIhj¥Ñ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´KFhj¥Ñ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´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùáh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjçáh²hh³jøáh´Mubhÿ)�”}”(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´Mubj4)�”}”(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´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Œ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´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„)�”}”(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´MhjÆâ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´Mhjåâ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´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:54: ./include/linux/hrtimer.h”h´MhjÆâ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´MhjÆâ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´MhjÆâ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´MhjÆâ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´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_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´M)ubj4)�”}”(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´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Œ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´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 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´M-hjÉä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´M*hjèä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´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 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´M+hj!å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´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Ž)�”}”(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´M-hjÉä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´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_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´M2hjÍé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´M/hjìé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´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 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´M0hj%ê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´M0hjAêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j@êh´M0hjéé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´M1hj^ê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´M1hjzêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jyêh´M1hjéé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´M3hjÍé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´M2hjÍé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´M5hjÆê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´M7hjÍé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´M9hjÍé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´M2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡îh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�îh²hh³j îh´M2ubhÿ)�”}”(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´M2ubj4)�”}”(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´M2ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‹îh²hh³j îh´M2ubah}”(h]”j†îah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j îh´M2hjˆî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´M2hj]ðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjˆîh²hh³j îh´M2ubeh}”(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´M6hj|ð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´M3hj›ð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´M3hj·ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj›ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¶ðh´M3hj˜ð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´M4hjÔðubjÉ)�”}”(hhh]”jM)�”}”(hŒ expiry time”h]”hŒ expiry time”…”�”}”(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Œ-``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´M5hj ñ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´M5hj)ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j(ñh´M5hj˜ð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´M8hjFñ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´M6hjbñubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jañh´M8hj˜ð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´McubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjðñh²hh³jòh´Mcubhÿ)�”}”(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´Mcubj4)�”}”(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´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjìñh²hh³jòh´Mcubah}”(h]”jçñah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jòh´Mchjéñ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´Mchj±òh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjéñh²hh³jòh´Mcubeh}”(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´MghjÐò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´Mdhjïò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´Mdhj óubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjïòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j óh´Mdhjìò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´MfhjÐò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´MghjMó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´Mhhjeó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´Mihj}óubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjJóubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj—uh1j Ch³j^óh´MghjFóubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j^óh´MghjÐò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„)�”}”(hXi**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.”h]”(jM)�”}”(hŒ**Parameters**”h]”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|ý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”…”�”}”(hj'ÿh²hh³Nh´Nubah}”(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_sleeper_start_expires”†”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Œsl”h]”hŒsl”…”�”}”(hjbÿ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>hjwÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjwÿ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}]”jCÿŒc.hrtimer_sleeper_start_expires”†”asbuh1hhjwÿ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ÿ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Ž)�”}”(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:57: ./kernel/time/hrtimer.c”h´M$ hj ubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct hrtimer_sleeper *sl`` sleeper to be started ”h]”(j¯)�”}”(hŒ``struct hrtimer_sleeper *sl``”h]”jS)�”}”(hj0h]”hŒstruct hrtimer_sleeper *sl”…”�”}”(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:57: ./kernel/time/hrtimer.c”h´M! hj*ubjÉ)�”}”(hhh]”jM)�”}”(hŒsleeper to be started”h]”hŒsleeper to be started”…”�”}”(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'ubj©)�”}”(hŒ.``enum hrtimer_mode mode`` timer mode abs/rel ”h]”(j¯)�”}”(hŒ``enum hrtimer_mode mode``”h]”jS)�”}”(hjih]”hŒenum hrtimer_mode mode”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M" hjcubjÉ)�”}”(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" hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcubeh}”(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 ubjM)�”}”(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# 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_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Œ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjåh²hh³j÷h´M[ ubhÿ)�”}”(hŒhrtimer_setup_sleeper_on_stack”h]”j)�”}”(hŒhrtimer_setup_sleeper_on_stack”h]”hŒhrtimer_setup_sleeper_on_stack”…”�”}”(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Œ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”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"ubh)�”}”(hhh]”j)�”}”(hŒhrtimer_sleeper”h]”hŒhrtimer_sleeper”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jFŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj sbŒ c.hrtimer_setup_sleeper_on_stack”†”asbuh1hhj"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj"ubj)�”}”(hŒsl”h]”hŒsl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubj:)�”}”(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_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”ˆjjuh1j9hjubj:)�”}”(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_sleeper_on_stack”†”asbuh1hhjÜubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²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”ˆ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Œ$initialize a sleeper in stack memory”h]”hŒ$initialize a sleeper in stack memory”…”�”}”(hjTh²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[ hjQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÞh²hh³j÷h´M[ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjljHjljI‰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Ž)�”}”(hjvh]”hŒ Parameters”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:57: ./kernel/time/hrtimer.c”h´M_ hjpubj¤)�”}”(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´M\ 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´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`` timer mode abs/rel”h]”(j¯)�”}”(hŒ``enum hrtimer_mode mode``”h]”jS)�”}”(hjh]”hŒenum hrtimer_mode mode”…”�”}”(hj h²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´M_ 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´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£hjpubeh}”(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”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjPh²hh³hÊh´K=ubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwaitqueue_active (C function)”Œc.waitqueue_active”hNt”auh1hÜhjPh²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”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjvh²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&]”uh1jPhjvh²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þhjvh²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Œ ”…”�”}”(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Œ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&]”jjuh1j3hjvh²hh³jˆh´K`ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjrh²hh³jˆh´K`ubah}”(h]”jmah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jˆh´K`hjoh²hubj4)�”}”(hhh]”j C)�”}”(hhh]”j„)�”}”(hŒ(locklessly test for waiters on the queue”h]”jM)�”}”(hj?h]”hŒ(locklessly test for waiters on the queue”…”�”}”(hjAh²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=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhj:h²hh³jNh´Nubah}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³jNh´K`hj7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjoh²hh³jˆh´K`ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjdjHjdjI‰jJ‰jK‰uh1híh²hhjPh³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Ž)�”}”(hjnh]”hŒ Parameters”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Kdhjhubj¤)�”}”(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£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³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KchjhubjM)�”}”(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´KbhjhubjM)�”}”(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³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KdhjhubjM)�”}”(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´KehjhubjM)�”}”(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:”…”�”}”(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´KhhjhubjÅ)�”}”(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);”…”�”}”hj#sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jÄh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´KkhjhubjM)�”}”(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 ”…”�”}”(hj2h²hh³Nh´NubjŽ)�”}”(hŒ**cond**”h]”hŒcond”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ubhŒW store such that we’ll observe an empty wait list while the waiter might not observe ”…”�”}”(hj2h²hh³Nh´NubjŽ)�”}”(hŒ**cond**”h]”hŒcond”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ubhŒ.”…”�”}”(hj2h²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´KvhjhubjM)�”}”(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.”…”�”}”(hjeh²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´Kzhjhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²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ÜhjPh²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Œ*”…”�”}”(hjh²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”ˆ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”…”�”}”(hjSh²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ƒhjPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‰h²hh³j¡h´Kƒubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjkjHjkjI‰jJ‰jK‰uh1híh²hhjPh³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Ž)�”}”(hjuh]”hŒ Parameters”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K‡hjoubj¤)�”}”(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£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³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K†hjoubjM)�”}”(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…hjoubjM)�”}”(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‡hjoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwq_has_sleeper (C function)”Œc.wq_has_sleeper”hNt”auh1hÜhjPh²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”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´K�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j0h´K�ubhÿ)�”}”(hŒwq_has_sleeper”h]”j)�”}”(hŒwq_has_sleeper”h]”hŒwq_has_sleeper”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j0h´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Œ ”…”�”}”(hjlh²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&]”uh1jhjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjEsbŒc.wq_has_sleeper”†”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”ˆjjuh1j9hjWubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³j0h´K�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j0h´K�ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j0h´K�hjh²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&]”uh1j3hjh²hh³j0h´K�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjújHjújI‰jJ‰jK‰uh1híh²hhjPh³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)�”}”(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‘hjubjÉ)�”}”(hhh]”jM)�”}”(hŒwait queue head”h]”hŒwait queue head”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j8h´K‘hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j8h´K‘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�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Œ-Returns true if wq_head has waiting processes”h]”hŒ-Returns true if wq_head has waiting processes”…”�”}”(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´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ƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwake_up_pollfree (C function)”Œc.wake_up_pollfree”hNt”auh1hÜhjPh²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Œ*”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjëubj)�”}”(hŒwq_head”h]”hŒwq_head”…”�”}”(hjH 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”…”�”}”(hjr 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ühjo 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²hhjPh³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ƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event (C macro)”Œ c.wait_event”hNt”auh1hÜhjPh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ wait_event”h]”hù)�”}”(hŒ wait_event”h]”hÿ)�”}”(hŒ wait_event”h]”j)�”}”(hj< h]”hŒ wait_event”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB 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´MNubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj: h²hh³jY h´MNubah}”(h]”j5 ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jY h´MNhj7 h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj7 h²hh³jY h´MNubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjr jHjr jI‰jJ‰jK‰uh1híh²hhjPh³Nh´NubjM)�”}”(hŒ#``wait_event (wq_head, condition)``”h]”jS)�”}”(hjx h]”hŒwait_event (wq_head, condition)”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjv ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MPhjPh²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´MNhjPh²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Ž)�”}”(hj@ h]”hŒ Description”…”�”}”(hjB 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§ 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 ”…”�”}”(hjV h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV ubhŒ evaluates to true. The ”…”�”}”(hjV h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjV h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjV ubhŒ is woken up.”…”�”}”(hjV 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ƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_freezable (C macro)”Œc.wait_event_freezable”hNt”auh1hÜhjPh²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²hhjPh³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´MwhjPh²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³j( h´MuhjPh²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Ž)�”}”(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´Myhj/ ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjT h]”hŒwq_head”…”�”}”(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´MvhjN 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´Mvhjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjN ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ji h´MvhjK 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´MwhjK 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.”…”�”}”(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ƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_timeout (C macro)”Œc.wait_event_timeout”hNt”auh1hÜhjPh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_timeout”h]”hù)�”}”(hŒwait_event_timeout”h]”hÿ)�”}”(hŒwait_event_timeout”h]”j)�”}”(hjL h]”hŒwait_event_timeout”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjR ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjN 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'hjJ h²hh³ji h´M�ubah}”(h]”jE ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³ji h´M�hjG h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjG h²hh³ji h´M�ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj‚ jHj‚ jI‰jJ‰jK‰uh1híh²hhjPh³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‘hjPh²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�hjPh²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”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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)�”}”(hjh]”hŒ condition”…”�”}”(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´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³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Œ ``timeout`` timeout, in jiffies ”h]”(j¯)�”}”(hŒ ``timeout``”h]”jS)�”}”(hjNh]”hŒtimeout”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M’hjHubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, in jiffies”h]”hŒtimeout, in jiffies”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jch´M’hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jch´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Ž)�”}”(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)�”}”(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”…”�”}”(hjh²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”…”�”}”(hj7h²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”…”�”}”(hjIh²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”…”�”}”(hjmh²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”…”�”}”(hjh²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.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”u•h1jLh³Œ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ƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_cmd (C macro)”Œc.wait_event_cmd”hNt”auh1hÜhjPh²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³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²hhjPh³Nh´NubjM)�”}”(hŒ3``wait_event_cmd (wq_head, condition, cmd1, cmd2)``”h]”jS)�”}”(hjh]”hŒ/wait_event_cmd (wq_head, condition, cmd1, cmd2)”…”�”}”(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ÐhjPh²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ÎhjPh²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Ž)�”}”(hjGh]”hŒ Parameters”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÒhjAubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjfh]”hŒwq_head”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjdubah}”(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³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Œ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”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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``cmd2`` the command will be executed after sleep ”h]”(j¯)�”}”(hŒ``cmd2``”h]”jS)�”}”(hjh]”hŒcmd2”…”�”}”(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´MÒhj ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(the command will be executed after sleep”h]”hŒ(the command will be executed after sleep”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£hjAubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjLh]”hŒ Description”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÔhjAubjM)�”}”(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 ”…”�”}”(hjbh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbubhŒ evaluates to true. The ”…”�”}”(hjbh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbubhŒ$ is checked each time the waitqueue ”…”�”}”(hjbh²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbubhŒ is woken up.”…”�”}”(hjbh²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ÓhjAubjM)�”}”(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×hjAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"wait_event_interruptible (C macro)”Œc.wait_event_interruptible”hNt”auh1hÜhjPh²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²hhjPh³Nh´NubjM)�”}”(hŒ1``wait_event_interruptible (wq_head, condition)``”h]”jS)�”}”(hj h]”hŒ-wait_event_interruptible (wq_head, condition)”…”�”}”(hjh²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éhjPh²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³j4h´MçhjPh²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Ž)�”}”(hjAh]”hŒ Parameters”…”�”}”(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;ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hj`h]”hŒwq_head”…”�”}”(hjbh²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èhjZubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(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èhjWubj©)�”}”(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éhjWubeh}”(h]”h ]”h"]”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”…”�”}”(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”…”�”}”(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´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”…”�”}”(hjFh²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ƒhjPh²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ÜhjPh²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)�”}”(hjyh]”hŒ wait_event_interruptible_timeout”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(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'hjwh²hh³j–h´Mubah}”(h]”jrah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j–h´Mhjth²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjth²hh³j–h´Mubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj¯jHj¯jI‰jJ‰jK‰uh1híh²hhjPh³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´MhjPh²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´MhjPh²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)�”}”(hj h]”hŒwq_head”…”�”}”(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´MhjubjÉ)�”}”(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³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´Mhjubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjBh]”hŒ condition”…”�”}”(hjDh²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³jWh´MhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jWh´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&]”uh1jRhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MhjuubjÉ)�”}”(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Èhjuubeh}”(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”…”�”}”(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´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.”…”�”}”(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´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´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 ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ evaluated to ”…”�”}”(hj8h²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8ubhŒ after the ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ elapsed, 1 if the ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ evaluated to ”…”�”}”hj8sbjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8ubhŒ after the ”…”�”}”hj8sbjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ4 elapsed, the remaining jiffies (at least 1) if the ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ evaluated to ”…”�”}”(hj8h²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8ubhŒ before the ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8ubhŒ elapsed, or -”…”�”}”(hj8h²hh³Nh´NubjS)�”}”(hŒ``ERESTARTSYS``”h]”hŒ ERESTARTSYS”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8ubhŒ# if it was interrupted by a signal.”…”�”}”(hj8h²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ƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_hrtimeout (C macro)”Œc.wait_event_hrtimeout”hNt”auh1hÜhjPh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_hrtimeout”h]”hù)�”}”(hŒwait_event_hrtimeout”h]”hÿ)�”}”(hŒwait_event_hrtimeout”h]”j)�”}”(hjh]”hŒwait_event_hrtimeout”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²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³j2h´M;ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j2h´M;hjh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j2h´M;ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjKjHjKjI‰jJ‰jK‰uh1híh²hhjPh³Nh´NubjM)�”}”(hŒ6``wait_event_hrtimeout (wq_head, condition, timeout)``”h]”jS)�”}”(hjQh]”hŒ2wait_event_hrtimeout (wq_head, condition, timeout)”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M=hjPh²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”…”�”}”(hjkh²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;hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jyh´M;hjPh²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”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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, as a ktime_t ”h]”(j¯)�”}”(hŒ ``timeout``”h]”jS)�”}”(hjh]”hŒtimeout”…”�”}”(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´M>hjubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, as a ktime_t”h]”hŒtimeout, as a ktime_t”…”�”}”(hj0h²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Ž)�”}”(hjRh]”hŒ Description”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPubah}”(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 ”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ$ is checked each time the waitqueue ”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ is woken up.”…”�”}”(hjhh²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ƒhjPh²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ÜhjPh²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)�”}”(hj÷h]”hŒ"wait_event_interruptible_hrtimeout”…”�”}”(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´MUubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjõh²hh³jh´MUubah}”(h]”jðah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´MUhjòh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjòh²hh³jh´MUubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj-jHj-jI‰jJ‰jK‰uh1híh²hhjPh³Nh´NubjM)�”}”(hŒ?``wait_event_interruptible_hrtimeout (wq, condition, timeout)``”h]”jS)�”}”(hj3h]”hŒ;wait_event_interruptible_hrtimeout (wq, condition, timeout)”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MWhjPh²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”…”�”}”(hjMh²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´MUhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j[h´MUhjPh²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Ž)�”}”(hjhh]”hŒ Parameters”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MYhjbubj¤)�”}”(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)�”}”(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´MXhjóubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, as a ktime_t”h]”hŒtimeout, as a ktime_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´MXhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´MXhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjbubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj4h]”hŒ Description”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MZhjbubjM)�”}”(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 ”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ$ is checked each time the waitqueue ”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ**wq**”h]”hŒwq”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ is woken up.”…”�”}”(hjJh²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´MYhjbubjM)�”}”(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]hjbubjM)�”}”(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`hjbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_idle (C macro)”Œc.wait_event_idle”hNt”auh1hÜhjPh²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³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²hhjPh³Nh´NubjM)�”}”(hŒ(``wait_event_idle (wq_head, condition)``”h]”jS)�”}”(hjh]”hŒ$wait_event_idle (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™hjPh²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³j=h´M—hjPh²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Ž)�”}”(hjJh]”hŒ Parameters”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M›hjDubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hjih]”hŒwq_head”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M˜hjcubjÉ)�”}”(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˜hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcubeh}”(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`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjDubjM)�”}”(hŒ**Description**”h]”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›hjDubjM)�”}”(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”…”�”}”(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´MšhjDubjM)�”}”(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.”…”�”}”(hj8h²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žhjDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²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ÜhjPh²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)�”}”(hjah]”hŒwait_event_idle_exclusive”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjch²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]”jZah ]”(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²hhjPh³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­hjPh²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«hjPh²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)�”}”(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³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­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”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Ž)�”}”(hjeh]”hŒ Description”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjcubah}”(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ƒhjPh²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ÜhjPh²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)�”}”(hjøh]”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'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&]”jFjAjGj.jHj.jI‰jJ‰jK‰uh1híh²hhjPh³Nh´NubjM)�”}”(hŒ9``wait_event_idle_timeout (wq_head, condition, timeout)``”h]”jS)�”}”(hj4h]”hŒ5wait_event_idle_timeout (wq_head, condition, timeout)”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÊhjPh²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”…”�”}”(hjNh²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ÈhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j\h´MÈhjPh²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Ž)�”}”(hjih]”hŒ Parameters”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÌhjcubj¤)�”}”(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Éhjubj©)�”}”(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Êhjubj©)�”}”(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”…”�”}”(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Ëhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjcubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj5h]”hŒ Description”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MÍhjcubjM)�”}”(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 ”…”�”}”(hjKh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKubhŒ evaluates to true. The ”…”�”}”(hjKh²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKubhŒ$ is checked each time the waitqueue ”…”�”}”(hjKh²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKubhŒ is woken up.”…”�”}”(hjKh²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ÌhjcubjM)�”}”(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ÐhjcubjM)�”}”(hŒ **Return**”h]”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ÓhjcubjM)�”}”(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”…”�”}”(hjõh²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”…”�”}”(hjh²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”…”�”}”(hjOh²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Ôhjcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²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ÜhjPh²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²hhjPh³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ëhjPh²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éhjPh²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³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)�”}”(hjK h]”hŒ condition”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjI 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ëhjE ubjÉ)�”}”(hhh]”jM)�”}”(hŒ(a C expression for the event to wait for”h]”hŒ(a C expression for the event to wait for”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j` h´Mëhja ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjE 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&]”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.”…”�”}”(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]”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´MWhj8&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´MThjW&ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(hjv&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jr&h´MThjs&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjW&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jr&h´MThjT&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´MUhjT&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³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MWhj8&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´MVhj8&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”…”�”}”(hj4'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´MZhj8&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.”…”�”}”(hjM'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^hj8&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.”…”�”}”(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´Mbhj8&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.”…”�”}”(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´Mfhj8&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 ”…”�”}”(hjz'h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj‚'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjz'ubhŒ evaluated to true.”…”�”}”(hjz'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´Mihj8&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²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ÜhjPh²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²hhjPh³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´MthjPh²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´MrhjPh²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Ž)�”}”(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´Mvhj (ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``wq`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ``wq``”h]”jS)�”}”(hjE(h]”hŒwq”…”�”}”(hjG(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjC(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mshj?(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³jZ(h´Mshj[(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj?(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jZ(h´Mshj<(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´Mthjx(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Èhjx(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³Œ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.”…”�”}”(hj5)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.”…”�”}”(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Œ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.”…”�”}”(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Œ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 ”…”�”}”(hjb)h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjb)ubhŒ evaluated to true.”…”�”}”(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ˆhj (ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_killable (C macro)”Œc.wait_event_killable”hNt”auh1hÜhjPh²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²hhjPh³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—hjPh²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•hjPh²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–hj'*ubjÉ)�”}”(hhh]”jM)�”}”(hŒthe waitqueue to wait on”h]”hŒthe waitqueue to wait on”…”�”}”(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$*ubj©)�”}”(hŒ7``condition`` a C expression for the event to wait for ”h]”(j¯)�”}”(hŒ ``condition``”h]”jS)�”}”(hjf*h]”hŒ condition”…”�”}”(hjh*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjd*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£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ƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒwait_event_state (C macro)”Œc.wait_event_state”hNt”auh1hÜhjPh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒwait_event_state”h]”hù)�”}”(hŒwait_event_state”h]”hÿ)�”}”(hŒwait_event_state”h]”j)�”}”(hjF+h]”hŒwait_event_state”…”�”}”(hjP+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjL+ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjH+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'hjD+h²hh³jc+h´M¿ubah}”(h]”j?+ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jc+h´M¿hjA+h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjA+h²hh³jc+h´M¿ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj|+jHj|+jI‰jJ‰jK‰uh1híh²hhjPh³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ÁhjPh²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¿hjPh²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”…”�”}”(hj(,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Œ``state`` state to sleep in ”h]”(j¯)�”}”(hŒ ``state``”h]”jS)�”}”(hjH,h]”hŒstate”…”�”}”(hjJ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjF,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ÂhjB,ubjÉ)�”}”(hhh]”jM)�”}”(hŒstate to sleep in”h]”hŒstate to sleep in”…”�”}”(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Í+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ƒhjPh²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ÜhjPh²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)�”}”(hj^-h]”hŒwait_event_killable_timeout”…”�”}”(hjh-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd-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]”jW-ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j{-h´MéhjY-h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjY-h²hh³j{-h´Méubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj”-jHj”-jI‰jJ‰jK‰uh1híh²hhjPh³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ëhjPh²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éhjPh²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)�”}”(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”…”�”}”(hjb.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ìhjZ.ubjÉ)�”}”(hhh]”jM)�”}”(hŒtimeout, in jiffies”h]”hŒtimeout, in jiffies”…”�”}”(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ì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”…”�”}”(hj4/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,/ubhŒ evaluated to ”…”�”}”(hj,/h²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjF/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj,/ubhŒ after the ”…”�”}”(hj,/h²hh³Nh´NubjŽ)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjX/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”…”�”}”(hjj/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ƒhjPh²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ÜhjPh²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)�”}”(hj 0h]”hŒwait_event_lock_irq_cmd”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj 0h²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³j&0h´Mubah}”(h]”j0ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j&0h´Mhj0h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj0h²hh³j&0h´Mubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj?0jHj?0jI‰jJ‰jK‰uh1híh²hhjPh³Nh´NubjM)�”}”(hŒ;``wait_event_lock_irq_cmd (wq_head, condition, lock, cmd)``”h]”jS)�”}”(hjE0h]”hŒ7wait_event_lock_irq_cmd (wq_head, condition, lock, cmd)”…”�”}”(hjG0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjC0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MhjPh²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.”…”�”}”(hj_0h²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[0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jm0h´MhjPh²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Ž)�”}”(hjz0h]”hŒ Parameters”…”�”}”(hj|0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjt0ubj¤)�”}”(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)�”}”(hj 1h]”hŒlock”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj 1ubah}”(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.”…”�”}”(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!1ubah}”(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)�”}”(hjE1h]”hŒcmd”…”�”}”(hjG1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjC1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhj?1ubjÉ)�”}”(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”…”�”}”(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[1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj?1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jZ1h´Mhj�0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjt0ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj�1h]”hŒ Description”…”�”}”(hjƒ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´Mhjt0ubjM)�”}”(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´Mhjt0ubjM)�”}”(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´Mhjt0ubjM)�”}”(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"hjt0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²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ÜhjPh²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)�”}”(hj2h]”hŒwait_event_lock_irq”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj2h²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'hj2h²hh³j12h´M/ubah}”(h]”j 2ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j12h´M/hj2h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj2h²hh³j12h´M/ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjJ2jHjJ2jI‰jJ‰jK‰uh1híh²hhjPh³Nh´NubjM)�”}”(hŒ2``wait_event_lock_irq (wq_head, condition, lock)``”h]”jS)�”}”(hjP2h]”hŒ.wait_event_lock_irq (wq_head, condition, lock)”…”�”}”(hjR2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjN2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M1hjPh²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.”…”�”}”(hjj2h²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/hjf2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jx2h´M/hjPh²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.”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³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M3hj2ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hj¤2h]”hŒwq_head”…”�”}”(h•j¦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”…”�”}”(hjö2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jò2h´M4hjó2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj×2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jò2h´M4hj›2ubj©)�”}”(hŒb``lock`` a locked spinlock_t, which will be released before schedule() and reacquired afterwards. ”h]”(j¯)�”}”(hŒ``lock``”h]”jS)�”}”(hj3h]”hŒlock”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj3ubah}”(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£hj2ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjR3h]”hŒ Description”…”�”}”(hjT3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M8hj2ubjM)�”}”(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 ”…”�”}”(hjh3h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hjp3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh3ubhŒ evaluates to true. The ”…”�”}”(hjh3h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj‚3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh3ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjh3h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hj”3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh3ubhŒ is woken up.”…”�”}”(hjh3h²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´M7hj2ubjM)�”}”(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;hj2ubjM)�”}”(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>hj2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²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ÜhjPh²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&]”jFjAjGj4jHj4jI‰jJ‰jK‰uh1híh²hhjPh³Nh´NubjM)�”}”(hŒI``wait_event_interruptible_lock_irq_cmd (wq_head, condition, lock, cmd)``”h]”jS)�”}”(hj!4h]”hŒEwait_event_interruptible_lock_irq_cmd (wq_head, condition, lock, cmd)”…”�”}”(hj#4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MThjPh²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.”…”�”}”(hj;4h²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´MRhj74ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jI4h´MRhjPh²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Ž)�”}”(hjV4h]”hŒ Parameters”…”�”}”(hjX4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjT4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MVhjP4ubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``wq_head`` the waitqueue to wait on ”h]”(j¯)�”}”(hŒ ``wq_head``”h]”jS)�”}”(hju4h]”hŒwq_head”…”�”}”(hjw4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjs4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MUhjo4ubjÉ)�”}”(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Èhjo4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠ4h´MUhjl4ubj©)�”}”(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´MVhjl4ubj©)�”}”(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ý4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjá4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jü4h´MXhjl4ubj©)�”}”(hŒM``cmd`` a command which is invoked outside the critical section before sleep ”h]”(j¯)�”}”(hŒ``cmd``”h]”jS)�”}”(hj!5h]”hŒcmd”…”�”}”(hj#5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´MZhj5ubjÉ)�”}”(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”…”�”}”(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´MYhj75ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j65h´MZhjl4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjP4ubjM)�”}”(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³ŒV/var/lib/git/docbuild/linux/Documentation/driver-api/basics:63: ./include/linux/wait.h”h´M\hjP4ubjM)�”}”(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 ”…”�”}”(hjs5h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj{5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjs5ubhŒ0 evaluates to true or a signal is received. The ”…”�”}”(hjs5h²hh³Nh´NubjŽ)�”}”(hŒ **condition**”h]”hŒ condition”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjs5ubhŒ$ is checked each time the waitqueue ”…”�”}”(hjs5h²hh³Nh´NubjŽ)�”}”(hŒ **wq_head**”h]”hŒwq_head”…”�”}”(hjŸ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjs5ubhŒ is woken up.”…”�”}”(hjs5h²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[hjP4ubjM)�”}”(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_hjP4ubjM)�”}”(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´MbhjP4ubjM)�”}”(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´MfhjP4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²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ÜhjPh²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)�”}”(hj6h]”hŒ!wait_event_interruptible_lock_irq”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj6h²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]”j 6ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j.6h´Mthj 6h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj 6h²hh³j.6h´Mtubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjG6jHjG6jI‰jJ‰jK‰uh1híh²hhjPh³Nh´NubjM)�”}”(hŒ@``wait_event_interruptible_lock_irq (wq_head, condition, lock)``”h]”jS)�”}”(hjM6h]”hŒhjm:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjm: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€)�”}”jsjW:sbŒ c.__wake_up”†”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Œwq_head”h]”hŒwq_head”…”�”}”(hjÊ:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjm:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hji: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”ˆjjuh1j9hji:ubj:)�”}”(hŒint nr_exclusive”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Œ nr_exclusive”h]”hŒ nr_exclusive”…”�”}”(hjP;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hji:ubj:)�”}”(hŒ void *key”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(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Œ*”…”�”}”(hj…;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hje;ubj)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj’;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hji:ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj0:h²hh³jB:h´K†ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,:h²hh³jB:h´K†ubah}”(h]”j':ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jB: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³jB:h´K†ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÔ;jHjÔ;jI‰jJ‰jK‰uh1híh²hhjPh³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)�”}”(hj6<h]”hŒunsigned int mode”…”�”}”(hj8<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4<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ˆhj0<ubjÉ)�”}”(hhh]”jM)�”}”(hŒ which threads”h]”hŒ which threads”…”�”}”(hjO<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jK<h´KˆhjL<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jK<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)�”}”(hjo<h]”hŒint nr_exclusive”…”�”}”(hjq<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjm<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‰hji<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Èhji<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ƒhjPh²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ÜhjPh²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”…”�”}”(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Œ ”…”�”}”(hj7=h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$=h²hh³j6=h´K¬ubhÿ)�”}”(hŒ__wake_up_sync_key”h]”j)�”}”(hŒ__wake_up_sync_key”h]”hŒ__wake_up_sync_key”…”�”}”(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Œ?(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”…”�”}”(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Œ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€)�”}”jsjK=sbŒc.__wake_up_sync_key”†”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Œwq_head”h]”hŒwq_head”…”�”}”(hj¾=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhja=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û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”ˆ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Œ ”…”�”}”(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Œkey”h]”hŒkey”…”�”}”(hjQ>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Œ'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¬hjx>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj=h²hh³j6=h´K¬ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj“>jHj“>jI‰jJ‰jK‰uh1híh²hhjPh³Nh´Nubj„)�”}”(hXT**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** The sync wakeup differs that the waker knows that it will schedule away soon, so while the target thread will be woken up, it will not be migrated to another CPU - ie. the two threads are 'synchronized' with each other. This can prevent needless bouncing between CPUs. On UP it can prevent extra preemption. 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”…”�”}”(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:66: ./kernel/sched/wait.c”h´K¯hj(?ubjÉ)�”}”(hhh]”jM)�”}”(hŒ+opaque value to be passed to wakeup targets”h]”hŒ+opaque value to be passed to wakeup targets”…”�”}”(hjG?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jC?h´K¯hjD?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj(?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jC?h´K¯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³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´K±hj—>ubjM)�”}”(hX The sync wakeup differs that the waker knows that it will schedule away soon, so while the target thread will be woken up, it will not be migrated to another CPU - ie. the two threads are 'synchronized' with each other. This can prevent needless bouncing between CPUs.”h]”hXThe sync wakeup differs that the waker knows that it will schedule away soon, so while the target thread will be woken up, it will not be migrated to another CPU - ie. the two threads are ‘synchronized’ with each other. This can prevent needless bouncing between CPUs.”…”�”}”(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Œ&On UP it can prevent extra preemption.”h]”hŒ&On UP it can prevent extra preemption.”…”�”}”(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ƒhjPh²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ÜhjPh²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²hhjPh³Nh´Nubj„)�”}”(hXW**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** The sync wakeup differs in that the waker knows that it will schedule away soon, so while the target thread will be woken up, it will not be migrated to another CPU - ie. the two threads are 'synchronized' with each other. This can prevent needless bouncing between CPUs. On UP it can prevent extra preemption. If this function wakes up a task, it executes a full memory barrier before accessing the task state.”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)�”}”(hXThe sync wakeup differs in that the waker knows that it will schedule away soon, so while the target thread will be woken up, it will not be migrated to another CPU - ie. the two threads are 'synchronized' with each other. This can prevent needless bouncing between CPUs.”h]”hXThe sync wakeup differs in that the waker knows that it will schedule away soon, so while the target thread will be woken up, it will not be migrated to another CPU - ie. the two threads are ‘synchronized’ with each other. This can prevent needless bouncing between CPUs.”…”�”}”(hj#Bh²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;AubjM)�”}”(hŒ&On UP it can prevent extra preemption.”h]”hŒ&On UP it can prevent extra preemption.”…”�”}”(hj2Bh²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;AubjM)�”}”(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.”…”�”}”(hjABh²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;Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒfinish_wait (C function)”Œ c.finish_wait”hNt”auh1hÜhjPh²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”…”�”}”(hjpBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjlBh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´MpubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjlBh²hh³j~Bh´Mpubhÿ)�”}”(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þhjlBh²hh³j~Bh´Mpubj4)�”}”(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”…”�”}”(hjCh²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”…”�”}”(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.finish_wait”†”asbuh1hhjCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Ch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjiCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjCubj)�”}”(hŒwq_entry”h]”hŒwq_entry”…”�”}”(hjvCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¥Bubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjlBh²hh³j~Bh´Mpubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjhBh²hh³j~Bh´Mpubah}”(h]”jcBah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j~Bh´MphjeBh²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´Mphj�Ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjeBh²hh³j~Bh´Mpubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¸CjHj¸CjI‰jJ‰jK‰uh1híh²hhjPh³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´Mthj¼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´MqhjÛ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´Mqhj÷Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÛCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jöCh´MqhjØ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&]”uh1jRhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´MrhjDubjÉ)�”}”(hhh]”jM)�”}”(hŒwait descriptor”h]”hŒwait descriptor”…”�”}”(hj3Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j/Dh´Mrhj0Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j/Dh´MrhjØCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¼CubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjUDh]”hŒ Description”…”�”}”(hjWDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSDubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/basics:66: ./kernel/sched/wait.c”h´Mthj¼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.”…”�”}”(hjkDh²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´Mshj¼Cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjPh²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 Eubah}”(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Œ*”…”�”}”(hjhj“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}]”j*EŒ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 ”…”�”}”(hjFh²hh³Nh´NubjS)�”}”(hŒ``TASK_STOPPED``”h]”hŒ TASK_STOPPED”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjFubhŒ or ”…”�”}”(hjFh²hh³Nh´NubjS)�”}”(hŒ``TASK_TRACED``”h]”hŒ TASK_TRACED”…”�”}”(hj1Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjFubeh}”(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&]”jFjAjGjOFjHjOFjI‰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.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjYFh]”hŒ Parameters”…”�”}”(hj[Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWFubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M/hjSFubj¤)�”}”(hhh]”(j©)�”}”(hŒ&``struct wait_opts *wo`` wait options ”h]”(j¯)�”}”(hŒ``struct wait_opts *wo``”h]”jS)�”}”(hjxFh]”hŒstruct wait_opts *wo”…”�”}”(hjzFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjvFubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M,hjrFubjÉ)�”}”(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ÈhjrFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Fh´M,hjoFubj©)�”}”(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-hjoFubj©)�”}”(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”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÿFh´M.hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjäFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÿFh´M.hjoFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjSFubjM)�”}”(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³ŒO/var/lib/git/docbuild/linux/Documentation/driver-api/basics:72: ./kernel/exit.c”h´M0hjSFubjM)�”}”(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”…”�”}”(hjCGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;GubhŒ in state ”…”�”}”(hj;Gh²hh³Nh´NubjS)�”}”(hŒ``TASK_STOPPED``”h]”hŒ TASK_STOPPED”…”�”}”(hjUGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj;GubhŒ or ”…”�”}”(hj;Gh²hh³Nh´NubjS)�”}”(hŒ``TASK_TRACED``”h]”hŒ TASK_TRACED”…”�”}”(hjgGh²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/hjSFubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hj‚Gh]”hŒContext”…”�”}”(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´M1hjSFubjM)�”}”(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´M2hj˜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´M2hjSFubjM)�”}”(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´M5hjSFubjM)�”}”(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´M6hjSFubeh}”(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”…”�”}”(hj5Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj1Hh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´KöubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCHh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1Hh²hh³jBHh´Köubhÿ)�”}”(hŒtask_set_jobctl_pending”h]”j)�”}”(hŒtask_set_jobctl_pending”h]”hŒtask_set_jobctl_pending”…”�”}”(hjUHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQHubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj1Hh²hh³jBHh´Köubj4)�”}”(hŒ.(struct task_struct *task, unsigned long mask)”h]”(j:)�”}”(hŒstruct task_struct *task”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjqHh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjmHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmHubh)�”}”(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€)�”}”jsjWHsbŒc.task_set_jobctl_pending”†”asbuh1hhjmHubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmHubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj½Hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjmHubj)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjÊHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjiHubj:)�”}”(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Œ ”…”�”}”(hj Ih²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”ˆjjuh1j9hjiHubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj1Hh²hh³jBHh´Köubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj-Hh²hh³jBHh´Köubah}”(h]”j(Hah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jBHh´Köhj*Hh²hubj4)�”}”(hhh]”jM)�”}”(hŒset jobctl pending bits”h]”hŒset jobctl pending bits”…”�”}”(hjEIh²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öhjBIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj*Hh²hh³jBHh´Köubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj]IjHj]IjI‰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Ž)�”}”(hjgIh]”hŒ Parameters”…”�”}”(hjiIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeIubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´KúhjaIubj¤)�”}”(hhh]”(j©)�”}”(hŒ)``struct task_struct *task`` target task ”h]”(j¯)�”}”(hŒ``struct task_struct *task``”h]”jS)�”}”(hj†Ih]”hŒstruct task_struct *task”…”�”}”(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Œ 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Èhj€Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›Ih´K÷hj}Iubj©)�”}”(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øhj}Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjaIubjM)�”}”(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úhjaIubjM)�”}”(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”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ from ”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ**task->jobctl**”h]”hŒ task->jobctl”…”�”}”(hj*Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ. ”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hjsighand->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´MhjaIubjM)�”}”(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´MhjaIubjM)�”}”(hŒO``true`` if **mask** is set, ``false`` if made noop because **task** was dying.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKubhŒ if ”…”�”}”(hjKh²hh³Nh´NubjŽ)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKubhŒ is set, ”…”�”}”(hjKh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj(Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKubhŒ if made noop because ”…”�”}”(hjKh²hh³Nh´NubjŽ)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hj:Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKubhŒ was dying.”…”�”}”(hjKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjaIubeh}”(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”…”�”}”(hjsKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjoKh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjoKh²hh³j�Kh´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þhjoKh²hh³j�Kh´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 Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¬Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¨Kubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjoKh²hh³j�Kh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjkKh²hh³j�Kh´Mubah}”(h]”jfKah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�Kh´MhjhKh²hubj4)�”}”(hhh]”jM)�”}”(hŒclear jobctl trapping bit”h]”hŒclear jobctl trapping bit”…”�”}”(hj3Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mhj0Lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjhKh²hh³j�Kh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjKLjHjKLjI‰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Ž)�”}”(hjULh]”hŒ Parameters”…”�”}”(hjWLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSLubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjOLubj¤)�”}”(hhh]”j©)�”}”(hŒ)``struct task_struct *task`` target task ”h]”(j¯)�”}”(hŒ``struct task_struct *task``”h]”jS)�”}”(hjtLh]”hŒstruct task_struct *task”…”�”}”(hjvLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjrLubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjnLubjÉ)�”}”(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ÈhjnLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‰Lh´MhjkLubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjOLubjM)�”}”(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´MhjOLubjM)�”}”(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´MhjOLubjM)�”}”(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´MhjOLubjM)�”}”(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”…”�”}”(hjMh²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´MhjOLubeh}”(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”…”�”}”(hjQMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjMMh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M,ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjMMh²hh³j_Mh´M,ubhÿ)�”}”(hŒtask_clear_jobctl_pending”h]”j)�”}”(hŒtask_clear_jobctl_pending”h]”hŒtask_clear_jobctl_pending”…”�”}”(hjrMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnMubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjMMh²hh³j_Mh´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€)�”}”jsjtMsbŒ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”ˆjjuh1j9hj†Mubj:)�”}”(hŒunsigned long mask”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œlong”h]”hŒlong”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjüMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Nh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjüMubj)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj8Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjüMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj†Mubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjMMh²hh³j_Mh´M,ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjIMh²hh³j_Mh´M,ubah}”(h]”jDMah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j_Mh´M,hjFMh²hubj4)�”}”(hhh]”jM)�”}”(hŒclear jobctl pending bits”h]”hŒclear jobctl pending bits”…”�”}”(hjbNh²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_Nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjFMh²hh³j_Mh´M,ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjzNjHjzNjI‰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Ž)�”}”(hj„Nh]”hŒ Parameters”…”�”}”(hj†Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‚Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M0hj~Nubj¤)�”}”(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£hj~NubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjOh]”hŒ Description”…”�”}”(hjOh²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´M0hj~NubjM)�”}”(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”…”�”}”(hj5Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-OubhŒ from ”…”�”}”(hj-Oh²hh³Nh´NubjŽ)�”}”(hŒ**task->jobctl**”h]”hŒ task->jobctl”…”�”}”(hjGOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-OubhŒ. ”…”�”}”(hj-Oh²hh³Nh´NubjŽ)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hjYOh²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”…”�”}”(hjkOh²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”…”�”}”(hj}Oh²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/hj~NubjM)�”}”(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´M3hj~NubjM)�”}”(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´M6hj~NubjM)�”}”(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´M7hj~Nubeh}”(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ûhj Ph²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&]”uh1jPhj Ph²hh³jPh´MHubhÿ)�”}”(hŒtask_participate_group_stop”h]”j)�”}”(hŒtask_participate_group_stop”h]”hŒtask_participate_group_stop”…”�”}”(hj0Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj,Pubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj Ph²hh³jPh´MHubj4)�”}”(hŒ(struct task_struct *task)”h]”j:)�”}”(hŒstruct task_struct *task”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjLPh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjHPubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYPh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjHPubh)�”}”(hhh]”j)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(hjjPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jlPŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj2PsbŒc.task_participate_group_stop”†”asbuh1hhjHPubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠPh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjHPubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj˜Ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjHPubj)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj¥Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjDPubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj Ph²hh³jPh´MHubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjPh²hh³jPh´MHubah}”(h]”jPah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jPh´MHhjPh²hubj4)�”}”(hhh]”jM)�”}”(hŒparticipate in a group stop”h]”hŒparticipate in a group stop”…”�”}”(hjÏPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MHhjÌPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjPh²hh³jPh´MHubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjçPjHjçPjI‰jJ‰jK‰uh1híh²hhj‰Dh³Nh´Nubj„)�”}”(hX**Parameters** ``struct task_struct *task`` task participating in a group stop **Description** **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. **Context** Must be called with **task->sighand->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 QubjÉ)�”}”(hhh]”jM)�”}”(hŒ"task participating in a group stop”h]”hŒ"task participating in a group stop”…”�”}”(hj)Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j%Qh´MIhj&Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j%Qh´MIhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjëPubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjKQh]”hŒ Description”…”�”}”(hjMQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIQubah}”(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”…”�”}”(hjeQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaQubhŒ has ”…”�”}”(hjaQh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_STOP_PENDING``”h]”hŒJOBCTL_STOP_PENDING”…”�”}”(hjwQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjaQubhŒq set and is participating in a group stop. Group stop states are cleared and the group stop count is consumed if ”…”�”}”(hjaQh²hh³Nh´NubjS)�”}”(hŒ``JOBCTL_STOP_CONSUME``”h]”hŒJOBCTL_STOP_CONSUME”…”�”}”(hj‰Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjaQubhŒH was set. If the consumption completes the group stop, the appropriate ”…”�”}”(hjaQh²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ `SIGNAL_*`”h]”hŒSIGNAL_*”…”�”}”(hj�Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›QhjaQubhŒ flags are set.”…”�”}”(hjaQh²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 Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjRubhŒ< if group stop completion should be notified to the parent, ”…”�”}”(hjRh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjRubhŒ otherwise.”…”�”}”(hjRh²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”…”�”}”(hjVRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjRRh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MJubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeRh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRRh²hh³jdRh´MJubhÿ)�”}”(hŒptrace_trap_notify”h]”j)�”}”(hŒptrace_trap_notify”h]”hŒptrace_trap_notify”…”�”}”(hjwRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsRubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjRRh²hh³jdRh´MJubj4)�”}”(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€)�”}”jsjyRsbŒ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”ˆjjuh1j9hj‹Rubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjRRh²hh³jdRh´MJubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjNRh²hh³jdRh´MJubah}”(h]”jIRah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jdRh´MJhjKRh²hubj4)�”}”(hhh]”jM)�”}”(hŒschedule trap to notify ptracer”h]”hŒschedule trap to notify ptracer”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MJhjSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjKRh²hh³jdRh´MJubeh}”(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Ž)�”}”(hj8Sh]”hŒ Parameters”…”�”}”(hj:Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6Subah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MNhj2Subj¤)�”}”(hhh]”j©)�”}”(hŒ:``struct task_struct *t`` tracee wanting to notify tracer ”h]”(j¯)�”}”(hŒ``struct task_struct *t``”h]”jS)�”}”(hjWSh]”hŒstruct task_struct *t”…”�”}”(hjYSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjUSubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MKhjQSubjÉ)�”}”(hhh]”jM)�”}”(hŒtracee wanting to notify tracer”h]”hŒtracee wanting to notify tracer”…”�”}”(hjpSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jlSh´MKhjmSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jlSh´MKhjNSubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj2SubjM)�”}”(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´MMhj2SubjM)�”}”(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´MLhj2SubjM)�”}”(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´MPhj2SubjM)�”}”(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´MVhj2SubjM)�”}”(hŒ4Must be called with **task->sighand->siglock** held.”h]”(hŒMust be called with ”…”�”}”(hjTh²hh³Nh´NubjŽ)�”}”(hŒ**task->sighand->siglock**”h]”hŒtask->sighand->siglock”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTubhŒ held.”…”�”}”(hjTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MWhj2Subeh}”(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”…”�”}”(hjCTh²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´M7ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRTh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?Th²hh³jQTh´M7ubhÿ)�”}”(hŒforce_sig_seccomp”h]”j)�”}”(hŒforce_sig_seccomp”h]”hŒforce_sig_seccomp”…”�”}”(hjdTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`Tubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj?Th²hh³jQTh´M7ubj4)�”}”(hŒ.(int syscall, int reason, bool force_coredump)”h]”(j:)�”}”(hŒ int syscall”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Œsyscall”h]”hŒsyscall”…”�”}”(hjœTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjxTubj:)�”}”(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”ˆjjuh1j9hjxTubj:)�”}”(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”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjæTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjxTubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj?Th²hh³jQTh´M7ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj;Th²hh³jQTh´M7ubah}”(h]”j6Tah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jQTh´M7hj8Th²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´M7hj,Uh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj8Th²hh³jQTh´M7ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjGUjHjGUjI‰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Ž)�”}”(hjQUh]”hŒ Parameters”…”�”}”(hjSUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOUubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M;hjKUubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``int syscall`` syscall number to send to userland ”h]”(j¯)�”}”(hŒ``int syscall``”h]”jS)�”}”(hjpUh]”hŒ int syscall”…”�”}”(hjrUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjnUubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M8hjjUubjÉ)�”}”(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³j…Uh´M8hj†Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…Uh´M8hjgUubj©)�”}”(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´M9hj£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´M9hj¿Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj£Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¾Uh´M9hjgUubj©)�”}”(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:hjgUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjKUubjM)�”}”(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<hjKUubjM)�”}”(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.”…”�”}”(hj3Vh²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;hjKUubeh}”(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”…”�”}”(hjbVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj^Vh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M( ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqVh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj^Vh²hh³jpVh´M( ubhÿ)�”}”(hŒdo_notify_parent_cldstop”h]”j)�”}”(hŒdo_notify_parent_cldstop”h]”hŒdo_notify_parent_cldstop”…”�”}”(hjƒVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj^Vh²hh³jpVh´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€)�”}”jsj…VsbŒ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ûhj WubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Wubj)�”}”(hŒ for_ptracer”h]”hŒ for_ptracer”…”�”}”(hj,Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj—Vubj:)�”}”(hŒint why”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjEWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjAWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjAWubj)�”}”(hŒwhy”h]”hŒwhy”…”�”}”(hjaWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj—Vubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj^Vh²hh³jpVh´M( ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjZVh²hh³jpVh´M( ubah}”(h]”jUVah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jpVh´M( hjWVh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/notify parent of stopped/continued state change”h]”hŒ/notify parent of stopped/continued state change”…”�”}”(hj‹Wh²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&]”uh1j3hjWVh²hh³jpVh´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)�”}”(hjXh]”hŒbool for_ptracer”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjXubah}”(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)�”}”(hj>Xh]”hŒint why”…”�”}”(hj@Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjparent** 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”…”�”}”(hjYh²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”…”�”}”(hj Yh²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´M0 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.”…”�”}”(hj4Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M1 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”…”�”}”(hjcYh²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Œ ”…”�”}”(hjqYh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj_Yh²hh³jpYh´M. ubhÿ)�”}”(hŒdo_signal_stop”h]”j)�”}”(hŒdo_signal_stop”h]”hŒdo_signal_stop”…”�”}”(hjƒYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj_Yh²hh³jpYh´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&]”jjuh1j3hj_Yh²hh³jpYh´M. ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj[Yh²hh³jpYh´M. ubah}”(h]”jVYah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jpYh´M. hjXYh²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&]”uh1j3hjXYh²hh³jpYh´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Ž)�”}”(hjZh]”hŒ Parameters”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M2 hjZubj¤)�”}”(hhh]”j©)�”}”(hŒ5``int signr`` signr causing group stop if initiating ”h]”(j¯)�”}”(hŒ ``int signr``”h]”jS)�”}”(hj&Zh]”hŒ int signr”…”�”}”(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Œ&signr causing group stop if initiating”h]”hŒ&signr causing group stop if initiating”…”�”}”(hj?Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j;Zh´M/ hjsighand->siglock** held, which is released on ``true`` return.”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Œ held, which is released on ”…”�”}”(hj[h²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj![h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj[ubhŒ return.”…”�”}”(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; 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³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M> hjZubjM)�”}”(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”…”�”}”(hjV[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjR[ubhŒA if group stop is already cancelled or ptrace trap is scheduled. ”…”�”}”(hjR[h²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjh[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjR[ubhŒ if participated in group stop.”…”�”}”(hjR[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? hjZubeh}”(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)�”}”(hjI\h]”hŒvoid”…”�”}”(hjK\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjG\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.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³Œ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Œ ”…”�”}”(hj2]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj]h²hh³j1]h´MÌ ubhÿ)�”}”(hŒdo_freezer_trap”h]”j)�”}”(hŒdo_freezer_trap”h]”hŒdo_freezer_trap”…”�”}”(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Œ(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”ˆjjuh1j9hjX]ubah}”(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Œ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³j1]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 ”…”�”}”(hjC^h²hh³Nh´NubjŽ)�”}”(hŒ**current->sighand->siglock**”h]”hŒcurrent->sighand->siglock”…”�”}”(hjK^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjC^ubhŒ1 held, which is always released before returning.”…”�”}”(hjC^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”…”�”}”(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´M6 ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€^h²hh³j’^h´M6 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þhj€^h²hh³j’^h´M6 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”…”�”}”(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Œstepping”h]”hŒstepping”…”�”}”(hjO_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´M6 ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj|^h²hh³j’^h´M6 ubah}”(h]”jw^ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j’^h´M6 hjy^h²hubj4)�”}”(hhh]”jM)�”}”(hŒ6called after signal delivery to update blocked signals”h]”hŒ6called after signal delivery to update blocked signals”…”�”}”(hjy_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´M6 hjv_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjy^h²hh³j’^h´M6 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´M7 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´M7 hjÐ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj´_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÏ_h´M7 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´M8 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´M8 hj `ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjí_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`h´M8 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³Œ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 (”…”�”}”(hjD`h²hh³Nh´NubjŽ)�”}”(hŒ**ksig->ka.sa.sa_mask**”h]”hŒksig->ka.sa.sa_mask”…”�”}”(hjL`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD`ubhŒ= is always blocked), and the signal itself is blocked unless ”…”�”}”(hjD`h²hh³Nh´NubjS)�”}”(hŒ``SA_NODEFER``”h]”hŒ SA_NODEFER”…”�”}”(hj^`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjD`ubhŒ is set in ”…”�”}”(hjD`h²hh³Nh´NubjŽ)�”}”(hŒ**ksig->ka.sa.sa_flags**”h]”hŒksig->ka.sa.sa_flags”…”�”}”(hjp`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD`ubhŒ. Tracing is notified.”…”�”}”(hjD`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´M9 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« hj ah²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²hhj‰Dh³Nh´Nubj„)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj2ah]”hŒ Parameters”…”�”}”(hj4ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0aubah}”(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)�”}”(hjQah]”hŒvoid”…”�”}”(hjSah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjOaubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M± hjKaubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Khjgaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjKaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jfah´M± hjHaubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj,aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ set_current_blocked (C function)”Œc.set_current_blocked”hNt”auh1hÜhj‰Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void set_current_blocked (sigset_t *newset)”h]”hù)�”}”(hŒ*void set_current_blocked(sigset_t *newset)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj«ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj§ah²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”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Œset_current_blocked”h]”j)�”}”(hŒset_current_blocked”h]”hŒset_current_blocked”…”�”}”(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Œ(sigset_t *newset)”h]”j:)�”}”(hŒsigset_t *newset”h]”(h)�”}”(hhh]”j)�”}”(hŒsigset_t”h]”hŒsigset_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€)�”}”jsjÎasbŒc.set_current_blocked”†”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Œnewset”h]”hŒnewset”…”�”}”(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&]”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Œchange current->blocked mask”h]”hŒchange current->blocked mask”…”�”}”(hjPbh²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Å hjMbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj ah²hh³j¹ah´MÅ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjhbjHjhbjI‰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Ž)�”}”(hjrbh]”hŒ Parameters”…”�”}”(hjtbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpbubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MÉ hjlbubj¤)�”}”(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Æ hj‹bubjÉ)�”}”(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Èhj‹bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¦bh´MÆ hjˆbubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjlbubjM)�”}”(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È hjlbubjM)�”}”(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Ç hjlbubeh}”(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ûhj ch²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M6 ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ch²hh³jch´M6 ubhÿ)�”}”(hŒsys_rt_sigprocmask”h]”j)�”}”(hŒsys_rt_sigprocmask”h]”hŒsys_rt_sigprocmask”…”�”}”(hj2ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.cubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj ch²hh³jch´M6 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”…”�”}”(hjNch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjJcubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJcubj)�”}”(hŒhow”h]”hŒhow”…”�”}”(hjjch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjFcubj:)�”}”(hŒsigset_t __user *nset”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€)�”}”jsj4csbŒc.sys_rt_sigprocmask”†”asbuh1hhjcubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦ch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcubhŒ__user”…”�”}”(hjch²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸ch²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Œnset”h]”hŒnset”…”�”}”(hjÓch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjFcubj:)�”}”(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Œ ”…”�”}”(hj dh²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”ˆjjuh1j9hjFcubj:)�”}”(hŒsize_t sigsetsize”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjVdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jXdŒmodname”NŒ classname”Njwjz)�”}”j}]”j¢cŒc.sys_rt_sigprocmask”†”asbuh1hhjOdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjOdubj)�”}”(hŒ sigsetsize”h]”hŒ sigsetsize”…”�”}”(hj‚dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjFcubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj ch²hh³jch´M6 ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj ch²hh³jch´M6 ubah}”(h]”jcah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jch´M6 hjch²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´M6 hj©dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjch²hh³jch´M6 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´M: 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´M7 hjçdubjÉ)�”}”(hhh]”jM)�”}”(hŒ&whether to add, remove, or set signals”h]”hŒ&whether to add, remove, or set signals”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jeh´M7 hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjçdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jeh´M7 hjädubj©)�”}”(hŒ2``sigset_t __user * nset`` stores pending signals ”h]”(j¯)�”}”(hŒ``sigset_t __user * nset``”h]”jS)�”}”(hj&eh]”hŒsigset_t __user * nset”…”�”}”(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´M8 hj eubjÉ)�”}”(hhh]”jM)�”}”(hŒstores pending signals”h]”hŒstores pending signals”…”�”}”(hj?eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j;eh´M8 hj(struct compat_siginfo *to, const struct kernel_siginfo *from)”h]”(j:)�”}”(hŒstruct compat_siginfo *to”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjhh²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”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j"hŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjègsbŒc.copy_siginfo_to_external32”†”asbuh1hhjþgubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþgubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjNhh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjþgubj)�”}”(hŒto”h]”hŒto”…”�”}”(hj[hh²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”…”�”}”(hjthh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjphubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjphubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj�hh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjphubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœhh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjphubh)�”}”(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}]”jhjCjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCjubh)�”}”(hhh]”j)�”}”(hŒsigset_t”h]”hŒsigset_t”…”�”}”(hjejh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jgjŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj-jsbŒc.do_sigtimedwait”†”asbuh1hhjCjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…jh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj“jh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjCjubj)�”}”(hŒwhich”h]”hŒwhich”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?jubj:)�”}”(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}]”j�jŒ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”ˆjjuh1j9hj?jubj:)�”}”(hŒconst struct timespec64 *ts”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj kubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj kubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hj)kh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj kubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj kubh)�”}”(hhh]”j)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(hjGkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jIkŒmodname”NŒ classname”Njwjz)�”}”j}]”j�jŒc.do_sigtimedwait”†”asbuh1hhj kubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjekh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj kubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjskh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj kubj)�”}”(hŒts”h]”hŒts”…”�”}”(hj€kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?jubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjjh²hh³jjh´Mâubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjjh²hh³jjh´Mâubah}”(h]”jýiah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jjh´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³jjh´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)�”}”(hj2lh]”hŒkernel_siginfo_t *info”…”�”}”(hj4lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0lubah}”(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”…”�”}”(hjKlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jGlh´MähjHlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jGlh´Mähjðkubj©)�”}”(hŒF``const struct timespec64 *ts`` upper bound on process time suspension”h]”(j¯)�”}”(hŒ``const struct timespec64 *ts``”h]”jS)�”}”(hjklh]”hŒconst struct timespec64 *ts”…”�”}”(hjmlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjilubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MæhjelubjÉ)�”}”(hhh]”jM)�”}”(hŒ&upper bound on process time suspension”h]”hŒ&upper bound on process time suspension”…”�”}”(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´Måhj�lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjelubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€lh´Mæhjðkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÔkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ sys_rt_sigtimedwait (C function)”Œc.sys_rt_sigtimedwait”hNt”auh1hÜhj‰Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ“long sys_rt_sigtimedwait (const sigset_t __user * uthese, siginfo_t __user * uinfo, const struct __kernel_timespec __user * uts, size_t sigsetsize)”h]”hù)�”}”(hŒ�long sys_rt_sigtimedwait(const sigset_t __user *uthese, siginfo_t __user *uinfo, const struct __kernel_timespec __user *uts, size_t sigsetsize)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÅlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÁlh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔlh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁlh²hh³jÓlh´Mubhÿ)�”}”(hŒsys_rt_sigtimedwait”h]”j)�”}”(hŒsys_rt_sigtimedwait”h]”hŒsys_rt_sigtimedwait”…”�”}”(hjælh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjâlubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÁlh²hh³jÓlh´Mubj4)�”}”(hŒw(const sigset_t __user *uthese, siginfo_t __user *uinfo, const struct __kernel_timespec __user *uts, size_t sigsetsize)”h]”(j:)�”}”(hŒconst sigset_t __user *uthese”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjþ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”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j"mŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjèlsbŒc.sys_rt_sigtimedwait”†”asbuh1hhjþlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþlubhŒ__user”…”�”}”(hjþlh²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþlubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj`mh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjþlubj)�”}”(hŒuthese”h]”hŒuthese”…”�”}”(hjmmh²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&]”uh1jhj†mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j‹mŒmodname”NŒ classname”Njwjz)�”}”j}]”jhjémubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjémubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjémubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjémubh)�”}”(hhh]”j)�”}”(hŒ__kernel_timespec”h]”hŒ__kernel_timespec”…”�”}”(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``const sigset_t __user * uthese`` queued signals to wait for ”h]”(j¯)�”}”(hŒ"``const sigset_t __user * uthese``”h]”jS)�”}”(hj2oh]”hŒconst sigset_t __user * uthese”…”�”}”(hj4oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0oubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mhj,oubjÉ)�”}”(hhh]”jM)�”}”(hŒqueued signals to wait for”h]”hŒqueued signals to wait for”…”�”}”(hjKoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jGoh´MhjHoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jGoh´Mhj)oubj©)�”}”(hŒP``siginfo_t __user * uinfo`` if non-null, the signal's siginfo is returned here ”h]”(j¯)�”}”(hŒ``siginfo_t __user * uinfo``”h]”jS)�”}”(hjkoh]”hŒsiginfo_t __user * uinfo”…”�”}”(hjmoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjioubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjeoubjÉ)�”}”(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„oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€oh´Mhj�oubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjeoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€oh´Mhj)oubj©)�”}”(hŒW``const struct __kernel_timespec __user * uts`` upper bound on process time suspension ”h]”(j¯)�”}”(hŒ/``const struct __kernel_timespec __user * uts``”h]”jS)�”}”(hj¤oh]”hŒ+const struct __kernel_timespec __user * uts”…”�”}”(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´MhjžoubjÉ)�”}”(hhh]”jM)�”}”(hŒ&upper bound on process time suspension”h]”hŒ&upper bound on process time suspension”…”�”}”(hj½oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¹oh´Mhjºoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjžoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¹oh´Mhj)oubj©)�”}”(hŒ+``size_t sigsetsize`` size of sigset_t type”h]”(j¯)�”}”(hŒ``size_t sigsetsize``”h]”jS)�”}”(hjÝoh]”hŒsize_t sigsetsize”…”�”}”(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Œsize of sigset_t type”h]”hŒsize of sigset_t type”…”�”}”(hjöoh²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óoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj×oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jòoh´M!hj)oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj‰Dh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒsys_kill (C function)”Œ c.sys_kill”hNt”auh1hÜhj‰Dh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ"long sys_kill (pid_t pid, int sig)”h]”hù)�”}”(hŒ!long sys_kill(pid_t pid, int sig)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj7ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj3ph²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¸ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3ph²hh³jEph´M¸ubhÿ)�”}”(hŒsys_kill”h]”j)�”}”(hŒsys_kill”h]”hŒsys_kill”…”�”}”(hjXph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTpubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj3ph²hh³jEph´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”…”�”}”(hjwph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jypŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjZpsbŒ c.sys_kill”†”asbuh1hhjppubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjppubj)�”}”(hŒpid”h]”hŒpid”…”�”}”(hj¥ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjppubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjlpubj:)�”}”(hŒint sig”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj¾ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjºpubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjºpubj)�”}”(hŒsig”h]”hŒsig”…”�”}”(hjÚph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjlpubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj3ph²hh³jEph´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj/ph²hh³jEph´M¸ubah}”(h]”j*pah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jEph´M¸hj,ph²hubj4)�”}”(hhh]”jM)�”}”(hŒsend a signal to a process”h]”hŒsend a signal to a process”…”�”}”(hjqh²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¸hjqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj,ph²hh³jEph´M¸ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”•jjFjAjGjqjHjqjI‰jJ‰jK‰uh1híh²hhj‰Dh³Nh´Nubj„)�”}”(hŒW**Parameters** ``pid_t pid`` the PID of the process ``int sig`` signal to be sent”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³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¼hj qubj¤)�”}”(hhh]”(j©)�”}”(hŒ%``pid_t pid`` the PID of the process ”h]”(j¯)�”}”(hŒ ``pid_t pid``”h]”jS)�”}”(hjEqh]”hŒ pid_t pid”…”�”}”(hjGqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjCqubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¹hj?qubjÉ)�”}”(hhh]”jM)�”}”(hŒthe PID of the process”h]”hŒthe PID of the process”…”�”}”(hj^qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jZqh´M¹hj[qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj?qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jZqh´M¹hjuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCuŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj$usbŒ c.sys_tgkill”†”asbuh1hhj:uubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjauh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:uubj)�”}”(hŒtgid”h]”hŒtgid”…”�”}”(hjouh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj6uubj:)�”}”(hŒ pid_t pid”h]”(h)�”}”(hhh]”j)�”}”(hŒpid_t”h]”hŒpid_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]uŒ c.sys_tgkill”†”asbuh1hhj„uubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©uh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„uubj)�”}”(hŒpid”h]”hŒpid”…”�”}”(hj·uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj6uubj:)�”}”(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”ˆjjuh1j9hj6uubeh}”(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”…”�”}”(hjvh²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Ž)�”}”(hj8vh]”hŒ Parameters”…”�”}”(hj:vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6vubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M�hj2vubj¤)�”}”(hhh]”(j©)�”}”(hŒ1``pid_t tgid`` the thread group ID of the thread ”h]”(j¯)�”}”(hŒ``pid_t tgid``”h]”jS)�”}”(hjWvh]”hŒ pid_t tgid”…”�”}”(hjYvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjUvubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MŠhjQvubjÉ)�”}”(hhh]”jM)�”}”(hŒ!the thread group ID of the thread”h]”hŒ!the thread group ID of the thread”…”�”}”(hjpvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jlvh´MŠhjmvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jlvh´MŠhjNvubj©)�”}”(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‹hjNvubj©)�”}”(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ŒhjNvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj2vubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjwh]”hŒ Description”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MŽhj2vubji)�”}”(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”…”�”}”(hj&wh²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³j>wh´M�hj2vubeh}”(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”…”�”}”(hjewh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjawh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MœubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtwh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjawh²hh³jswh´Mœubhÿ)�”}”(hŒ sys_tkill”h]”j)�”}”(hŒ sys_tkill”h]”hŒ sys_tkill”…”�”}”(hj†wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚wubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjawh²hh³jswh´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”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjèwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjšwubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjawh²hh³jswh´Mœubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj]wh²hh³jswh´Mœubah}”(h]”jXwah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jswh´MœhjZwh²hubj4)�”}”(hhh]”jM)�”}”(hŒ send signal to one specific task”h]”hŒ send signal to one specific task”…”�”}”(hj2xh²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&]”uh1j3hjZwh²hh³jswh´Mœubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjJxjHjJxjI‰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Ž)�”}”(hjTxh]”hŒ Parameters”…”�”}”(hjVxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRxubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M hjNxubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``pid_t pid`` the PID of the task ”h]”(j¯)�”}”(hŒ ``pid_t pid``”h]”jS)�”}”(hjsxh]”hŒ pid_t pid”…”�”}”(hjuxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjqxubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M�hjmxubjÉ)�”}”(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Èhjmxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆxh´M�hjjxubj©)�”}”(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žhjjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjNxubjM)�”}”(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 hjNxubji)�”}”(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.”…”�”}”(hjyh²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ŸhjNxubeh}”(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”…”�”}”(hj5yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj1yh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M¶ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDyh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1yh²hh³jCyh´M¶ubhÿ)�”}”(hŒsys_rt_sigqueueinfo”h]”j)�”}”(hŒsys_rt_sigqueueinfo”h]”hŒsys_rt_sigqueueinfo”…”�”}”(hjVyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRyubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj1yh²hh³jCyh´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”…”�”}”(hjuyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjryubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jwyŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjXysbŒc.sys_rt_sigqueueinfo”†”asbuh1hhjnyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjnyubj)�”}”(hŒpid”h]”hŒpid”…”�”}”(hj£yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjnyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjjyubj:)�”}”(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”ˆjjuh1j9hjjyubj:)�”}”(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Œ ”…”�”}”(hj$zh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjíyubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj2zh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjíyubj)�”}”(hŒuinfo”h]”hŒuinfo”…”�”}”(hj?zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjjyubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj1yh²hh³jCyh´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj-yh²hh³jCyh´M¶ubah}”(h]”j(yah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jCyh´M¶hj*yh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#send signal information to a signal”h]”hŒ#send signal information to a signal”…”�”}”(hjizh²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¶hjfzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj*yh²hh³jCyh´M¶ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj�zjHj�zjI‰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Ž)�”}”(hj‹zh]”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ºhj…zubj¤)�”}”(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”…”�”}”(hj5{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¹hj2{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j1{h´Mºhj¡zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj…zubeh}”(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”…”�”}”(hjv{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjr{h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjr{h²hh³j„{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þhjr{h²hh³j„{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&]”jjuh1j3hjr{h²hh³j„{h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjn{h²hh³j„{h´Mubah}”(h]”ji{ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j„{h´Mhjk{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&]”uh1j3hjk{h²hh³j„{h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjE|jHjE|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Ž)�”}”(hjO|h]”hŒ Parameters”…”�”}”(hjQ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MhjI|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)�”}”(hjn|h]”hŒold_sigset_t __user * uset”…”�”}”(hjp|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjl|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´Mhjh|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´Mhj„|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjh|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jƒ|h´Mhje|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjI|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´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_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´M!ubj4)�”}”(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”…”�”}”(hj=}h²hh³Nh´Nubah}”(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_sigprocmask”†”asbuh1hhj6}ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6}ubhŒ__user”…”�”}”(hj6}h²hh³Nh´NubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo}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Œnset”h]”hŒnset”…”�”}”(hjŠ}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6}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}]”jY}Œ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´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Œ"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´M!hj~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj½|h²hh³jÖ|h´M!ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj3~jHj3~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Ž)�”}”(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%hj7~ubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``int how`` whether to add, remove, or set signals ”h]”(j¯)�”}”(hŒ ``int how``”h]”jS)�”}”(hj\~h]”hŒint how”…”�”}”(hj^~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjZ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M"hjV~ubjÉ)�”}”(hhh]”jM)�”}”(hŒ&whether to add, remove, or set signals”h]”hŒ&whether to add, remove, or set signals”…”�”}”(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~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´M#hj�~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´M#hj«~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jª~h´M#hjS~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´M$hjÈ~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´M$hjä~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÈ~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jã~h´M$hjS~ubeh}”(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�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´M&hj7~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´M%hj7~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”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjJh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJh²hh³j\h´MTubhÿ)�”}”(hŒsys_rt_sigaction”h]”j)�”}”(hŒsys_rt_sigaction”h]”hŒsys_rt_sigaction”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjJh²hh³j\h´MTubj4)�”}”(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”…”�”}”(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Œsig”h]”hŒsig”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƒubj:)�”}”(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€)�”}”jsjqsbŒ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Œ*”…”�”}”(hj9€h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¼ubj)�”}”(hŒact”h]”hŒact”…”�”}”(hjF€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƒubj:)�”}”(hŒstruct sigaction __user *oact”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Œ sigaction”h]”hŒ sigaction”…”�”}”(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.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Œoact”h]”hŒoact”…”�”}”(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_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”ˆjjuh1j9hjƒubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjJh²hh³j\h´MTubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjFh²hh³j\h´MTubah}”(h]”jAah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j\h´MThjCh²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´MThj7�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjCh²hh³j\h´MTubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjR�jHjR�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Ž)�”}”(hj\�h]”hŒ Parameters”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MXhjV�ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int sig`` signal to be sent ”h]”(j¯)�”}”(hŒ ``int sig``”h]”jS)�”}”(hj{�h]”hŒint sig”…”�”}”(hj}�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjy�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:75: ./kernel/signal.c”h´MUhju�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´MUhj‘�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhju�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j��h´MUhjr�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´MVhj®�ubjÉ)�”}”(hhh]”jM)�”}”(hŒ new sigaction”h]”hŒ new sigaction”…”�”}”(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´MVhjr�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´MWhjç�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´MWhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjç�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‚h´MWhjr�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´MYhj ‚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´MXhj<‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j;‚h´MYhjr�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjV�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”…”�”}”(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´M4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�‚h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|‚h²hh³jŽ‚h´M4ubhÿ)�”}”(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þhj|‚h²hh³jŽ‚h´M4ubj4)�”}”(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Œ ”…”�”}”(hjGƒh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"ƒubj)�”}”(hŒ sigsetsize”h]”hŒ sigsetsize”…”�”}”(hjUƒ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´M4ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjx‚h²hh³jŽ‚h´M4ubah}”(h]”js‚ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŽ‚h´M4hju‚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 ”…”�”}”(hjƒh²hh³Nh´NubjŽ)�”}”(hŒ **unewset**”h]”hŒunewset”…”�”}”(hj‡ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒubhŒ! value until a signal is received”…”�”}”(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´M4hj|ƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hju‚h²hh³jŽ‚h´M4ubeh}”(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´M8hj­ƒ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´M6hj̃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´M6hjèƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj̃ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jçƒh´M6hjɃ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´M8hj„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´M7hj!„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j „h´M8hjɃ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)�”}”(hj_„h]”hŒkthread_create”…”�”}”(hji„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhje„ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhja„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]”jX„ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j|„h´K#hjZ„h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjZ„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Œ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 ”…”�”}”(hjA…h²hh³Nh´NubjŽ)�”}”(hŒ**threadfn\(\)**”h]”hŒ threadfn()”…”�”}”(hjI…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjA…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æ„ubj©)�”}”(hŒ;``namefmt`` printf-style format string for the thread name ”h]”(j¯)�”}”(hŒ ``namefmt``”h]”jS)�”}”(hjo…h]”hŒnamefmt”…”�”}”(hjq…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjm…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&hji…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³j„…h´K&hj……ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhji…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„…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)�”}”(hj4†h]”hŒ kthread_run”…”�”}”(hj>†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:†ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj6†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'hj2†h²hh³jQ†h´K=ubah}”(h]”j-†ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jQ†h´K=hj/†h²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj/†h²hh³jQ†h´K=ubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjj†jHjj†jI‰jJ‰jK‰uh1híh²hhj‰Dh³Nh´NubjM)�”}”(hŒ.``kthread_run (threadfn, data, namefmt, ...)``”h]”jS)�”}”(hjp†h]”hŒ*kthread_run (threadfn, data, namefmt, ...)”…”�”}”(hjr†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjn†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=hj††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)�”}”(hjH‡h]”hŒ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Œ!printf-style name for the thread.”h]”hŒ!printf-style name for the thread.”…”�”}”(hja‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j]‡h´K@hj^‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjB‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j]‡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Œ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Œ ”…”�”}”(hjAˆh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjý‡h²hh³jˆh´KOubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjOˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjý‡h²hh³jˆh´KOubhÿ)�”}”(hŒkthread_run_on_cpu”h]”j)�”}”(hj>ˆh]”hŒkthread_run_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´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”…”�”}”(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”)�”}”(hjsh]”hŒ(”…”�”}”(hj—ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjwˆubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¤ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjwˆubj)�”}”(hŒthreadfn”h]”hŒthreadfn”…”�”}”(hj±ˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwˆubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj¿ˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjwˆubj”)�”}”(hjsh]”hŒ(”…”�”}”(hj̈h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjwˆubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(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”)�”}”(hj—h]”hŒ*”…”�”}”(hjõˆh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjwˆubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwˆubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjwˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjsˆ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Œ ”…”�”}”(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Œdata”h]”hŒdata”…”�”}”(hjQ‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjsˆubj:)�”}”(hŒunsigned int cpu”h]”(jü)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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ü)�”}”(hŒint”h]”hŒint”…”�”}”(hj†‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjf‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjf‰ubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hj¢‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjsˆ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”ˆjjuh1j9hjsˆ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&]”jFjAjGjAŠjHjAŠ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Ž)�”}”(hjKŠh]”hŒ Parameters”…”�”}”(hjMŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KShjEŠ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)�”}”(hjjŠh]”hŒint (*threadfn)(void *data)”…”�”}”(hjlŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjhŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KPhjdŠ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´KPhj€Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjdŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠh´KPhjaŠ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´KQhjaŠ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´KRhjaŠ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.”…”�”}”(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´KShj=‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj!‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j<‹h´KThjaŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjEŠ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³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:78: ./include/linux/kthread.h”h´KVhjEŠ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).”…”�”}”(hjy‹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´KVhjEŠ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)�”}”(hj2Œh]”hŒflags”…”�”}”(hj4Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0Œ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”…”�”}”(hjKŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jGŒh´KÜhjHŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jGŒh´KÜhj)Œubj©)�”}”(hŒ.``namefmt`` printf-style name for the thread. ”h]”(j¯)�”}”(hŒ ``namefmt``”h]”jS)�”}”(hjkŒh]”hŒnamefmt”…”�”}”(hjmŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjiŒ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ÝhjeŒubjÉ)�”}”(hhh]”jM)�”}”(hŒ!printf-style name for the thread.”h]”hŒ!printf-style name for the thread.”…”�”}”(hj„Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€Œh´KÝhj�Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjeŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€Œ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Œ ”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj �h²hh³j1�h´Kðubh)�”}”(hhh]”j)�”}”(hŒkthread_worker”h]”hŒkthread_worker”…”�”}”(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Œkthread_run_worker_on_cpu”sbŒc.kthread_run_worker_on_cpu”†”asbuh1hhj �h²hh³j1�h´KðubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj �h²hh³j1�h´Kðubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj �h²hh³j1�h´Kðubhÿ)�”}”(hŒkthread_run_worker_on_cpu”h]”j)�”}”(hja�h]”hŒkthread_run_worker_on_cpu”…”�”}”(hjƒ�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj �h²hh³j1�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Œ ”…”�”}”(hj1Ž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Œ ”…”�”}”(hjMŽ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”)�”}”(hŒ[”h]”hŒ[”…”�”}”(hjiŽh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj Žubj”)�”}”(hŒ]”h]”hŒ]”…”�”}”(hjwŽ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³j1�h´Kðubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�h²hh³j1�h´Kðubah}”(h]”j�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j1�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³j1�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”…”�”}”(hj4�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j0�h´Kòhj1�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j0�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)�”}”(hjT�h]”hŒconst char namefmt[]”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjR�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ôhjN�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.”…”�”}”(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´Kóhjj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjN�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Ž)�”}”(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Žhj8�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÊ�h²hh³jâ�h´KŽubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjS�jHjS�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Ž)�”}”(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’hjW�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&]”uh1jRhjz�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Khjv�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Èhjv�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‘�h´Khjs�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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´KhjW�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�hjW�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”…”�”}”(hj8‘h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj4‘ubah}”(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Œshould this kthread park now?”h]”hŒshould this kthread park now?”…”�”}”(hjb‘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&]”jFjAjGjz‘jHjz‘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Ž)�”}”(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Œ``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£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´Khj~‘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¡hj~‘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¥hj~‘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”…”�”}”(hj2’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_freezable_should_stop”h]”j)�”}”(hŒkthread_freezable_should_stop”h]”hŒkthread_freezable_should_stop”…”�”}”(hjR’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjN’ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj.’h²hh³j?’h´K»ubj4)�”}”(hŒ(bool *was_frozen)”h]”j:)�”}”(hŒbool *was_frozen”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(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Œ*”…”�”}”(hj‰’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjj’ubj)�”}”(hŒ was_frozen”h]”hŒ was_frozen”…”�”}”(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´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 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³j?’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Ž)�”}”(hjN“h]”hŒ Description”…”�”}”(hjP“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjL“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.”…”�”}”(hjd“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”…”�”}”(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´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Œ1return the function specified on kthread creation”h]”hŒ1return the function 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&]”jFjAjGjx”jHjx”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Ž)�”}”(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³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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´K×hj|”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Öhj|”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Œ ”…”�”}”(hj0•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_data”h]”j)�”}”(hŒ kthread_data”h]”hŒ kthread_data”…”�”}”(hjO•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK•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”…”�”}”(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_data”†”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)�”}”(hŒtask”h]”hŒtask”…”�”}”(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´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”…”�”}”(hj1–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”…”�”}”(hjH–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jD–h´KähjE–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj)–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jD–h´Kä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³Œ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 ”…”�”}”(hj€–h²hh³Nh´NubjŽ)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hjˆ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€–ubhŒE was created. The caller is responsible for ensuring the validity of ”…”�”}”(hj€–h²hh³Nh´NubjŽ)�”}”(hŒ**task**”h]”hŒtask”…”�”}”(hjš–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€–ubhŒ when calling this function.”…”�”}”(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´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”…”�”}”(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.kthread_complete_and_exit”†”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Œcomp”h]”hŒcomp”…”�”}”(hj{—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”…”�”}”(hj4˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j0˜h´M7hj1˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j0˜h´M7hj˜ubj©)�”}”(hŒ=``long code`` The integer value to return to kthread_stop(). ”h]”(j¯)�”}”(hŒ ``long code``”h]”jS)�”}”(hjT˜h]”hŒ long code”…”�”}”(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´M8hjN˜ubjÉ)�”}”(hhh]”jM)�”}”(hŒ.The integer value to return to kthread_stop().”h]”hŒ.The integer value to return to kthread_stop().”…”�”}”(hjm˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ji˜h´M8hjj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjN˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ji˜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”…”�”}”(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Œkthread_create_on_node”sbŒc.kthread_create_on_node”†”asbuh1hhj™h²hh³j#™h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj™h²hh³j#™h´Mubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjd™h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj™h²hh³j#™h´Mubhÿ)�”}”(hŒkthread_create_on_node”h]”j)�”}”(hjS™h]”hŒkthread_create_on_node”…”�”}”(hju™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjq™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”…”�”}”(hj=šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj9šubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9šubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjYšh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj9šubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjfšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjˆ™ubj:)�”}”(hŒint node”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Œ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”…”�”}”(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”)�”}”(hjkŽh]”hŒ[”…”�”}”(hjùšh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj°šubj”)�”}”(hjyŽ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.”…”�”}”(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´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‰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Ž)�”}”(hjj›h]”hŒ Parameters”…”�”}”(hjl›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhjd›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´Mhjƒ›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Èhjƒ›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jž›h´Mhj€›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´Mhj€›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´Mhj€›ubj©)�”}”(hŒ;``const char namefmt[]`` printf-style name for the thread. ”h]”(j¯)�”}”(hŒ``const char namefmt[]``”h]”jS)�”}”(hjFœh]”hŒconst char namefmt[]”…”�”}”(hjHœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjDœ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Œ!printf-style name for the thread.”h]”hŒ!printf-style name for the thread.”…”�”}”(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Œ``...`` 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´Khjyœ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Èhjyœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”œh´Khj€›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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Khjd›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´Mhjd›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³•QNh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Mhjd›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).”…”�”}”(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$hjd›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”…”�”}”(hje�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhja�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MQubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhja�h²hh³js�h´MQubhÿ)�”}”(hŒ kthread_bind”h]”j)�”}”(hŒ kthread_bind”h]”hŒ kthread_bind”…”�”}”(hj†�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚�ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhja�h²hh³js�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&]”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_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Œ ”…”�”}”(hj=žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjžubj)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(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&]”jjuh1j3hja�h²hh³js�h´MQubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj]�h²hh³js�h´MQubah}”(h]”jX�ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³js�h´MQhjZ�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%bind a just-created kthread to a cpu.”h]”hŒ%bind a just-created kthread to a cpu.”…”�”}”(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´MQhjržh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjZ�h²hh³js�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Ž)�”}”(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´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 ”…”�”}”(hjRŸh²hh³Nh´NubjŽ)�”}”(hŒ**cpu**”h]”hŒcpu”…”�”}”(hjZŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRŸubhŒi doesn’t need to be online, and the thread must be stopped (i.e., just returned from kthread_create()).”…”�”}”(hjRŸ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Œ*”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj  ubj)�”}”(hŒthreadfn”h]”hŒthreadfn”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj  ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjQ 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”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj  ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”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”…”�”}”(hj4¡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”…”�”}”(hjM¡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjI¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjI¡ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjh¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjI¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv¡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)�”}”(hŒnamefmt”h]”hŒnamefmt”…”�”}”(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´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Œ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)�”}”(hj5¢h]”hŒ void *data”…”�”}”(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´Mdhj/¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒdata ptr for **threadfn**.”h]”(hŒ data ptr for ”…”�”}”(hjN¢h²hh³Nh´NubjŽ)�”}”(hŒ **threadfn**”h]”hŒthreadfn”…”�”}”(hjV¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjN¢ubhŒ.”…”�”}”(hjN¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJ¢h´MdhjK¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJ¢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)�”}”(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´Mehjz¢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Èhjz¢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ûhj6£h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M—ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6£h²hh³jH£h´M—ubhÿ)�”}”(hŒkthread_unpark”h]”j)�”}”(hŒkthread_unpark”h]”hŒkthread_unpark”…”�”}”(hj[£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW£ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj6£h²hh³jH£h´M—ubj4)�”}”(hŒ(struct task_struct *k)”h]”j:)�”}”(hŒstruct task_struct *k”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(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£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_unpark”†”asbuh1hhjs£ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ£h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjs£ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjs£ubj)�”}”(hjKh]”hŒk”…”�”}”(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&]”jjuh1j3hj6£h²hh³jH£h´M—ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj2£h²hh³jH£h´M—ubah}”(h]”j-£ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jH£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³jH£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”…”�”}”(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´M˜hj4¤ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#thread created by kthread_create().”h]”hŒ#thread created by kthread_create().”…”�”}”(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¤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´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Œ ”…”�”}”(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)�”}”(hjKh]”hŒk”…”�”}”(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´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.”…”�”}”(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_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”…”�”}”(hjm¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhji¦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&]”uh1jPhji¦h²hh³j{¦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þhji¦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_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&]”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Œ*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&]”uh1j3hjb¦h²hh³j{¦h´MÝubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjD§jHjD§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Ž)�”}”(hjN§h]”hŒ Parameters”…”�”}”(hjP§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjL§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MáhjH§ubj¤)�”}”(hhh]”j©)�”}”(hŒ>``struct task_struct *k`` thread created by kthread_create(). ”h]”(j¯)�”}”(hŒ``struct task_struct *k``”h]”jS)�”}”(hjm§h]”hŒstruct task_struct *k”…”�”}”(hjo§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjk§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MÞhjg§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Èhjg§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‚§h´MÞhjd§ubah}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MàhjH§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ßhjH§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ähjH§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çhjH§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Œ ”…”�”}”(hj>¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+¨h²hh³j=¨h´Mubhÿ)�”}”(hŒkthread_stop_put”h]”j)�”}”(hŒkthread_stop_put”h]”hŒkthread_stop_put”…”�”}”(hjP¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjL¨ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj+¨h²hh³j=¨h´Mubj4)�”}”(hŒ(struct task_struct *k)”h]”j:)�”}”(hŒstruct task_struct *k”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Œ 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€)�”}”jsjR¨sbŒc.kthread_stop_put”†”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)�”}”(hjKh]”hŒk”…”�”}”(hjŨh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjd¨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Œ%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³j=¨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”…”�”}”(hj1©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().”…”�”}”(hjH©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jD©h´MhjE©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj)©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jD©h´Mhj&©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³Œ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().”…”�”}”(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 ©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Œ*”…”�”}”(hj8ªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjè©ubj)�”}”(hj h]”hŒp”…”�”}”(hjEª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”…”�”}”(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ªubj?)�”}”(hjBh]”hŒstruct”…”�”}”(hjxªh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjYªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…ªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjYª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”†”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Œmask”h]”hŒmask”…”�”}”(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Œ%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”…”�”}”(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´M=hj4«ubjÉ)�”}”(hhh]”jM)�”}”(hŒ#thread created by kthread_create().”h]”hŒ#thread created by kthread_create().”…”�”}”(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Œ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)�”}”(hjs«h]”hŒconst struct cpumask *mask”…”�”}”(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´M?hjm«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È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³Œ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”…”�”}”(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Œ(void *worker_ptr)”h]”j:)�”}”(hŒvoid *worker_ptr”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(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Œ*”…”�”}”(hjn¬h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjN¬ubj)�”}”(hŒ worker_ptr”h]”hŒ worker_ptr”…”�”}”(hj{¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjN¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjJ¬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.”…”�”}”(hj7­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.”…”�”}”(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´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().”…”�”}”(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_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”…”�”}”(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´M5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€­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”†”asbuh1hhj€­h²hh³j‘­h´M5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj€­h²hh³j‘­h´M5ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÒ­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€­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þhj€­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”…”�”}”(hj6®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”…”�”}”(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)�”}”(hŒnode”h]”hŒnode”…”�”}”(hjk®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK®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”)�”}”(hjkŽh]”hŒ[”…”�”}”(hjÉ®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj€®ubj”)�”}”(hjyŽ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”)�”}”(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´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj|­h²hh³j‘­h´M5ubah}”(h]”jw­ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‘­h´M5hjy­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&]”uh1j3hjy­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Ž)�”}”(hj9¯h]”hŒ Parameters”…”�”}”(hj;¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M9hj3¯ubj¤)�”}”(hhh]”(j©)�”}”(hŒJ``unsigned int flags`` flags modifying the default behavior of the worker ”h]”(j¯)�”}”(hŒ``unsigned int flags``”h]”jS)�”}”(hjX¯h]”hŒunsigned int flags”…”�”}”(hjZ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjV¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M6hjR¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒ2flags modifying the default behavior of the worker”h]”hŒ2flags modifying the default behavior of the worker”…”�”}”(hjq¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jm¯h´M6hjn¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjR¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jm¯h´M6hjO¯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´M7hjO¯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´M8hjO¯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´KhjO¯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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´Khj3¯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.”…”�”}”(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´M9hj3¯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”…”�”}”(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´MMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°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”†”asbuh1hhj°h²hh³j�°h´MMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj°h²hh³j�°h´MMubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjѰh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj°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þhj°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”…”�”}”(hj2±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”…”�”}”(hjN±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”…”�”}”(hjj±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”…”�”}”(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”)�”}”(hjkŽh]”hŒ[”…”�”}”(hjȱh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj±ubj”)�”}”(hjyŽ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´MMubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj{°h²hh³j�°h´MMubah}”(h]”jv°ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�°h´MMhjx°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&]”uh1j3hjx°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)�”}”(hj?²h]”hŒint cpu”…”�”}”(hjA²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´MOhj9²ubjÉ)�”}”(hhh]”jM)�”}”(hŒ CPU number”h]”hŒ CPU number”…”�”}”(hjX²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jT²h´MOhjU²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jT²h´MOhj6²ubj©)�”}”(hŒJ``unsigned int flags`` flags modifying the default behavior of the worker ”h]”(j¯)�”}”(hŒ``unsigned int flags``”h]”jS)�”}”(hjx²h]”hŒunsigned int flags”…”�”}”(hjz²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjv²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MPhjr²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Èhjr²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�²h´MPhj6²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´MQhjDzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj«²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jƲh´MRhj6²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.”…”�”}”(hj3³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:”…”�”}”(hjB³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.”…”�”}”(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´MbhjX³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjU³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.”…”�”}”(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´Mdhjq³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jƒhjU³ubeh}”(h]”h ]”h"]”h$]”h&]”j-Cj.Cuh1j Ch³jj³h´MbhjQ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jj³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Œ ”…”�”}”(hj5´h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$´ubh)�”}”(hhh]”j)�”}”(hŒkthread_worker”h]”hŒkthread_worker”…”�”}”(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.kthread_queue_work”†”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)�”}”(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_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}]”jb´Œ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&]”jFjAjGj3µjHj3µ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Ž)�”}”(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¨hj7µ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&]”uh1jRhjZµubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¥hjVµubjÉ)�”}”(hhh]”jM)�”}”(hŒtarget kthread_worker”h]”hŒtarget kthread_worker”…”�”}”(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µ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¦hjSµubeh}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¨hj7µ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”…”�”}”(hj6¶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”…”�”}”(hjH¶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§hj7µ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.”…”�”}”(hja¶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«hj7µ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]”jƒ¶ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jž¶h´MÀhj…¶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.”…”�”}”(hjO·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À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‰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Ž)�”}”(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´MÄhjk·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£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´MÄhjk·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Ãhjk·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”…”�”}”(hj0¸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”…”�”}”(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Œkthread_worker”h]”hŒkthread_worker”…”�”}”(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€)�”}”jsj2¸sbŒc.kthread_queue_delayed_work”†”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)�”}”(hŒworker”h]”hŒworker”…”�”}”(hj¥¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjH¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjD¸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}]”j†¸Œ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”ˆjjuh1j9hjD¸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”…”�”}”(hjJ¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj*¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*¹ubj)�”}”(hŒdelay”h]”hŒdelay”…”�”}”(hjf¹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´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)�”}”(hjCºh]”hŒunsigned long delay”…”�”}”(hjEºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAº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Œ(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³jXºh´MhjYºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jXº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³Œ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”…”�”}”(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´M1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj<»h²hh³jN»h´M1ubhÿ)�”}”(hŒkthread_flush_work”h]”j)�”}”(hŒkthread_flush_work”h]”hŒkthread_flush_work”…”�”}”(hja»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]»ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj<»h²hh³jN»h´M1ubj4)�”}”(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>hjy»ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjy»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€)�”}”jsjc»sbŒc.kthread_flush_work”†”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Œwork”h]”hŒwork”…”�”}”(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´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj8»h²hh³jN»h´M1ubah}”(h]”j3»ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jN»h´M1hj5»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&]”uh1j3hj5»h²hh³jN»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)�”}”(hjA¼h]”hŒstruct kthread_work *work”…”�”}”(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´M2hj;¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒ work to flush”h]”hŒ work to flush”…”�”}”(hjZ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jV¼h´M2hjW¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj;¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jV¼h´M2hj8¼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³Œ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Œ ”…”�”}”(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Œworker”h]”hŒworker”…”�”}”(hjh½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”…”�”}”(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}]”jI½Œc.kthread_mod_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”ˆ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”…”�”}”(hjS¾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�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‰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Ž)�”}”(hju¾h]”hŒ Parameters”…”�”}”(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´M‘hjo¾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£hjo¾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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M’hjo¾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 ”…”�”}”(hjW¿h²hh³Nh´NubjŽ)�”}”(hŒ **dwork**”h]”hŒdwork”…”�”}”(hj_¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW¿ubhŒH is idle, equivalent to kthread_queue_delayed_work(). Otherwise, modify ”…”�”}”(hjW¿h²hh³Nh´NubjŽ)�”}”(hŒ **dwork**”h]”hŒdwork”…”�”}”(hjq¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW¿ubhŒ$’s timer so that it expires after ”…”�”}”(hjW¿h²hh³Nh´NubjŽ)�”}”(hŒ **delay**”h]”hŒdelay”…”�”}”(hjƒ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW¿ubhŒ. If ”…”�”}”(hjW¿h²hh³Nh´NubjŽ)�”}”(hŒ **delay**”h]”hŒdelay”…”�”}”(hj•¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW¿ubhŒ is zero, ”…”�”}”(hjW¿h²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hj§¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW¿ubhŒ( is guaranteed to be queued immediately.”…”�”}”(hjW¿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‘hjo¾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–hjo¾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�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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M¡hjo¾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”…”�”}”(hj0À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–hjo¾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”…”�”}”(hjiÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjeÀh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MøubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjeÀh²hh³jvÀ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&]”uh1jhj…Àubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjeÀh²hh³jvÀ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&]”jjuh1j3hjeÀh²hh³jvÀh´Møubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjaÀ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Œ/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&]”uh1j3hj^Àh²hh³jvÀ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_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Ž)�”}”(hjJÁh]”hŒ Parameters”…”�”}”(hjLÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MühjDÁubj¤)�”}”(hhh]”j©)�”}”(hŒ9``struct kthread_work *work`` the kthread work to cancel ”h]”(j¯)�”}”(hŒ``struct kthread_work *work``”h]”jS)�”}”(hjiÁh]”hŒstruct kthread_work *work”…”�”}”(hjkÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MùhjcÁubjÉ)�”}”(hhh]”jM)�”}”(hŒthe kthread work to cancel”h]”hŒthe kthread work to cancel”…”�”}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MûhjDÁ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úhjDÁ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þhjDÁ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´MhjDÁ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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MhjDÁubjM)�”}”(hŒ6``true`` if **work** was pending, ``false`` otherwise.”h]”(jS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj\Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjXÂubhŒ if ”…”�”}”(hjXÂh²hh³Nh´NubjŽ)�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hjnÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXÂubhŒ was pending, ”…”�”}”(hjXÂh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj€Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjXÂubhŒ otherwise.”…”�”}”(hjXÂ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´MhjDÁ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Œ ”…”�”}”(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Œdwork”h]”hŒdwork”…”�”}”(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´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.”…”�”}”(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´MhjuÃ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”…”�”}”(hj5Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1ÄubhŒ if ”…”�”}”(hj1Äh²hh³Nh´NubjŽ)�”}”(hŒ **dwork**”h]”hŒdwork”…”�”}”(hjGÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ÄubhŒ was pending, ”…”�”}”(hj1Äh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjYÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1ÄubhŒ otherwise.”…”�”}”(hj1Ä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]”j…Ä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”…”�”}”(hjRÅ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´MhjOÅ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²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Ž)�”}”(hjtÅh]”hŒ Parameters”…”�”}”(hjvÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M!hjnÅ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£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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´M hjnÅ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´MhjnÅ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Œ ”…”�”}”(hj4Æh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!Æh²hh³j3Æh´M0ubhÿ)�”}”(hŒkthread_destroy_worker”h]”j)�”}”(hŒkthread_destroy_worker”h]”hŒkthread_destroy_worker”…”�”}”(hjFÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBÆubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj!Æh²hh³j3Æh´M0ubj4)�”}”(hŒ(struct kthread_worker *worker)”h]”j:)�”}”(hŒstruct kthread_worker *worker”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Œ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€)�”}”jsjHÆsbŒc.kthread_destroy_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”ˆjjuh1j9hjZÆubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj!Æh²hh³j3Æh´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÆh²hh³j3Æh´M0ubah}”(h]”jÆah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j3Æ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&]”uh1j3hjÆh²hh³j3Æ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”…”�”}”(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Ç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³Œ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 ”…”�”}”(hjwÇh²hh³Nh´NubjŽ)�”}”(hŒ **worker**”h]”hŒworker”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwÇ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.”…”�”}”(hjwÇ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Œ ”…”�”}”(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)�”}”(hŒmm”h]”hŒmm”…”�”}”(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´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´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‰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Œ ”…”�”}”(hj1Éh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÉh²hh³j0Éh´Mzubhÿ)�”}”(hŒkthread_unuse_mm”h]”j)�”}”(hŒkthread_unuse_mm”h]”hŒkthread_unuse_mm”…”�”}”(hjCÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?Éubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÉh²hh³j0Éh´Mzubj4)�”}”(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Œ ”…”�”}”(hjlÉ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&]”uh1jhjzÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jÉŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjEÉsbŒc.kthread_unuse_mm”†”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Œmm”h]”hŒmm”…”�”}”(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´Mzubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÉh²hh³j0Éh´Mzubah}”(h]”jÉah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j0É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³j0É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”…”�”}”(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{hj9Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j8Ê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”…”�”}”(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Œ ”…”�”}”(hjŒÊh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyÊ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þhjyÊ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&]”jjuh1j3hjyÊh²hh³j‹Êh´Mœubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjuÊh²hh³j‹Êh´Mœubah}”(h]”jpÊah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‹Êh´MœhjrÊh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"associate blkcg to current kthread”h]”hŒ"associate blkcg to 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´Mœhj:Ëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjrÊh²hh³j‹Êh´Mœubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjUËjHjUË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Ž)�”}”(hj_Ëh]”hŒ Parameters”…”�”}”(hjaË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 hjYËubj¤)�”}”(hhh]”j©)�”}”(hŒ4``struct cgroup_subsys_state *css`` the cgroup info ”h]”(j¯)�”}”(hŒ#``struct cgroup_subsys_state *css``”h]”jS)�”}”(hj~Ëh]”hŒstruct cgroup_subsys_state *css”…”�”}”(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�hjxË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ÈhjxËubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j“Ëh´M�hjuËubah}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/driver-api/basics:81: ./kernel/kthread.c”h´MŸhjYË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žhjYË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”…”�”}”(hj8Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4Ì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”…”�”}”(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.refcount_set”†”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)�”}”(hŒr”h]”hŒr”…”�”}”(hj’Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjLÌ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”ˆjjuh1j9hjLÌ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)�”}”(hj1Íh]”hŒ refcount_t *r”…”�”}”(hj3Í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”…”�”}”(hjJÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jFÍh´K�hjGÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj+Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jFÍh´K�hj(Íubj©)�”}”(hŒ1``int n`` value to which the refcount will be set”h]”(j¯)�”}”(hŒ ``int n``”h]”jS)�”}”(hjjÍh]”hŒint n”…”�”}”(hjlÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjhÍ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ƒhjdÍ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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´K‚hj€Íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjdÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÍ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Œ*”…”�”}”(hj2Î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ùÍubj:)�”}”(hŒint n”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjWÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjSÎubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÎh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjSÎubj)�”}”(hjh]”hŒn”…”�”}”(hjsÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSÎ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Ž)�”}”(hjQÏh]”hŒ Description”…”�”}”(hjSÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOÏ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.”…”�”}”(hjgÏ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.”…”�”}”(hjvÏ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.”…”�”}”(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_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Œ ”…”�”}”(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)�”}”(hj”Ìh]”hŒr”…”�”}”(hjfÐ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”…”�”}”(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´KÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^Ñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjLÑh²hh³j]Ñh´KÁubhÿ)�”}”(hŒrefcount_add_not_zero”h]”j)�”}”(hŒrefcount_add_not_zero”h]”hŒrefcount_add_not_zero”…”�”}”(hjpÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlÑubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjLÑh²hh³j]Ñ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”ˆ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€)�”}”jsjrÑ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”ˆjjuh1j9hj„Ñubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjLÑh²hh³j]Ñh´KÁubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjHÑh²hh³j]Ñh´KÁubah}”(h]”jCÑah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j]Ñh´KÁhjEÑ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&]”uh1j3hjEÑ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`` 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Ž)�”}”(hjJÒh]”hŒ Parameters”…”�”}”(hjLÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÅhjDÒubj¤)�”}”(hhh]”(j©)�”}”(hŒ+``int i`` the value to add to the refcount ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjiÒh]”hŒint i”…”�”}”(hjkÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgÒ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ÂhjcÒ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´KÂhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~Òh´KÂ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´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`Ò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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÅhjDÒ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ÄhjDÒ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ÆhjDÒ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Ê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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KÏhjDÒubjM)�”}”(hŒ1false if the passed refcount is 0, true otherwise”h]”hŒ1false if the passed refcount is 0, true otherwise”…”�”}”(hj8Ó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ÐhjDÒ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”…”�”}”(hjgÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjcÓh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´KþubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcÓh²hh³jtÓ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&]”uh1jhjƒÓubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjcÓh²hh³jtÓ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&]”jjuh1j3hjcÓh²hh³jtÓh´Kþubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj_Óh²hh³jtÓh´Kþubah}”(h]”jZÓah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jtÓh´Kþhj\Ó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”…”�”}”(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³jtÓh´Kþubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjVÔjHjVÔ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Ž)�”}”(hj`Ôh]”hŒ Parameters”…”�”}”(hjbÔ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´MhjZÔ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´MhjyÔ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ÈhjyÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”Ôh´MhjvÔ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´MhjvÔ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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MhjZÔ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´MhjZÔ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´MhjZÔ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´MhjZÔ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.”…”�”}”(hj6Õ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 hjZÔ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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´MhjZÔ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´MhjZÔ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'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 value to a refcount”h]”hŒadd a value to a refcount”…”�”}”(hjdÖ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'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** ``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Ž)�”}”(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Œ+``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£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Œ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*hj€Ö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´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_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.”…”�”}”(hjM×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´M0hj€Ö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”…”�”}”(hj|×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjx×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&]”uh1jPhjx×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þhjx×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&]”jjuh1j3hjx×h²hh³j‰×h´MAubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjt×h²hh³j‰×h´MAubah}”(h]”jo×ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‰×h´MAhjq×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&]”uh1j3hjq×h²hh³j‰×h´MAubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj7ØjHj7Ø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Ž)�”}”(hjAØh]”hŒ Parameters”…”�”}”(hjCØ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´MEhj;Ø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”…”�”}”(hjbØ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´MBhjZØubjÉ)�”}”(hhh]”jM)�”}”(hŒthe refcount to increment”h]”hŒthe refcount to increment”…”�”}”(hjyØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³juØh´MBhjvØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjZØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³juØh´MBhjWØ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”…”�”}”(hj6Ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2Ù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”…”�”}”(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€)�”}”jsj8ÙsbŒc.refcount_inc_not_zero_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)�”}”(hj”Ìh]”hŒr”…”�”}”(hj�Ùh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjJÙ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Ž)�”}”(hj5Úh]”hŒ Description”…”�”}”(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´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.”…”�”}”(hjKÚ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.”…”�”}”(hjZÚ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.”…”�”}”(hjiÚ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Ž)�”}”(hjzÚh]”hŒReturn”…”�”}”(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´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”…”�”}”(hjcÛ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´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„)�”}”(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Ž)�”}”(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´MvhjÛ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£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´MuhjÛ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´MthjÛ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´MvhjÛ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´MyhjÛ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”…”�”}”(hjBÜ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Œ ”…”�”}”(hjPÜh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>Üh²hh³jOÜh´M–ubhÿ)�”}”(hŒrefcount_sub_and_test”h]”j)�”}”(hŒrefcount_sub_and_test”h]”hŒrefcount_sub_and_test”…”�”}”(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, 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û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Œ 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€)�”}”jsjdÜ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”ˆ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Œ,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&]”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„)�”}”(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”…”�”}”(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´Mšhj5Ýubj¤)�”}”(hhh]”(j©)�”}”(hŒ/``int i`` amount to subtract from the refcount ”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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M—hjTÝubjÉ)�”}”(hhh]”jM)�”}”(hŒ$amount to subtract from the refcount”h]”hŒ$amount to subtract from the refcount”…”�”}”(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Œ``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˜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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´Mšhj5Ý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™hj5Ý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�hj5Ý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¡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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M¦hj5Ý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§hj5Ý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”…”�”}”(hjXÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjTÞh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:87: ./include/linux/refcount.h”h´M´ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfÞh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjTÞh²hh³jeÞh´M´ubhÿ)�”}”(hŒrefcount_dec_and_test”h]”j)�”}”(hŒrefcount_dec_and_test”h]”hŒrefcount_dec_and_test”…”�”}”(hjxÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtÞubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjTÞh²hh³jeÞ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€)�”}”jsjzÞ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&]”jjuh1j3hjTÞh²hh³jeÞh´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjPÞh²hh³jeÞh´M´ubah}”(h]”jKÞah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jeÞh´M´hjMÞ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&]”uh1j3hjMÞh²hh³jeÞ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)�”}”(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µhj6ßubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(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³Œ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”…”�”}”(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.refcount_dec”†”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)�”}”(hj”Ìh]”hŒr”…”�”}”(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´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.”…”�”}”(hj7á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”…”�”}”(hjfáh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjbáh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K(ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtáh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjbáh²hh³jsáh´K(ubhÿ)�”}”(hŒrefcount_dec_if_one”h]”j)�”}”(hŒrefcount_dec_if_one”h]”hŒrefcount_dec_if_one”…”�”}”(hj†áh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚áubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjbáh²hh³jsáh´K(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_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&]”jjuh1j3hjbáh²hh³jsáh´K(ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj^áh²hh³jsáh´K(ubah}”(h]”jYáah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jsáh´K(hj[á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´K(hjâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj[áh²hh³jsá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 **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´K,hj%âubj¤)�”}”(hhh]”j©)�”}”(hŒ``refcount_t *r`` the refcount ”h]”(j¯)�”}”(hŒ``refcount_t *r``”h]”jS)�”}”(hjJâh]”hŒ refcount_t *r”…”�”}”(hjLâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjHâubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´K)hjDâubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hjcâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j_âh´K)hj`âubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjDâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j_âh´K)hjAâ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´K+hj%â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´K*hj%â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´K-hj%â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´K0hj%âubjM)�”}”(hŒ **Return**”h]”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´K4hj%â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´K5hj%â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´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_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´K@ubj4)�”}”(hŒ(refcount_t *r)”h]”j:)�”}”(hŒ refcount_t *r”h]”(h)�”}”(hhh]”j)�”}”(hŒ refcount_t”h]”hŒ refcount_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}]”j€)�”}”jsj1ãsbŒc.refcount_dec_not_one”†”asbuh1hhjGãubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnã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)�”}”(hj”Ìh]”hŒr”…”�”}”(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´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Œ#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´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 **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´KDhjÎã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´KAhjíãubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(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£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³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:90: ./lib/refcount.c”h´KChjÎã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.”…”�”}”(hjDä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´KBhjÎãubjM)�”}”(hŒhjZåubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkåh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZåubh)�”}”(hhh]”j)�”}”(hŒmutex”h]”hŒmutex”…”�”}”(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.refcount_dec_and_mutex_lock”†”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)�”}”(hŒlock”h]”hŒlock”…”�”}”(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´Kbubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÄäh²hh³jÙäh´Kbubah}”(h]”j¿äah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÙäh´KbhjÁä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´KbhjÜåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÁäh²hh³jÙäh´Kbubeh}”(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´Kfhjûå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´KdhjæubjÉ)�”}”(hhh]”jM)�”}”(hŒ the refcount”h]”hŒ the refcount”…”�”}”(hj9æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j5æh´Kdhj6æubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j5æh´Kdhjæubj©)�”}”(hŒ.``struct mutex *lock`` the mutex to be locked ”h]”(j¯)�”}”(hŒ``struct mutex *lock``”h]”jS)�”}”(hjYæh]”hŒstruct mutex *lock”…”�”}”(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:90: ./lib/refcount.c”h´KehjSæubjÉ)�”}”(hhh]”jM)�”}”(hŒthe mutex to be locked”h]”hŒthe mutex to be locked”…”�”}”(hjræh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jnæh´Kehjoæubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjSæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jnæh´Kehjæ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´Kghjûå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´Kfhjûå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´KihjûåubjM)�”}”(hŒ **Return**”h]”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´Kmhjûå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´Knhjûå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Œë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”…”�”}”(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¤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³Œ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Œ ”…”�”}”(hj1ìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ìubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(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.percpu_ref_kill”†”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)�”}”(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´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.”…”�”}”(hj9í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 ”…”�”}”(hjHíh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjPíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHíubhŒW into atomic mode before gathering up the percpu counters and dropping the initial ref.”…”�”}”(hjHí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.”…”�”}”(hjií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”a•h"]”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”…”�”}”(hjGîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjCîubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCîubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjcîh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjCîubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqîh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCîubj)�”}”(hŒnr”h]”hŒnr”…”�”}”(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´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”…”�”}”(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áî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ŒAnalogous to atomic_long_add().”h]”hŒAnalogous to atomic_long_add().”…”�”}”(hjtï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_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Œ ”…”�”}”(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Œref”h]”hŒref”…”�”}”(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Œ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 **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”…”�”}”(hjfñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjbñh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´KâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjbñh²hh³jsñh´Kâubhÿ)�”}”(hŒpercpu_ref_tryget_many”h]”j)�”}”(hŒpercpu_ref_tryget_many”h]”hŒpercpu_ref_tryget_many”…”�”}”(hj†ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚ñubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjbñh²hh³jsñ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”…”�”}”(hj0ò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”…”�”}”(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&]”jjuh1j3hjbñh²hh³jsñh´Kâubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj^ñh²hh³jsñh´Kâubah}”(h]”jYñah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jsñh´Kâhj[ñh²hubj4)�”}”(hhh]”jM)�”}”(hŒ"try to increment a percpu refcount”h]”hŒ"try to increment a percpu refcount”…”�”}”(hjvò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âhjsòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj[ñh²hh³jsñ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 ”…”�”}”(hjAóh²hh³Nh´NubjŽ)�”}”(hŒ**nr**”h]”hŒnr”…”�”}”(hjIóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAóubhŒ0 unless its count already reached zero. Returns ”…”�”}”(hjAóh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj[óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAóubhŒ on success; ”…”�”}”(hjAóh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjmóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAóubhŒ on failure.”…”�”}”(hjAó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 ”…”�”}”(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 (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Œ ”…”�”}”(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ûó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”…”�”}”(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&]”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”…”�”}”(hj2õ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 ”…”�”}”(hjKõh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjSõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKõubhŒ is between init and exit.”…”�”}”(hjKõ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'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Œ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.”…”�”}”(hjKö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´MhjHöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�õh²hh³j™õh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjcöjHjcö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Ž)�”}”(hjmöh]”hŒ Parameters”…”�”}”(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´Mhjgö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£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³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/basics:93: ./include/linux/percpu-refcount.h”h´Mhjgö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´Mhjgö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”…”�”}”(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”…”�”}”(hjZ÷h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjV÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjV÷ubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(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.percpu_ref_tryget_live”†”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)�”}”(hŒref”h]”hŒref”…”�”}”(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³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”…”�”}”(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ø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³Œ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 ”…”�”}”(hjoøh²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjwøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoøubhŒ on success; ”…”�”}”(hjoøh²hh³Nh´NubjS)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj‰øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoøubhŒ on failure.”…”�”}”(hjoø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Œ ”…”�”}”(hj<ùh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+ù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€)�”}”jsjùsbŒc.percpu_ref_put_many”†”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Œ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)�”}”(hjDúh]”hŒstruct percpu_ref *ref”…”�”}”(hjFúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBú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 put”h]”hŒpercpu_ref to put”…”�”}”(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Œ1``unsigned long nr`` number of references to put ”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´M@hjwú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È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³Œ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”…”�”}”(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Œ(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>hjWûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjWûubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(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€)�”}”jsjAûsbŒc.percpu_ref_put”†”asbuh1hhjWûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™ûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjWûubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj§ûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjWûubj)�”}”(hŒref”h]”hŒref”…”�”}”(hj´ûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjSû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”…”�”}”(hj8üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4üh´MWhj5üubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4üh´MWhjü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³Œ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())”…”�”}”(hjpü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 ”…”�”}”(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´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Œ*”…”�”}”(hjHýh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjøüubj)�”}”(hŒref”h]”hŒref”…”�”}”(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¼ü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”…”�”}”(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´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„)�”}”(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 ”…”�”}”(hjDþh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjLþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDþubhŒ` is between init and exit and the caller is responsible for synchronizing against state changes.”…”�”}”(hjDþ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”…”�”}”(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´K1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”þh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�þ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þhj�þ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”…”�”}”(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üþŒc.percpu_ref_init”†”asbuh1hhj0ÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0ÿubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjcÿh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj0ÿubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hjpÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj0ÿ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Œ 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&]”jjuh1j3hj�þh²hh³j“þh´K1ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj}þh²hh³j“þh´K1ubah}”(h]”jxþah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j“þh´K1hjzþh²hubj4)�”}”(hhh]”jM)�”}”(hŒinitialize a percpu refcount”h]”hŒinitialize a percpu refcount”…”�”}”(hj3h²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´K1hj0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjzþh²hh³j“þh´K1ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjKjHjKjI‰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Ž)�”}”(hjUh]”hŒ Parameters”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K5hjOubj¤)�”}”(hhh]”(j©)�”}”(hŒ4``struct percpu_ref *ref`` percpu_ref to initialize ”h]”(j¯)�”}”(hŒ``struct percpu_ref *ref``”h]”jS)�”}”(hjth]”hŒstruct percpu_ref *ref”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´K2hjnubjÉ)�”}”(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Èhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‰h´K2hjkubj©)�”}”(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´K3hjkubj©)�”}”(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´K4hjkubj©)�”}”(hŒ%``gfp_t gfp`` allocation mask to use ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjh]”hŒ gfp_t gfp”…”�”}”(hj!h²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´K5hjubjÉ)�”}”(hhh]”jM)�”}”(hŒallocation mask to use”h]”hŒallocation mask to use”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4h´K5hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4h´K5hjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjOubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjZh]”hŒ Description”…”�”}”(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:94: ./lib/percpu-refcount.c”h´K7hjOubjM)�”}”(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 ”…”�”}”(hjph²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpubhŒ. ”…”�”}”(hjph²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpubhŒ7 starts out in percpu mode with a refcount of 1 unless ”…”�”}”(hjph²hh³Nh´NubjŽ)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpubhŒÞ 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.”…”�”}”(hjph²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´K6hjOubjM)�”}”(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;hjOubeh}”(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Œ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòh²hh³jh´Kyubhÿ)�”}”(hŒpercpu_ref_exit”h]”j)�”}”(hŒpercpu_ref_exit”h]”hŒpercpu_ref_exit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjòh²hh³jh´Kyubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj3h²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”…”�”}”(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€)�”}”jsjsbŒc.percpu_ref_exit”†”asbuh1hhj/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²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Œ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³jh´Kyubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjîh²hh³jh´Kyubah}”(h]”jéah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´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³jh´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³j h´Kzhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j h´Kzhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÒubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj2h]”hŒ Description”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ubah}”(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 ”…”�”}”(hjHh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHubhŒ/. The caller is responsible for ensuring that ”…”�”}”(hjHh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHubhŒT is no longer in active use. The usual places to invoke this function from are the ”…”�”}”(hjHh²hh³Nh´NubjŽ)�”}”(hŒ**ref->release\(\)**”h]”hŒref->release()”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHubhŒ‰ callback or in init failure path where percpu_ref_init() succeeded but other parts of the initialization of the embedding object failed.”…”�”}”(hjHh²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”…”�”}”(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_atomic”†”asbuh1hhjæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjæubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjæubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjCh²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”…”�”}”(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.percpu_ref_switch_to_atomic”†”asbuh1hhjXubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjXubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjXubj)�”}”(hŒconfirm_switch”h]”hŒconfirm_switch”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXubeh}”(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)�”}”(hjh]”hŒstruct percpu_ref *ref”…”�”}”(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´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³jh´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´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)�”}”(hj<h]”hŒ!percpu_ref_func_t *confirm_switch”…”�”}”(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!hj6ubjÉ)�”}”(hhh]”jM)�”}”(hŒoptional confirmation callback”h]”hŒoptional confirmation callback”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQh´M!hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQh´M!hjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÞubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjwh]”hŒ Description”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuubah}”(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”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj0h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:94: ./lib/percpu-refcount.c”h´MAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0h²hh³jBh´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”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0h²hh³jBh´MAubj4)�”}”(hŒ(struct percpu_ref *ref)”h]”j:)�”}”(hŒstruct percpu_ref *ref”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmubh)�”}”(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€)�”}”jsjWsbŒ"c.percpu_ref_switch_to_atomic_sync”†”asbuh1hhjmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjmubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjiubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj0h²hh³jBh´MAubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,h²hh³jBh´MAubah}”(h]”j'ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jBh´MAhj)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´MAhjñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj)h²hh³jBh´MAubeh}”(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 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Ž)�”}”(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: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)�”}”(hj5h]”hŒstruct percpu_ref *ref”…”�”}”(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: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”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJh´MBhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJh´MBhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjph]”hŒ Description”…”�”}”(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: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.”…”�”}”(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´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&]”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_percpu”†”asbuh1hhjîubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”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”…”�”}”(hjKh²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”…”�”}”(hjuh²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´MPhjrh²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”…”�”}”(hj0 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 ”…”�”}”(hjI h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI ubhŒL is in the process of switching to atomic mode. If the caller ensures that ”…”�”}”(hjI h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI ubhŒa is not in the process of switching to atomic mode, this function can be called from any context.”…”�”}”(hjI 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”…”�”}”(hj2 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”…”�”}”(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.percpu_ref_kill_and_confirm”†”asbuh1hhjG ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjG ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjG ubj)�”}”(hŒ confirm_kill”h]”hŒ confirm_kill”…”�”}”(hj‡ 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´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”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@ h´MqhjA 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£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³Œ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 ”…”�”}”(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 not NULL. ”…”�”}”(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Œ,, which may not block, will be called after ”…”�”}”(hj| h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj| 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.”…”�”}”(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´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Œ ”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj h²hh³j0 h´M“ubhÿ)�”}”(hŒpercpu_ref_is_zero”h]”j)�”}”(hŒpercpu_ref_is_zero”h]”hŒpercpu_ref_is_zero”…”�”}”(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Œ(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Œ ”…”�”}”(hjl 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&]”uh1jhjz ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjE sbŒc.percpu_ref_is_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)�”}”(hŒref”h]”hŒref”…”�”}”(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Œ+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³j0 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”…”�”}”(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 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Œ)Returns ``true`` if **ref** reached zero.”h]”(hŒReturns ”…”�”}”(hjt h²hh³Nh´NubjS)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjt ubhŒ if ”…”�”}”(hjt h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt ubhŒ reached zero.”…”�”}”(hjt 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&]”uh1jhjubah}”(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”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj!ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!ubh)�”}”(hhh]”j)�”}”(hŒ percpu_ref”h]”hŒ percpu_ref”…”�”}”(hjCh²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.percpu_ref_reinit”†”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)�”}”(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´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”…”�”}”(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³Œ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”…”�”}”(hjBh²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”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj:ubhŒ. ”…”�”}”(hj:h²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hjfh²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&]”uh1jhjubah}”(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Œ*”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjùubj)�”}”(hŒref”h]”hŒref”…”�”}”(hjVh²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”…”�”}”(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 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 ”…”�”}”(hjEh²hh³Nh´NubjŽ)�”}”(hŒ**ref->release\(\)**”h]”hŒref->release()”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEubhŒ frees ”…”�”}”(hjEh²hh³Nh´NubjŽ)�”}”(hŒ**ref**”h]”hŒref”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEubhŒ6 then the caller is responsible for guaranteeing that ”…”�”}”(hjEh²hh³Nh´NubjŽ)�”}”(hŒ**ref->release\(\)**”h]”hŒref->release()”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEubhŒ8 does not get called while this function is in progress.”…”�”}”(hjEh²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”…”�”}”(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€)�”}”jsjsbŒ c.atomic_read”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hŒv”h]”hŒv”…”�”}”(hjzh²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´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Ž)�”}”(hj h]”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´KhjÀubjM)�”}”(hŒ:Atomically loads the value of **v** with relaxed ordering.”h]”(hŒAtomically loads the value of ”…”�”}”(hj6h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6ubhŒ with relaxed ordering.”…”�”}”(hj6h²hh³Nh´Nubeh}”(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.”…”�”}”(hjWh²hh³Nh´Nubah}”(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Ž)�”}”(hjhh]”hŒReturn”…”�”}”(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´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³Œ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&]”uh1jhjubah}”(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Œ*”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjøubj)�”}”(hj|h]”hŒv”…”�”}”(hjUh²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”…”�”}”(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** ``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”…”�”}”(hjh²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.”…”�”}”(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´K)hjšubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjBh]”hŒReturn”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@ubah}”(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 ”…”�”}”(hjXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXubhŒ.”…”�”}”(hjXh²hh³Nh´Nubeh}”(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Œ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÒubj)�”}”(hj|h]”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ûhj(ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj(ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjHh²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´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”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K6hjnh²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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´K8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´K8hj©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Œ5Atomically sets **v** to **i** with relaxed 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 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´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.”…”�”}”(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´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Œ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”…”�”}”(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_set_release”†”asbuh1hhjþubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjþubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjþubj)�”}”(hj|h]”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”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjTubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTubeh}”(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)�”}”(hjh]”hŒint i”…”�”}”(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´KJhjubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hj0h²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Ž)�”}”(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´KLhj¹ubjM)�”}”(hŒ5Atomically sets **v** to **i** with release ordering.”h]”(hŒAtomically sets ”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ to ”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ with release ordering.”…”�”}”(hjhh²hh³Nh´Nubeh}”(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Œ ”…”�”}”(hjh²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ûhj*ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjJh²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”…”�”}”(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€)�”}”jsjsbŒ c.atomic_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Œ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´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”…”�”}”(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´K\hjubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´K\hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´K\hjubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjCh]”hŒ atomic_t *v”…”�”}”(hjEh²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´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³jXh´K]hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jXh´K]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´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.”…”�”}”(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´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ûhj+h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+h²hh³j=h´Kmubhÿ)�”}”(hŒatomic_add_return”h]”j)�”}”(hŒatomic_add_return”h]”hŒatomic_add_return”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj+h²hh³j=h´Kmubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(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”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjdubj:)�”}”(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€)�”}”jsjRsbŒ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)�”}”(hj|h]”hŒv”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjdubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj+h²hh³j=h´Kmubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj'h²hh³j=h´Kmubah}”(h]”j"ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j=h´Kmhj$h²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(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´Kmhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj$h²hh³j=h´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Ž)�”}”(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´Kqhj#ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjHh]”hŒint i”…”�”}”(hjJh²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´KnhjBubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j]h´Knhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j]h´Knhj?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&]”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´Kohj{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´Kohj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j–h´Kohj?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´Kqhj#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´Kphj#ubjM)�”}”(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.”…”�”}”(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´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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Kthj#ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj>h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjFh²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´Kuhj#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_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”…”�”}”(hjh²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_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þ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_add_return_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)�”}”(hj|h]”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´K€ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjwh²hh³j�h´K€ubah}”(h]”jrah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�h´K€hjth²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire ordering”…”�”}”(hjWh²hh³Nh´Nubah}”(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€hjTh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjth²hh³j�h´K€ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjojHjojI‰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Ž)�”}”(hjyh]”hŒ Parameters”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwubah}”(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„hjsubj¤)�”}”(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£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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K„hjsubjM)�”}”(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”…”�”}”(hjN 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ƒhjsubjM)�”}”(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.”…”�”}”(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´K…hjsubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjx h]”hŒReturn”…”�”}”(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´K‡hjsubjM)�”}”(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ˆhjsubeh}”(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”…”�”}”(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_add_return_release”†”asbuh1hhj'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ºhjc&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.”…”�”}”(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´K¼hjc&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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´K¾hjc&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¿hjc&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”…”�”}”(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.atomic_fetch_add_acquire”†”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)�”}”(hj|h]”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´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Ž)�”}”(hjL)h]”hŒ Description”…”�”}”(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Î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”…”�”}”(hjŽ)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´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”…”�”}”(hj0*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”…”�”}”(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”…”�”}”(hjh*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjH*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjD*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€)�”}”jsj2*sbŒc.atomic_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)�”}”(hj|h]”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´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”…”�”}”(hjA+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)�”}”(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´KÞ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´KÞhjw+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj[+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jv+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”…”�”}”(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Œ ”…”�”}”(hjn,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj[,h²hh³jm,h´Kïubhÿ)�”}”(hŒatomic_fetch_add_relaxed”h]”j)�”}”(hŒatomic_fetch_add_relaxed”h]”hŒatomic_fetch_add_relaxed”…”�”}”(hj€,h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|,ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj[,h²hh³jm,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_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)�”}”(hj|h]”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´Kïubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjW,h²hh³jm,h´Kïubah}”(h]”jR,ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jm,h´KïhjT,h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj7-h²hh³Nh´Nubah}”(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ïhj4-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjT,h²hh³jm,h´Kïubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjO-jHjO-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Ž)�”}”(hjY-h]”hŒ Parameters”…”�”}”(hj[-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW-ubah}”(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óhjS-ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjx-h]”hŒint 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´Kðhjr-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Èhjr-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�-h´Kðhjo-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ñhjo-ubeh}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´KóhjS-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òhjS-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.”…”�”}”(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´KôhjS-ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjX.h]”hŒReturn”…”�”}”(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´KöhjS-ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original 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´K÷hjS-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Œ ”…”�”}”(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)�”}”(hj|h]”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 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´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„)�”}”(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)�”}”(hj0h]”hŒ atomic_t *v”…”�”}”(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´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³j0h´Mhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjû/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j0h´Mhj¿/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj£/ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj<0h]”hŒ Description”…”�”}”(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ŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjR0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR0ubhŒ to (”…”�”}”(hjR0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjl0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR0ubhŒ - ”…”�”}”(hjR0h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj~0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR0ubhŒ) with relaxed ordering.”…”�”}”(hjR0h²hh³Nh´Nubeh}”(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 1ubah}”(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”…”�”}”(hj*1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj&1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj81h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj&1ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjF1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj"1ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hja1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jc1Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj1sbŒc.atomic_sub_return”†”asbuh1hhjZ1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZ1ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjZ1ubj)�”}”(hj|h]”hŒv”…”�”}”(hjœ1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj"1ubeh}”(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)�”}”(hj2h]”hŒint i”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj2ubjÉ)�”}”(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Èhj2ubeh}”(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)�”}”(hj?2h]”hŒ atomic_t *v”…”�”}”(hjA2h²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´Mhj92ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjX2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jT2h´MhjU2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj92ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jT2h´Mhjý1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjá1ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjz2h]”hŒ Description”…”�”}”(hj|2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx2ubah}”(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”…”�”}”(hj3h²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”…”�”}”(hj=3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj93h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj93h²hh³jK3h´M&ubhÿ)�”}”(hŒatomic_sub_return_acquire”h]”j)�”}”(hŒatomic_sub_return_acquire”h]”hŒatomic_sub_return_acquire”…”�”}”(hj^3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ3ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj93h²hh³jK3h´M&ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjz3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjv3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjv3ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj–3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjv3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjr3ubj:)�”}”(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€)�”}”jsj`3sbŒ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)�”}”(hj|h]”hŒv”…”�”}”(hjì3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjr3ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj93h²hh³jK3h´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj53h²hh³jK3h´M&ubah}”(h]”j03ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jK3h´M&hj23h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(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´M&hj4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj23h²hh³jK3h´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Ž)�”}”(hj74h]”hŒ Parameters”…”�”}”(hj94h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj54ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M*hj14ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjV4h]”hŒint i”…”�”}”(hjX4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjT4ubah}”(h]”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'hjP4ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjo4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jk4h´M'hjl4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjP4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jk4h´M'hjM4ubj©)�”}”(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(hjM4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj14ubjM)�”}”(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*hj14ubjM)�”}”(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”…”�”}”(hj 5h²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)hj14ubjM)�”}”(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.”…”�”}”(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´M+hj14ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj65h]”hŒReturn”…”�”}”(hj85h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj45ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M-hj14ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjL5h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjT5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjL5ubhŒ.”…”�”}”(hjL5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M.hj14ubeh}”(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”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþ5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j6Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj°5sbŒc.atomic_sub_return_release”†”asbuh1hhjú5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!6h²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)�”}”(hj|h]”hŒv”…”�”}”(hj<6h²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'hj…5h²hh³j›5h´M8ubah}”(h]”j€5ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j›5h´M8hj‚5h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with release ordering”h]”hŒ%atomic subtract with release ordering”…”�”}”(hje6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M8hjb6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‚5h²hh³j›5h´M8ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj}6jHj}6jI‰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�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Œ ``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£hj�6ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj7h]”hŒ Description”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7ubah}”(h]”h ]”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ŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj07h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj87h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj07ubhŒ to (”…”�”}”(hj07h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj07ubhŒ - ”…”�”}”(hj07h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj\7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj07ubhŒ) with release ordering.”…”�”}”(hj07h²hh³Nh´Nubeh}”(h]”h ]”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Œ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.”…”�”}”(hju7h²hh³Nh´Nubah}”(h]”h ]”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 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@hj�6ubeh}”(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ûhj8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj8ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj68h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj8ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjQ8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjN8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jS8Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj8sbŒc.atomic_sub_return_relaxed”†”asbuh1hhjJ8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJ8ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjJ8ubj)�”}”(hj|h]”hŒv”…”�”}”(hjŒ8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ8ubeh}”(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 9h´MLhj 9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjð8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j 9h´MLhjí8ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj/9h]”hŒ atomic_t *v”…”�”}”(hj19h²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´MMhj)9ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjH9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jD9h´MMhjE9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj)9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jD9h´MMhjí8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÑ8ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjj9h]”hŒ Description”…”�”}”(hjl9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh9ubah}”(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 ”…”�”}”(hj€9h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjˆ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€9ubhŒ to (”…”�”}”(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´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¬9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€9ubhŒ) with relaxed ordering.”…”�”}”(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´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Œ ”…”�”}”(hj<: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”…”�”}”(hjN:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ: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”…”�”}”(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_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_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)�”}”(hj|h]”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´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)�”}”(hjF;h]”hŒint i”…”�”}”(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Œ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_hjy;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È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³Œ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 ”…”�”}”(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³Œ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”…”�”}”(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´MpubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjy<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þhjy<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)�”}”(hj|h]”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³j‹<h´Mpubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hju<h²hh³j‹<h´Mpubah}”(h]”jp<ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‹<h´Mphjr<h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(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´MphjR=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjr<h²hh³j‹<h´Mpubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjm=jHjm=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Ž)�”}”(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´Mthjq=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£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´Mthjq=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”…”�”}”(hjL>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´Mshjq=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.”…”�”}”(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´Muhjq=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´Mwhjq=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´Mxhjq=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”…”�”}”(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_fetch_sub_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)�”}”(hj|h]”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„)�”}”(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”…”�”}”(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³Œ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 ”…”�”}”(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 release ordering.”…”�”}”(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…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ûhjAh²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&]”uh1jPhjAh²hh³j+Ah´M•ubhÿ)�”}”(hŒatomic_fetch_sub_relaxed”h]”j)�”}”(hŒatomic_fetch_sub_relaxed”h]”hŒatomic_fetch_sub_relaxed”…”�”}”(hj>Ah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:Aubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjAh²hh³j+Ah´M•ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjZAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjVAubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhAh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjVAubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjvAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjRAubj:)�”}”(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€)�”}”jsj@AsbŒ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)�”}”(hj|h]”hŒv”…”�”}”(hjÌAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjRAubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjAh²hh³j+Ah´M•ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjAh²hh³j+Ah´M•ubah}”(h]”jAah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j+Ah´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³j+Ah´M•ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj BjHj BjI‰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Ž)�”}”(hjBh]”hŒ Parameters”…”�”}”(hjBh²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´M™hjBubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``int i`` int value to subtract ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hj6Bh]”hŒint i”…”�”}”(hj8Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4Bubah}”(h]”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–hj0BubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to subtract”h]”hŒint value to subtract”…”�”}”(hjOBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jKBh´M–hjLBubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jKBh´M–hj-Bubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjoBh]”hŒ atomic_t *v”…”�”}”(hjqBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjmBubah}”(h]”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—hjiBubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjˆBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j„Bh´M—hj…Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjiBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„Bh´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.”…”�”}”(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šhjBubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjCh]”hŒReturn”…”�”}”(hjCh²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”…”�”}”(hj4Ch²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”…”�”}”(hjmCh²hh³Nh´Nubah}”(h]”h ]”jah"]”• h$]”h&]”uh1jûhjiCh²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&]”uh1jPhjiCh²hh³j{Ch´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þhjiCh²hh³j{Ch´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)�”}”(hj|h]”hŒv”…”�”}”(hjèCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¢Cubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjiCh²hh³j{Ch´M§ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjeCh²hh³j{Ch´M§ubah}”(h]”j`Cah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j{Ch´M§hjbCh²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&]”uh1j3hjbCh²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** ``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Ž)�”}”(hj3Dh]”hŒ Parameters”…”�”}”(hj5Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1Dubah}”(h]”h ]”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)�”}”(hjRDh]”hŒ atomic_t *v”…”�”}”(hjTDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjPDubah}”(h]”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¨hjLDubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjkDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jgDh´M¨hjhDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjLDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jgDh´M¨hjIDubah}”(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�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Œ>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ûhj(Eh²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&]”uh1jPhj(Eh²hh³j:Eh´M¸ubhÿ)�”}”(hŒatomic_inc_return”h]”j)�”}”(hŒatomic_inc_return”h]”hŒatomic_inc_return”…”�”}”(hjMEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIEubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj(Eh²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”…”�”}”(hjlEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jnEŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjOEsbŒc.atomic_inc_return”†”asbuh1hhjeEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒEh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjeEubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjšEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjeEubj)�”}”(hj|h]”hŒv”…”�”}”(hj§Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjaEubah}”(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Œ#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&]”uh1j3hj!Eh²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 FubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_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¹hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjìEubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjLFh]”hŒ Description”…”�”}”(hjNFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJFubah}”(h]”h ]”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 ”…”�”}”(hjbFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbFubhŒ to (”…”�”}”(hjbFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbFubhŒ + 1) with full ordering.”…”�”}”(hjbFh²hh³Nh´Nubeh}”(h]”h ]”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Œ ”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùFh²hh³j Gh´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 Gh´MÊubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(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€)�”}”jsj GsbŒc.atomic_inc_return_acquire”†”asbuh1hhj6GubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Gh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6Gubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjkGh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj6Gubj)�”}”(hj|h]”hŒv”…”�”}”(hjxGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj2Gubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjùFh²hh³j Gh´MÊubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjõFh²hh³j Gh´MÊubah}”(h]”jðFah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j Gh´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 Gh´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 ”…”�”}”(hj3Hh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj;Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3HubhŒ to (”…”�”}”(hj3Hh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjMHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3HubhŒ + 1) with acquire ordering.”…”�”}”(hj3Hh²hh³Nh´Nubeh}”(h]”h ]”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.”…”�”}”(hjfHh²hh³Nh´Nubah}”(h]”h ]”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Ž)�”}”(hjwHh]”hŒReturn”…”�”}”(hjyHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuHubah}”(h]”h ]”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 Iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jIŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjñHsbŒc.atomic_inc_return_release”†”asbuh1hhjIubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjIubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjAtomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ to (”…”�”}”(hjJh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJubhŒ + 1) with release ordering.”…”�”}”(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Ý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.”…”�”}”(hj7Jh²hh³Nh´Nubah}”(h]”h ]”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Ž)�”}”(hjHJh]”hŒReturn”…”�”}”(hjJJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFJubah}”(h]”h ]”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 ”…”�”}”(hj^Jh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjfJh²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â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Œ*”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjØJubj)�”}”(hj|h]”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”…”�”}”(hjCKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Míhj@Kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj”Jh²hh³j­Jh´Míubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj[KjHj[KjI‰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Ž)�”}”(hjeKh]”hŒ Parameters”…”�”}”(hjgKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjcKubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mñhj_Kubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj„Kh]”hŒ atomic_t *v”…”�”}”(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´Mîhj~KubjÉ)�”}”(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Èhj~Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j™Kh´Mîhj{Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj_KubjM)�”}”(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ðhj_KubjM)�”}”(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ïhj_KubjM)�”}”(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.”…”�”}”(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_KubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjLh]”hŒReturn”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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”…”�”}”(hj7Lh²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_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”…”�”}”(hjpLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjlLh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MþubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjlLh²hh³j~Lh´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þhjlLh²hh³j~Lh´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)�”}”(hj|h]”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&]”jjuh1j3hjlLh²hh³j~Lh´Mþubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjhLh²hh³j~Lh´Mþubah}”(h]”jcLah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j~Lh´MþhjeLh²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&]”uh1j3hjeLh²hh³j~Lh´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Ž)�”}”(hj6Mh]”hŒ Parameters”…”�”}”(hj8Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj0Mubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjUMh]”hŒ atomic_t *v”…”�”}”(hjWMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjSMubah}”(h]”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ÿhjOMubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjnMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jjMh´MÿhjkMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjOMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jjMh´MÿhjLMubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj0MubjM)�”}”(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´Mhj0MubjM)�”}”(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´Mhj0MubjM)�”}”(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´Mhj0MubjM)�”}”(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´Mhj0MubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjNh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNubhŒ.”…”�”}”(hjNh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj0Mubeh}”(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”…”�”}”(hjANh²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´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj=Nh²hh³jONh´Mubhÿ)�”}”(hŒatomic_fetch_inc_acquire”h]”j)�”}”(hŒatomic_fetch_inc_acquire”h]”hŒatomic_fetch_inc_acquire”…”�”}”(hjbNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^Nubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj=Nh²hh³jONh´Mubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_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€)�”}”jsjdNsbŒc.atomic_fetch_inc_acquire”†”asbuh1hhjzNubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Nh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjzNubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¯Nh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjzNubj)�”}”(hj|h]”hŒv”…”�”}”(hj¼Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjvNubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj=Nh²hh³jONh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj9Nh²hh³jONh´Mubah}”(h]”j4Nah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jONh´Mhj6Nh²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&]”uh1j3hj6Nh²hh³jONh´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Ž)�”}”(hjOh]”hŒ Parameters”…”�”}”(hj Oh²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´MhjOubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj&Oh]”hŒ atomic_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´Mhj OubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj?Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j;Oh´MhjAtomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjwOh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwOubhŒ to (”…”�”}”(hjwOh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‘Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwOubhŒ + 1) with acquire ordering.”…”�”}”(hjwOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjOubjM)�”}”(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´MhjOubjM)�”}”(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´MhjOubjM)�”}”(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´MhjOubeh}”(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Œ ”…”�”}”(hj!Ph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPh²hh³j Ph´M!ubhÿ)�”}”(hŒatomic_fetch_inc_release”h]”j)�”}”(hŒatomic_fetch_inc_release”h]”hŒatomic_fetch_inc_release”…”�”}”(hj3Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/Pubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjPh²hh³j Ph´M!ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjRPh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jTPŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj5PsbŒc.atomic_fetch_inc_release”†”asbuh1hhjKPubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrPh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjKPubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj€Ph²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjKPubj)�”}”(hj|h]”hŒv”…”�”}”(hj�Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjGPubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjPh²hh³j Ph´M!ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj Ph²hh³j Ph´M!ubah}”(h]”jPah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j Ph´M!hjPh²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&]”uh1j3hjPh²hh³j Ph´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³j Qh´M"hj Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjñPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j Qh´M"hjîPubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÒPubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj2Qh]”hŒ Description”…”�”}”(hj4Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0Qubah}”(h]”h ]”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 ”…”�”}”(hjHQh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjPQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHQubhŒ to (”…”�”}”(hjHQh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjbQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHQubhŒ + 1) with release ordering.”…”�”}”(hjHQh²hh³Nh´Nubeh}”(h]”h ]”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ŒHUnsafe to use in noinstr code; use raw_atomic_fetch_inc_release() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_inc_release() there.”…”�”}”(hj{Qh²hh³Nh´Nubah}”(h]”h ]”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Œ **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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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éŒ%atomic_fetch_inc_relaxed (C function)”Œc.atomic_fetch_inc_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*int atomic_fetch_inc_relaxed (atomic_t *v)”h]”hù)�”}”(hŒ)int atomic_fetch_inc_relaxed(atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjãQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjßQh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòQh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjßQh²hh³jñQh´M3ubhÿ)�”}”(hŒatomic_fetch_inc_relaxed”h]”j)�”}”(hŒatomic_fetch_inc_relaxed”h]”hŒatomic_fetch_inc_relaxed”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjßQh²hh³jñQh´M3ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(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€)�”}”jsjRsbŒc.atomic_fetch_inc_relaxed”†”asbuh1hhjRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCRh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjQRh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjRubj)�”}”(hj|h]”hŒv”…”�”}”(hj^Rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjRubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjßQh²hh³jñQh´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÛQh²hh³jñQh´M3ubah}”(h]”jÖQah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jñQh´M3hjØQh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(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´M3hj„Rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjØQh²hh³jñQh´M3ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjŸRjHjŸRjI‰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_inc_relaxed() there. **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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M7hj£Rubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjÈRh]”hŒ atomic_t *v”…”�”}”(hjÊRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÆRubah}”(h]”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ÂRubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjáRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÝRh´M4hjÞRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÂRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÝRh´M4hj¿Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj£RubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjSh]”hŒ Description”…”�”}”(hjSh²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´M6hj£RubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒ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Œ**v**”h]”hŒv”…”�”}”(hj3Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSubhŒ + 1) with relaxed ordering.”…”�”}”(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´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.”…”�”}”(hjLSh²hh³Nh´Nubah}”(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Ž)�”}”(hj]Sh]”hŒReturn”…”�”}”(hj_Sh²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´M9hj£RubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjsSh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj{Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsSubhŒ.”…”�”}”(hjsSh²hh³Nh´Nubeh}”(h]”h ]”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Œ*”…”�”}”(hj"Th²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjíSubj)�”}”(hj|h]”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”…”�”}”(hjXTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MDhjUTh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj©Sh²hh³jÂSh´MDubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjpTjHjpTjI‰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Ž)�”}”(hjzTh]”hŒ Parameters”…”�”}”(hj|Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxTubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MHhjtTubj¤)�”}”(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£hjtTubjM)�”}”(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´MGhjtTubjM)�”}”(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”…”�”}”(hjUh²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´MFhjtTubjM)�”}”(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´MHhjtTubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj.Uh]”hŒReturn”…”�”}”(hj0Uh²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´MJhjtTubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjDUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MKhjtTubeh}”(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”…”�”}”(hjsUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjoUh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MUubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Uh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjoUh²hh³j�Uh´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þhjoUh²hh³j�Uh´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)�”}”(hj|h]”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&]”jjuh1j3hjoUh²hh³j�Uh´MUubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjkUh²hh³j�Uh´MUubah}”(h]”jfUah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�Uh´MUhjhUh²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(hjVh²hh³Nh´Nubah}”(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&]”uh1j3hjhUh²hh³j�Uh´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Ž)�”}”(hj9Vh]”hŒ Parameters”…”�”}”(hj;Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MYhj3Vubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjXVh]”hŒ atomic_t *v”…”�”}”(hjZVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjVVubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MVhjRVubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjqVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmVh´MVhjnVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmVh´MVhjOVubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj3VubjM)�”}”(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´MXhj3VubjM)�”}”(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´MWhj3VubjM)�”}”(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´MYhj3VubjM)�”}”(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[hj3VubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjWh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Wh²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´M\hj3Vubeh}”(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”…”�”}”(hjDWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj@Wh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MgubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj@Wh²hh³jRWh´Mgubhÿ)�”}”(hŒatomic_dec_return_acquire”h]”j)�”}”(hŒatomic_dec_return_acquire”h]”hŒatomic_dec_return_acquire”…”�”}”(hjeWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaWubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj@Wh²hh³jRWh´Mgubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_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€)�”}”jsjgWsbŒc.atomic_dec_return_acquire”†”asbuh1hhj}WubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Wh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj}Wubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj²Wh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj}Wubj)�”}”(hj|h]”hŒv”…”�”}”(hj¿Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjyWubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj@Wh²hh³jRWh´Mgubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjXh´Mhhj?Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj#Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j>Xh´Mhhj Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjXubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjdXh]”hŒ Description”…”�”}”(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´MjhjXubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjzXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‚Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzXubhŒ to (”…”�”}”(hjzXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj”Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzXubhŒ - 1) with acquire ordering.”…”�”}”(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´MihjXubjM)�”}”(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´MkhjXubjM)�”}”(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´MmhjXubjM)�”}”(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´MnhjXubeh}”(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”…”�”}”(hjYh²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Œ ”…”�”}”(hj$Yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjYh²hh³j#Yh´Mxubhÿ)�”}”(hŒatomic_dec_return_release”h]”j)�”}”(hŒatomic_dec_return_release”h]”hŒatomic_dec_return_release”…”�”}”(hj6Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2Yubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjYh²hh³j#Yh´Mxubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjUYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jWYŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj8YsbŒc.atomic_dec_return_release”†”asbuh1hhjNYubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuYh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjNYubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjƒYh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjNYubj)�”}”(hj|h]”hŒv”…”�”}”(hj�Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjJYubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjYh²hh³j#Yh´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj Yh²hh³j#Yh´Mxubah}”(h]”jYah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j#Yh´Mxhj Yh²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 Yh²hh³j#Yh´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Ž)�”}”(hj5Zh]”hŒ Description”…”�”}”(hj7Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3Zubah}”(h]”h ]”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 ”…”�”}”(hjKZh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjSZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKZubhŒ to (”…”�”}”(hjKZh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjeZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKZubhŒ - 1) with release ordering.”…”�”}”(hjKZh²hh³Nh´Nubeh}”(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.”…”�”}”(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 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[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Œ (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_return_relaxed”†”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Œ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â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”…”�”}”(hj6\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.”…”�”}”(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Ž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 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³Œ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)�”}”(hj|h]”hŒv”…”�”}”(hj2]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›hjX]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¬\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** ``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Ž)�”}”(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Ÿhjw]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£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´Mžhjw]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�hjw]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Ÿhjw]ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj1^h]”hŒReturn”…”�”}”(hj3^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¡hjw]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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”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éŒ%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û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_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þ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_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Œ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”…”�”}”(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&]”jFjAjGjD_jHjD_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Ž)�”}”(hjN_h]”hŒ Parameters”…”�”}”(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±hjH_ubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjm_h]”hŒ atomic_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´M®hjg_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Èhjg_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‚_h´M®hjd_ubah}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M°hjH_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¯hjH_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±hjH_ubjM)�”}”(hŒ **Return**”h]”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³hjH_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´hjH_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”…”�”}”(hjY`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjU`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`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjU`h²hh³jg`h´M¾ubhÿ)�”}”(hŒatomic_fetch_dec_release”h]”j)�”}”(hŒatomic_fetch_dec_release”h]”hŒatomic_fetch_dec_release”…”�”}”(hjz`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjv`ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjU`h²hh³jg`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_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Œ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&]”jjuh1j3hjU`h²hh³jg`h´M¾ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjQ`h²hh³jg`h´M¾ubah}”(h]”jL`ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jg`h´M¾hjN`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&]”uh1j3hjN`h²hh³jg`h´M¾ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjajHjajI‰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”…”�”}”(hj!ah²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Âhjaubj¤)�”}”(hhh]”j©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj>ah]”hŒ atomic_t *v”…”�”}”(hj@ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAtomically 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ÀhjaubjM)�”}”(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ÂhjaubjM)�”}”(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ÄhjaubjM)�”}”(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Åhjaubeh}”(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”…”�”}”(hj*bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj&bh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÐubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj&bh²hh³j8bh´MÐubhÿ)�”}”(hŒatomic_fetch_dec_relaxed”h]”j)�”}”(hŒatomic_fetch_dec_relaxed”h]”hŒatomic_fetch_dec_relaxed”…”�”}”(hjKbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGbubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj&bh²hh³j8bh´MÐubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jlbŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjMbsbŒc.atomic_fetch_dec_relaxed”†”asbuh1hhjcbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠbh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcbubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj˜bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjcbubj)�”}”(hj|h]”hŒv”…”�”}”(hj¥bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjcbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj_bubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj&bh²hh³j8bh´MÐubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj"bh²hh³j8bh´MÐubah}”(h]”jbah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j8bh´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³j8bh´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&]”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Œpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(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Ñhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjêbubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjJch]”hŒ Description”…”�”}”(hjLch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHcubah}”(h]”h ]”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** - 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj`ch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjhch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`cubhŒ to (”…”�”}”(hj`ch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjzch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`cubhŒ - 1) with relaxed 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Ò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 dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj÷ch²hh³j dh´Máubhÿ)�”}”(hŒ atomic_and”h]”j)�”}”(hŒ atomic_and”h]”hŒ atomic_and”…”�”}”(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”…”�”}”(hj8dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj4dubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4dubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjTdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0dubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjodh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjldubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jqdŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjdsbŒ c.atomic_and”†”asbuh1hhjhdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjhdubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj�dh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjhdubj)�”}”(hj|h]”hŒv”…”�”}”(hjªdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj0dubeh}”(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 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 dh´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”…”�”}”(hjeh²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³j)eh´Mâhj*eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j)eh´Mâhj eubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjMeh]”hŒ atomic_t *v”…”�”}”(hjOeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKeubah}”(h]”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ãhjGeubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjfeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jbeh´Mãhjceubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbeh´Mãhj eubeh}”(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³Œ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 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ï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”…”�”}”(hj9fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj5fh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MóubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHfh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5fh²hh³jGfh´Móubhÿ)�”}”(hŒatomic_fetch_and”h]”j)�”}”(hŒatomic_fetch_and”h]”hŒatomic_fetch_and”…”�”}”(hjZfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVfubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj5fh²hh³jGfh´Móubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjvfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjrfubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„fh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjrfubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj’fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjnfubj:)�”}”(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€)�”}”jsj\fsbŒc.atomic_fetch_and”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjèfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjnfubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj5fh²hh³jGfh´Móubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj1fh²hh³jGfh´Móubah}”(h]”j,fah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jGfh´Móhj.fh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic bitwise AND with full ordering”h]”hŒ%atomic bitwise AND with full ordering”…”�”}”(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óhjgh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj.fh²hh³jGfh´Móubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj)gjHj)gjI‰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_and() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj3gh]”hŒ Parameters”…”�”}”(hj5gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1gubah}”(h]”h ]”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Œ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjRgh]”hŒint i”…”�”}”(hjTgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjPgubah}”(h]”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ôhjLgubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjkgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jggh´Môhjhgubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjLgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jggh´MôhjIgubj©)�”}”(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õhjIgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj-gubjM)�”}”(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³Œ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** & **i**) with full 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 full ordering.”…”�”}”(hjÜgh²hh³Nh´Nubeh}”(h]”h ]”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Œ@Unsafe to use in noinstr code; use raw_atomic_fetch_and() there.”h]”hŒ@Unsafe to use in noinstr code; use raw_atomic_fetch_and() there.”…”�”}”(hj!hh²hh³Nh´Nubah}”(h]”h ]”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Ž)�”}”(hj2hh]”hŒReturn”…”�”}”(hj4hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0hubah}”(h]”h ]”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 original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjHhh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjPhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHhubhŒ.”…”�”}”(hjHhh²hh³Nh´Nubeh}”(h]”h ]”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_fetch_and_acquire (C function)”Œc.atomic_fetch_and_acquire”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_and_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_and_acquire(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj…hh²hh³j—hh´Mubhÿ)�”}”(hŒatomic_fetch_and_acquire”h]”j)�”}”(hŒatomic_fetch_and_acquire”h]”hŒatomic_fetch_and_acquire”…”�”}”(hjªhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦hubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj…hh²hh³j—hh´Mubj4)�”}”(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”…”�”}”(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.atomic_fetch_and_acquire”†”asbuh1hhjöhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjöhubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj+ih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjöhubj)�”}”(hj|h]”hŒv”…”�”}”(hj8ih²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³j—hh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�hh²hh³j—hh´Mubah}”(h]”j|hah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j—hh´Mhj~hh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with acquire ordering”h]”hŒ(atomic bitwise AND with acquire ordering”…”�”}”(hjaih²hh³Nh´Nubah}”(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^ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj~hh²hh³j—hh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjyijHjyijI‰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_and_acquire() there. **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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hj}iubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjœiubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hj»ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j·ih´Mhj¸iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjœiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j·ih´Mhj™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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjÕ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´Mhjñiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÕiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jðih´Mhj™iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj}iubjM)�”}”(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 hj}iubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj,jh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj4jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,jubhŒ to (”…”�”}”(hj,jh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjFjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,jubhŒ & ”…”�”}”(hj,jh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjXjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,jubhŒ) with acquire ordering.”…”�”}”(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 hj}iubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_and_acquire() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_fetch_and_acquire() there.”…”�”}”(hjqjh²hh³Nh´Nubah}”(h]”h ]”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Ž)�”}”(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 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mhj}iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_fetch_and_release (C function)”Œc.atomic_fetch_and_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1int atomic_fetch_and_release (int i, atomic_t *v)”h]”hù)�”}”(hŒ0int atomic_fetch_and_release(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÕjh²hh³jçjh´Mubhÿ)�”}”(hŒatomic_fetch_and_release”h]”j)�”}”(hŒatomic_fetch_and_release”h]”hŒatomic_fetch_and_release”…”�”}”(hjújh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjÕjh²hh³jçjh´Mubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjkubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj2kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjkubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjMkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jOkŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjüjsbŒc.atomic_fetch_and_release”†”asbuh1hhjFkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjFkubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj{kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjFkubj)�”}”(hj|h]”hŒv”…”�”}”(hjˆkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFkubeh}”(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 lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jlh´Mhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjìkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jlh´Mhjékubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj+lh]”hŒ atomic_t *v”…”�”}”(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´Mhj%lubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjDlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@lh´MhjAlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j@lh´Mhjékubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÍkubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjflh]”hŒ Description”…”�”}”(hjhlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdlubah}”(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 ”…”�”}”(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 release ordering.”…”�”}”(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´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”…”�”}”(hj)mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj%mh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M+ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj%mh²hh³j7mh´M+ubhÿ)�”}”(hŒatomic_fetch_and_relaxed”h]”j)�”}”(hŒatomic_fetch_and_relaxed”h]”hŒatomic_fetch_and_relaxed”…”�”}”(hjJmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFmubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj%mh²hh³j7mh´M+ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjfmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjbmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjbmubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj‚mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj^mubj:)�”}”(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€)�”}”jsjLmsbŒ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)�”}”(hj|h]”hŒv”…”�”}”(hjØmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj^mubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj%mh²hh³j7mh´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj!mh²hh³j7mh´M+ubah}”(h]”jmah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j7mh´M+hjmh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”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³j7mh´M+ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjnjHjnjI‰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Ž)�”}”(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´M/hjnubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjBnh]”hŒint i”…”�”}”(hjDnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj@nubah}”(h]”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,hjhjŒ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£hjmpubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjqh]”hŒ Description”…”�”}”(hjqh²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´MAhjmpubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjqh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj$qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubhŒ to (”…”�”}”(hjqh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj6qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubhŒ & ”…”�”}”(hjqh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjHqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjqubhŒ) with relaxed ordering.”…”�”}”(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@hjmpubjM)�”}”(hŒ=Unsafe to use in noinstr code; use raw_atomic_andnot() there.”h]”hŒ=Unsafe to use in noinstr code; use raw_atomic_andnot() there.”…”�”}”(hjaqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MBhjmpubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjrqh]”hŒReturn”…”�”}”(hjtqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpqubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MDhjmpubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjˆqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MEhjmpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ atomic_fetch_andnot (C function)”Œc.atomic_fetch_andnot”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ,int atomic_fetch_andnot (int i, atomic_t *v)”h]”hù)�”}”(hŒ+int atomic_fetch_andnot(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆqh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj³qh²hh³jÅqh´MOubhÿ)�”}”(hŒatomic_fetch_andnot”h]”j)�”}”(hŒatomic_fetch_andnot”h]”hŒatomic_fetch_andnot”…”�”}”(hjØqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÔqubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj³qh²hh³jÅqh´MOubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjôqh²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Œi”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjìqubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(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€)�”}”jsjÚqsbŒc.atomic_fetch_andnot”†”asbuh1hhj$rubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKrh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$rubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjYrh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj$rubj)�”}”(hj|h]”hŒv”…”�”}”(hjfrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjìqubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj³qh²hh³jÅqh´MOubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¯qh²hh³jÅqh´MOubah}”(h]”jªqah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÅqh´MOhj¬qh²hubj4)�”}”(hhh]”jM)�”}”(hŒ)atomic bitwise AND NOT with full ordering”h]”hŒ)atomic bitwise AND NOT with full ordering”…”�”}”(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´MOhjŒrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¬qh²hh³jÅqh´MOubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj§rjHj§rjI‰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_andnot() there. **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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MShj«rubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MPhjÊrubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjérh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jårh´MPhjærubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÊrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jårh´MPhjÇrubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hj sh]”hŒ atomic_t *v”…”�”}”(hj sh²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´MQhjsubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj"sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jsh´MQhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jsh´MQhjÇrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj«rubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjDsh]”hŒ Description”…”�”}”(hjFsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBsubah}”(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«rubjM)�”}”(hŒ@Atomically updates **v** to (**v** & **~i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjZsh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjbsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZsubhŒ to (”…”�”}”(hjZsh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjtsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZsubhŒ & ”…”�”}”(hjZsh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hj†sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZsubhŒ) with full ordering.”…”�”}”(hjZsh²hh³Nh´Nubeh}”(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«rubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic_fetch_andnot() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic_fetch_andnot() 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´MThj«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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MVhj«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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MWhj«rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic_fetch_andnot_acquire (C function)”Œc.atomic_fetch_andnot_acquire”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4int atomic_fetch_andnot_acquire (int i, atomic_t *v)”h]”hù)�”}”(hŒ3int atomic_fetch_andnot_acquire(int i, atomic_t *v)”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjth²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjth²hh³jth´Mbubhÿ)�”}”(hŒatomic_fetch_andnot_acquire”h]”j)�”}”(hŒatomic_fetch_andnot_acquire”h]”hŒatomic_fetch_andnot_acquire”…”�”}”(hj(th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$tubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjth²hh³jth´Mbubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjDth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj@tubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj@tubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj`th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj…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ähj8…ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjw…h]”hŒ atomic_t *v”…”�”}”(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Œ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Èhjq…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Œ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 ”…”�”}”(hj4†h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj<†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4†ubhŒ.”…”�”}”(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…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”…”�”}”(hju†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjq†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&]”uh1jPhjq†h²hh³jƒ†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þhjq†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_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)�”}”(hj|h]”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&]”jjuh1j3hjq†h²hh³jƒ†h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjm†h²hh³jƒ†h´Mõubah}”(h]”jh†ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jƒ†h´Mõhjj†h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(hjM‡h²hh³Nh´Nubah}”(h]”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‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjj†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** ``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Ž)�”}”(hjo‡h]”hŒ Parameters”…”�”}”(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ùhji‡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)�”}”(hjLJh]”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£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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mùhji‡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”…”�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Møhji‡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.”…”�”}”(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úhji‡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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mühji‡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ýhji‡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Œ ”…”�”}”(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)�”}”(hj|h]”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´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Ž)�”}”(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Œ?Atomically updates **v** to (**v** ^ **i**) with full 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 full 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Œ@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”…”�”}”(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_xor_acquire”†”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)�”}”(hj|h]”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´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”…”�”}”(hj5Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j1Œh´Mhj2Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j1Œh´MhjŒ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´MhjOŒ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´MhjkŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjOŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jjŒ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”…”�”}”(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_fetch_xor_release”h]”j)�”}”(hŒatomic_fetch_xor_release”h]”hŒatomic_fetch_xor_release”…”�”}”(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Œ(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_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)�”}”(hj|h]”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 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&]”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** ``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Ž)�”}”(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´M0hjGŽubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”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´M-hjfŽ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ÈhjfŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Žh´M-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´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.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´M0hjGŽ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/hjGŽ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´M1hjGŽ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´M3hjGŽ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´M4hjGŽ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Œ ”…”�”}”(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)�”}”(hj|h]”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´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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”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„)�”}”(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Ž)�”}”(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´MChj—�ubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed 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”…”�”}”(hjr‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF‘ubhŒ) with relaxed 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´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”…”�”}”(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.atomic_xchg”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjn’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´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)�”}”(hjF“h]”hŒint 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´MShj@“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´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Ž)�”}”(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Œ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”…”�”}”(hj2”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Œ ”…”�”}”(hjA”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj.”h²hh³j@”h´Mdubhÿ)�”}”(hŒatomic_xchg_acquire”h]”j)�”}”(hŒatomic_xchg_acquire”h]”hŒatomic_xchg_acquire”…”�”}”(hjS”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO”ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj.”h²hh³j@”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”…”�”}”(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€)�”}”jsjU”sbŒc.atomic_xchg_acquire”†”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)�”}”(hj|h]”hŒv”…”�”}”(hj­”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjg”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”ˆjjuh1j9hjg”ubeh}”(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 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³j@”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)�”}”(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´MehjF•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´Mehjb•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjF•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ja•h´MehjC•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´Mfhj•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Èhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jš•h´MfhjC•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 ”…”�”}”(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´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”…”�”}”(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´MvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjm–h²hh³j–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þhjm–h²hh³j–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)�”}”(hj|h]”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&]”jjuh1j3hjm–h²hh³j–h´Mvubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hji–h²hh³j–h´Mvubah}”(h]”jd–ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j–h´Mvhjf–h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with release ordering”h]”hŒ%atomic exchange with release 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´MvhjG—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjf–h²hh³j–h´Mvubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjb—jHjb—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Ž)�”}”(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´Mzhjf—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´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‚—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´Mxhj‚—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´Mzhjf—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´Myhjf—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.”…”�”}”(hjH˜h²hh³Nh´Nubah}”(h]”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Ž)�”}”(hjY˜h]”hŒReturn”…”�”}”(hj[˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW˜ubah}”(h]”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 original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjo˜h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjw˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjo˜ubhŒ.”…”�”}”(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~hjf—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)�”}”(hj|h]”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”…”�”}”(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&]”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_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Ž)�”}”(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 ”…”�”}”(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Œ**new**”h]”hŒnew”…”�”}”(hjnšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTšubhŒ with relaxed 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Œ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”j1›Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj›sbŒc.atomic_cmpxchg”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjj›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”…”�”}”(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)�”}”(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 old`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int old``”h]”jS)�”}”(hjwœh]”hŒint old”…”�”}”(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 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Èhjqœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŒœh´M�hj5œ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ž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** == **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”…”�”}”(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Œ>Unsafe to use in noinstr code; use raw_atomic_cmpxchg() there.”h]”hŒ>Unsafe to use in noinstr code; use raw_atomic_cmpxchg() 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´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³Œ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Œ ”…”�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(hjMž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”…”�”}”(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)�”}”(hŒold”h]”hŒold”…”�”}”(hj�žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaž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³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Œ&``int old`` int value to compare with ”h]”(j¯)�”}”(hŒ ``int old``”h]”jS)�”}”(hjZŸh]”hŒint old”…”�”}”(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Œint value to compare with”h]”hŒint value to compare with”…”�”}”(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Œ ``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”…”�”}”(hj4 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.”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”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 ”…”�”}”(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³Œ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)�”}”(hj|h]”hŒv”…”�”}”(hj0¡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”…”�”}”(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)�”}”(hŒold”h]”hŒold”…”�”}”(hjd¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjD¡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ûhjy¡ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹¡h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjy¡ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(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Œ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)�”}”(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Æhj7¢ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to compare with”h]”hŒint value to compare with”…”�”}”(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û¡ubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjv¢h]”hŒint new”…”�”}”(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´MÇhjp¢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Èhjp¢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.”…”�”}”(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ß¡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³Œ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 ”…”�”}”(hjW£h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj_£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW£ubhŒ.”…”�”}”(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ß¡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)�”}”(hj|h]”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Œ ”…”�”}”(hj9¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'¤ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjG¤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Œ ”…”�”}”(hjn¤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_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”…”�”}”(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Þ¤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´MÜhjS¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(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Ü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”…”�”}”(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ã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”…”�”}”(hj{¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjw¦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Œ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þhjw¦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)�”}”(hj|h]”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”…”�”}”(hj6§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”…”�”}”(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)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjk§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¯¦ubeh}”(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 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&]”uh1j3hjp¦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)�”}”(hjH¨h]”hŒint new”…”�”}”(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Œ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È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ŒÄ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Ž)�”}”(hj7©h]”hŒReturn”…”�”}”(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´M÷hj±§ubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjQ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM©ubhŒ if the exchange occurred, ”…”�”}”(hjM©h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjc©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM©ubhŒ otherwise.”…”�”}”(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´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)�”}”(hj|h]”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Œ*”…”�”}”(hjJªh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj*ªubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjWª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”…”�”}”(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)�”}”(hŒnew”h]”hŒnew”…”�”}”(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´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)�”}”(hj0«h]”hŒint *old”…”�”}”(hj2«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”…”�”}”(hjI«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jE«h´MhjF«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jE«h´Mhjîªubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hji«h]”hŒint new”…”�”}”(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Œ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È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´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.”…”�”}”(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 hjÒªubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjX¬h]”hŒReturn”…”�”}”(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´MhjÒªubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjr¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjn¬ubhŒ if the exchange occurred, ”…”�”}”(hjn¬h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj„¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjn¬ubhŒ otherwise.”…”�”}”(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´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)�”}”(hj|h]”hŒv”…”�”}”(hj7­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”…”�”}”(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”)�”}”(hj—h]”hŒ*”…”�”}”(hjk­h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjK­ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjx­h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK­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”…”�”}”(hj1®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)�”}”(hjQ®h]”hŒint *old”…”�”}”(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´MhjK®ubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to int value to compare with”h]”hŒ$pointer to int value to compare with”…”�”}”(hjj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jf®h´Mhjg®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjK®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jf®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´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³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ŒÇ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”…”�”}”(hjO¯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.”…”�”}”(hjh¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”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Ž)�”}”(hjy¯h]”hŒReturn”…”�”}”(hj{¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw¯ubah}”(h]”h ]”h"]”h$]”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Œ ”…”�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(hjX°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”…”�”}”(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Œ*”…”�”}”(hjŒ°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjl°ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj™°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl°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)�”}”(hj9±h]”hŒ atomic_t *v”…”�”}”(hj;±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj7±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”•\h´M2hj3±ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjR±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jN±h´M2hjO±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj3±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jN±h´M2hj0±ubj©)�”}”(hŒ2``int *old`` pointer to int value to compare with ”h]”(j¯)�”}”(hŒ ``int *old``”h]”jS)�”}”(hjr±h]”hŒint *old”…”�”}”(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´M3hjl±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Èhjl±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‡±h´M3hj0±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´M4hj0±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”…”�”}”(hjL²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”…”�”}”(hjp²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ûhj7³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7³ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjW³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3³ubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_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€)�”}”jsj!³sbŒc.atomic_sub_and_test”†”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)�”}”(hj|h]”hŒv”…”�”}”(hj­³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3³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´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„)�”}”(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”…”�”}”(hj0´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)�”}”(hjP´h]”hŒ atomic_t *v”…”�”}”(hjR´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjN´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MIhjJ´ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hji´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³je´h´MIhjf´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³je´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”…”�”}”(hj5µ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”…”�”}”(hjnµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjjµh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|µh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjjµh²hh³j{µ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þhjjµh²hh³j{µ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)�”}”(hj|h]”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´MZubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjfµh²hh³j{µh´MZubah}”(h]”jaµah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j{µh´MZhjcµ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&]”uh1j3hjcµ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** ``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Ž)�”}”(hj3¶h]”hŒ Parameters”…”�”}”(hj5¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1¶ubah}”(h]”h ]”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)�”}”(hjR¶h]”hŒ atomic_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 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ÈhjL¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jg¶h´M[hjI¶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”…”�”}”(hj^·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjZ·h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZ·h²hh³jk·h´Mlubhÿ)�”}”(hŒatomic_inc_and_test”h]”j)�”}”(hŒatomic_inc_and_test”h]”hŒatomic_inc_and_test”…”�”}”(hj~·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz·ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjZ·h²hh³jk·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€)�”}”jsj€·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)�”}”(hj|h]”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&]”jjuh1j3hjZ·h²hh³jk·h´Mlubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjV·h²hh³jk·h´Mlubah}”(h]”jQ·ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jk·h´MlhjS·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&]”uh1j3hjS·h²hh³jk·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)�”}”(hjB¸h]”hŒ atomic_t *v”…”�”}”(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´Mmhj<¸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³jW¸h´MmhjX¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj<¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jW¸h´Mmhj9¸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´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”…”�”}”(hjN¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjJ¹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&]”uh1jPhjJ¹h²hh³j[¹h´M~ubhÿ)�”}”(hŒatomic_add_negative”h]”j)�”}”(hŒatomic_add_negative”h]”hŒatomic_add_negative”…”�”}”(hjn¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj¹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjJ¹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€)�”}”jsjp¹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)�”}”(hj|h]”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&]”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Œ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&]”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„)�”}”(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Ž)�”}”(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´M‚hjAºubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjfºh]”hŒint i”…”�”}”(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Œint value to add”h]”hŒint 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_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£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´M‚hjAº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�hjAº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.”…”�”}”(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´MƒhjAº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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M…hjAº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”…”�”}”(hjr»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†hjAº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”…”�”}”(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.atomic_add_negative_acquire”†”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)�”}”(hj|h]”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Œ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Ž)�”}”(hjI½h]”hŒ Description”…”�”}”(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ŒBAtomically updates **v** to (**v** + **i**) with acquire 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”…”�”}”(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_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³j9¾h´M£ubhÿ)�”}”(hŒatomic_add_negative_release”h]”j)�”}”(hŒatomic_add_negative_release”h]”hŒatomic_add_negative_release”…”�”}”(hjL¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjH¾ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj(¾h²hh³j9¾h´M£ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(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`¾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€)�”}”jsjN¾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)�”}”(hj|h]”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³j9¾h´M£ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj$¾h²hh³j9¾h´M£ubah}”(h]”j¾ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j9¾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³j9¾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)�”}”(hjD¿h]”hŒint i”…”�”}”(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Œint value to add”h]”hŒint 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Œ$``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¥hjw¿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È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³Œ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”…”�”}”(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”…”�”}”(hjPÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:ÀubhŒ is negative, ”…”�”}”(hj:Àh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjbÀ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Œ*”…”�”}”(hj<Áh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÁubj)�”}”(hj|h]”hŒv”…”�”}”(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'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”…”�”}”(hjrÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¶hjoÁ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 ”…”�”}”(hj=Âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjEÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=ÂubhŒ to (”…”�”}”(hj=Âh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjWÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=ÂubhŒ + ”…”�”}”(hj=Âh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjiÂ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Œ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.”…”�”}”(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_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”…”�”}”(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.atomic_fetch_add_unless”†”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)�”}”(hj|h]”hŒv”…”�”}”(hj…Ãh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCÃ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)�”}”(hŒa”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_fetch_add_unless() there. **Return** The original 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Œ$``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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÉhjRÄubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(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Œ``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ÊhjOÄ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Ë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Œ—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”…”�”}”(hj5Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÅubhŒ), 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Œ**a**”h]”hŒa”…”�”}”(hjkÅ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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÌhj3Ä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Ïhj3ÄubjM)�”}”(hŒ **Return**”h]”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Ñhj3Ä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Òhj3Ä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”…”�”}”(hj=Æh²hh³Nh´Nubah}”(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_unless”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjxÆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6Æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj2Æ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”ˆjjuh1j9hj2Æ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”ˆjjuh1j9hj2Æ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)�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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ÞhjAÇ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ßhjAÇ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à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Œ—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”…”�”}”(hj9Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ÈubhŒ to (”…”�”}”(hj Èh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjKÈ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”…”�”}”(hjoÈ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”…”�”}”(hj0É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”…”�”}”(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€)�”}”jsj2ÉsbŒc.atomic_inc_not_zero”†”asbuh1hhjHÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÉ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)�”}”(hj|h]”hŒv”…”�”}”(hjŠÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjDÉ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”…”�”}”(hj1Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-Êubah}”(h]”h ]”h"]”h$]”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 (”…”�”}”(hjEÊh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjMÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEÊubhŒ != 0), atomically updates ”…”�”}”(hjEÊh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj_Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEÊubhŒ to (”…”�”}”(hjEÊh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjqÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEÊubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hjEÊh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjƒÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEÊubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(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ÏÉ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Œ ”…”�”}”(hj2Ëh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Ëh²hh³j1Ëh´Mubhÿ)�”}”(hŒatomic_inc_unless_negative”h]”j)�”}”(hŒatomic_inc_unless_negative”h]”hŒatomic_inc_unless_negative”…”�”}”(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Œ (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€)�”}”jsjFËsbŒc.atomic_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)�”}”(hj|h]”hŒv”…”�”}”(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Œ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³j1Ë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Ž)�”}”(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´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 (”…”�”}”(hjYÌh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjaÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjYÌubhŒ >= 0), atomically updates ”…”�”}”(hjYÌh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjsÌ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Œ% + 1) with full 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³Œ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”…”�”}”(hj8Íh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj4Íh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÍh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4Íh²hh³jEÍh´Mubhÿ)�”}”(hŒatomic_dec_unless_positive”h]”j)�”}”(hŒatomic_dec_unless_positive”h]”hŒatomic_dec_unless_positive”…”�”}”(hjXÍh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTÍubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj4Íh²hh³jEÍ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€)�”}”jsjZÍsbŒc.atomic_dec_unless_positive”†”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)�”}”(hj|h]”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&]”jjuh1j3hj4Íh²hh³jEÍh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj0Íh²hh³jEÍh´Mubah}”(h]”j+Íah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jEÍ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³jEÍ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”…”�”}”(hj5Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j1Îh´Mhj2Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j1Îh´MhjÎ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´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”…”�”}”(hj‡Î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Œ% - 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_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”…”�”}”(hjLÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjHÏ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&]”uh1jPhjHÏh²hh³jZÏh´M+ubhÿ)�”}”(hŒatomic_dec_if_positive”h]”j)�”}”(hŒatomic_dec_if_positive”h]”hŒatomic_dec_if_positive”…”�”}”(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Œ (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€)�”}”jsjoÏsbŒc.atomic_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)�”}”(hj|h]”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Ï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 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&]”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„)�”}”(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)�”}”(hj1Ðh]”hŒ atomic_t *v”…”�”}”(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Œpointer to atomic_t”h]”hŒpointer to atomic_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(Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ÐubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjlÐh]”hŒ Description”…”�”}”(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.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³Œ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”…”�”}”(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_read”sbŒc.atomic64_read”†”asbuh1hhjOÑ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&]”uh1jPhjOÑh²hh³jwÑh´M>ubhÿ)�”}”(hŒ atomic64_read”h]”j)�”}”(hjtÑh]”hŒ atomic64_read”…”�”}”(hjŠÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†Ñubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjOÑh²hh³jwÑ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}]”jrÑŒ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)�”}”(hj|h]”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³jwÑh´M>ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjKÑh²hh³jwÑh´M>ubah}”(h]”jFÑah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jwÑh´M>hjHÑ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&]”uh1j3hjHÑh²hh³jwÑh´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. Unsafe to use in noinstr code; use raw_atomic64_read() there. **Return** The value loaded from **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´MBhjAÒubj¤)�”}”(hhh]”j©)�”}”(hŒ.``const atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``const atomic64_t *v``”h]”jS)�”}”(hjfÒh]”hŒconst atomic64_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 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£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´MAhjAÒ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@hjAÒ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´MBhjAÒubjM)�”}”(hŒ **Return**”h]”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´MDhjAÒ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´MEhjAÒ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”…”�”}”(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Œatomic64_read_acquire”sbŒc.atomic64_read_acquire”†”asbuh1hhj<Óh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj<Óh²hh³jdÓh´MOubhÿ)�”}”(hŒatomic64_read_acquire”h]”j)�”}”(hjaÓh]”hŒatomic64_read_acquire”…”�”}”(hjwÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsÓubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj<Óh²hh³jdÓ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}]”j_ÓŒ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)�”}”(hj|h]”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³jdÓh´MOubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj8Óh²hh³jdÓh´MOubah}”(h]”j3Óah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jdÓh´MOhj5Ó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&]”uh1j3hj5Óh²hh³jdÓ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Ž)�”}”(hj4Ôh]”hŒ Parameters”…”�”}”(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´MShj.Ôubj¤)�”}”(hhh]”j©)�”}”(hŒ.``const atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``const atomic64_t *v``”h]”jS)�”}”(hjSÔh]”hŒconst 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´MPhjMÔ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´MPhjiÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjMÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jhÔh´MPhjJÔ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Œ ”…”�”}”(hj<Õ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”…”�”}”(hjNÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJÕ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”…”�”}”(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€)�”}”jsjPÕsbŒc.atomic64_set”†”asbuh1hhjfÕubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfÕubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj›Õh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjfÕubj)�”}”(hj|h]”hŒv”…”�”}”(hj¨Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjbÕ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”ˆjjuh1j9hjbÕ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&]”jFjAjGj0ÖjHj0Ö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”…”�”}”(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´Mdhj4Öubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjYÖh]”hŒ atomic64_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´MahjSÖubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjrÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jnÖh´MahjoÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjSÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jnÖh´MahjPÖ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´MbhjPÖ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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mdhj4Ö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´Mchj4ÖubjM)�”}”(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Œs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(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Œ(``atomic64_t *v`` pointer to atomic64_t ”•Oh]”(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´M?hjoó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È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³Œ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Œ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 ”…”�”}”(hj2ôh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj:ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ôubhŒ.”…”�”}”(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´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”…”�”}”(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_acquire”sbŒc.atomic64_sub_return_acquire”†”asbuh1hhjoô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&]”uh1jPhjoô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þhjoô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)�”}”(hj|h]”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&]”jjuh1j3hjoôh²hh³j—ôh´MPubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjkôh²hh³j—ôh´MPubah}”(h]”jfôah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j—ôh´MPhjhôh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract 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´MPhjnõh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjhô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 ”…”�”}”(hj<öh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjDöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<öubhŒ to (”…”�”}”(hj<öh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjVö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´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.”…”�”}”(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�õubjM)�”}”(hŒ **Return**”h]”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”…”�”}”(hj>÷h²hh³Nh´Nubah}”(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_release”†”asbuh1hhj7÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7÷ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjj÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3÷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_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Œv”…”�”}”(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´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”…”�”}”(hjAø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Œ(``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´Mdhj[ø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´Mdhjwøubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj[øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jvø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”…”�”}”(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_sub_return_relaxed”sbŒc.atomic64_sub_return_relaxed”†”asbuh1hhj[ù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&]”uh1jPhj[ùh²hh³jƒùh´Muubhÿ)�”}”(hŒatomic64_sub_return_relaxed”h]”j)�”}”(hj€ùh]”hŒatomic64_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Œ(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_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.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)�”}”(hj|h]”hŒv”…”�”}”(hj4ú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'hjWùh²hh³jƒùh´Muubah}”(h]”jRùah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jƒùh´MuhjTù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´MuhjZúh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjTùh²hh³jƒùh´Muubeh}”(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 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Ž)�”}”(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´Myhjyú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£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´Myhjyú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”…”�”}”(hj0ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(ûubhŒ to (”…”�”}”(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´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjTû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´Mxhjyú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.”…”�”}”(hjmûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MzhjyúubjM)�”}”(hŒ **Return**”h]”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 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}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 (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Œ ”…”�”}”(hjHüh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj#üubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjVü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”…”�”}”(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.atomic64_fetch_sub”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjªüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjjü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)�”}”(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´M‰hjGý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´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Œ?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”…”�”}”(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€)�”}”jsŒatomic64_fetch_sub_acquire”sbŒc.atomic64_fetch_sub_acquire”†”asbuh1hhjGþ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&]”uh1jPhjGþh²hh³joþh´Mšubhÿ)�”}”(hŒatomic64_fetch_sub_acquire”h]”j)�”}”(hjlþh]”hŒatomic64_fetch_sub_acquire”…”�”}”(hj‚þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~þubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjGþh²hh³joþ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}]”jjþŒ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}]”jjþŒ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)�”}”(hj|h]”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³joþh´Mšubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjCþ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Œ%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´MšhjFÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj@þh²hh³joþh´Mšubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjaÿjHjaÿ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Ž)�”}”(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´Mžhjeÿ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£hjeÿubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjþÿh]”hŒ Description”…”�”}”(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žhjeÿ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”…”�”}”(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´M�hjeÿ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.”…”�”}”(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ŸhjeÿubjM)�”}”(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¡hjeÿ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¢hjeÿ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”…”�”}”(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.atomic64_fetch_sub_release”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjBh²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”…”�”}”(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àŒc.atomic64_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)�”}”(hj|h]”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&]”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)�”}”(hjh]”hŒs64 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´M­hjúubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj9h]”hŒ atomic64_t *v”…”�”}”(hj;h²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´M®hj3ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(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³Œ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&]”uh1jhj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j<Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_sub_relaxed”sbŒc.atomic64_fetch_sub_relaxed”†”asbuh1hhj3h²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&]”uh1jPhj3h²hh³j[h´M¿ubhÿ)�”}”(hŒatomic64_fetch_sub_relaxed”h]”j)�”}”(hjXh]”hŒatomic64_fetch_sub_relaxed”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjjubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj3h²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}]”jVŒ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Œ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}]”jVŒ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)�”}”(hj|h]”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&]”jjuh1j3hj3h²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”…”�”}”(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¿hj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj,h²hh³j[h´M¿ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjMjHjMjI‰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Ž)�”}”(hjWh]”hŒ Parameters”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÃhjQubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjvh]”hŒs64 i”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjtubah}”(h]”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ÀhjpubjÉ)�”}”(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Èhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‹h´MÀhjmubj©)�”}”(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Áhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjQubjM)�”}”(hŒ**Description**”h]”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ÃhjQubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) 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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ - ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ) with relaxed 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ÂhjQubjM)�”}”(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.”…”�”}”(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ÄhjQubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjVh]”hŒReturn”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÆhjQubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(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´MÇhjQubeh}”(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Œ ”…”�”}”(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)�”}”(hj|h]”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”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÑhjNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¢h²hh³j»h´MÑubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjijHjijI‰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Ž)�”}”(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Œ(``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£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Œ>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ÓhjmubjM)�”}”(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”…”�”}”(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_inc_return_release”sbŒc.atomic64_inc_return_release”†”asbuh1hhj0 h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0 h²hh³jX h´Mubhÿ)�”}”(hŒatomic64_inc_return_release”h]”j)�”}”(hjU h]”hŒatomic64_inc_return_release”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0 h²hh³jX 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}]”jS Œc.atomic64_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)�”}”(hj|h]”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´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj, 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Œ&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³jX 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”…”�”}”(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# ubah}”(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´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Œ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Œ ”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj h²hh³j< h´Mubhÿ)�”}”(hŒatomic64_inc_return_relaxed”h]”j)�”}”(hj9 h]”hŒatomic64_inc_return_relaxed”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK 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”…”�”}”(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}]”j7 Œc.atomic64_inc_return_relaxed”†”asbuh1hhjf ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjf ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjf ubj)�”}”(hj|h]”hŒv”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjb 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 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³j< 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”…”�”}”(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´Mhjubah}”(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³Œ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 ”…”�”}”(hjah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaubhŒ to (”…”�”}”(hjah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaubhŒ + 1) with relaxed ordering.”…”�”}”(hjah²hh³Nh´Nubeh}”(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Œ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjøh²hh³j h´M(ubhÿ)�”}”(hŒatomic64_fetch_inc”h]”j)�”}”(hjh]”hŒatomic64_fetch_inc”…”�”}”(hj3h²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”…”�”}”(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_inc”†”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)�”}”(hj|h]”hŒv”…”�”}”(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´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³Œ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_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”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-ubah}”(h]”h ]”h"]”h$]”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 ”…”�”}”(hjEh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEubhŒ to (”…”�”}”(hjEh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEubhŒ + 1) with full ordering.”…”�”}”(hjEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”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.”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”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_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Œ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜh²hh³jh´M:ubhÿ)�”}”(hŒatomic64_fetch_inc_acquire”h]”j)�”}”(hjh]”hŒatomic64_fetch_inc_acquire”…”�”}”(hjh²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”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j7Œmodname”NŒ classname”Njwjz)�”}”j}]”jÿŒc.atomic64_fetch_inc_acquire”†”asbuh1hhj.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²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)�”}”(hj|h]”hŒv”…”�”}”(hjnh²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 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³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 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”…”�”}”(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Œ>Atomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hj)h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)ubhŒ to (”…”�”}”(hj)h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjCh²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_inc_acquire() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_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´M>hj³ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjmh]”hŒReturn”…”�”}”(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´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´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”…”�”}”(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.atomic64_fetch_inc_release”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²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)�”}”(hj|h]”hŒv”…”�”}”(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´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”…”�”}”(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´MKhjxh²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 ”…”�”}”(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”…”�”}”(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´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.”…”�”}”(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—ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjQh]”hŒReturn”…”�”}”(hjSh²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´MQhj—ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjgh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgubhŒ.”…”�”}”(hjgh²hh³Nh´Nubeh}”(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Œ*”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjöubj)�”}”(hj|h]”hŒv”…”�”}”(hj6h²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”…”�”}”(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&]”jFjAjGjwjHjwjI‰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Ž)�”}”(hj�h]”hŒ Parameters”…”�”}”(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´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³Œ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 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Œ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.”…”�”}”(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{ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj5h]”hŒReturn”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3ubah}”(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ŒThe original value of **v**.”h]”(hŒThe original 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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éŒ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)�”}”(hj|h]”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´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj„h²hh³jšh´Mnubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jšh´Mnhj�h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj0h²hh³Nh´Nubah}”(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&]”uh1j3hj�h²hh³jšh´Mnubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjHjHjHjI‰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Ž)�”}”(hjRh]”hŒ Parameters”…”�”}”(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´MrhjLubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjqh]”hŒ atomic64_t *v”…”�”}”(hjsh²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´MohjkubjÉ)�”}”(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Èhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j†h´Mohjhubah}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MqhjLubjM)�”}”(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´MphjLubjM)�”}”(hŒah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³joh´Mhj@h²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic decrement with full ordering”h]”hŒ#atomic decrement with full ordering”…”�”}”(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ÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj@h²hh³joh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰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_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ƒhjubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjCh]”hŒ atomic64_t *v”…”�”}”(hjEh²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€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³jXh´M€hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jXh´M€hj:ubah}”(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´M‚hjubjM)�”}”(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�hjubjM)�”}”(hŒCUnsafe to use in noinstr code; use raw_atomic64_dec_return() there.”h]”hŒCUnsafe to use in noinstr code; use raw_atomic64_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ƒ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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M…hjubjM)�”}”(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†hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic64_dec_return_acquire (C function)”Œc.atomic64_dec_return_acquire”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/s64 atomic64_dec_return_acquire (atomic64_t *v)”h]”hù)�”}”(hŒ.s64 atomic64_dec_return_acquire(atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj2h²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€)�”}”jsŒatomic64_dec_return_acquire”sbŒc.atomic64_dec_return_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Œ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+h²hh³jSh´M‘ubhÿ)�”}”(hŒatomic64_dec_return_acquire”h]”j)�”}”(hjPh]”hŒatomic64_dec_return_acquire”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj+h²hh³jSh´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}]”jNŒc.atomic64_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)�”}”(hj|h]”hŒv”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjyubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj+h²hh³jSh´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj'h²hh³jSh´M‘ubah}”(h]”j"ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jSh´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³Œ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³jSh´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_dec_return_acquire() there. **Return** The updated value of **v**.”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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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³Œ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’hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjbh]”hŒ Description”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M”hjubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjxh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxubhŒ to (”…”�”}”(hjxh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxubhŒ - 1) with acquire ordering.”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M“hjubjM)�”}”(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•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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M—hjubjM)�”}”(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˜hjubeh}”(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”…”�”}”(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Œ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Œ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j7h´M¢ubhÿ)�”}”(hŒatomic64_dec_return_release”h]”j)�”}”(hj4h]”hŒatomic64_dec_return_release”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j7h´M¢ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(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}]”j2Œc.atomic64_dec_return_release”†”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)�”}”(hj|h]”hŒv”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj]ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²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 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&]”uh1j3hjh²hh³j7h´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”…”�”}”(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 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Èhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j h´M£hjubah}”(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Œ>Atomically updates **v** to (**v** - 1) 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Œ - 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¤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)�”}”(hjh]”hŒatomic64_dec_return_relaxed”…”�”}”(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”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jNŒmodname”NŒ classname”Njwjz)�”}”j}]”jŒc.atomic64_dec_return_relaxed”†”asbuh1hhjEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjEubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjEubj)�”}”(hj|h]”hŒv”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjAubah}”(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”…”�”}”(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³Œ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”…”�”}”(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 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Œ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.”…”�”}”(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¸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_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”…”�”}”(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úŒc.atomic64_fetch_dec”†”asbuh1hhj) ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”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Œv”…”�”}”(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´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”…”�”}”(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Œ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.”…”�”}”(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Ž)�”}”(hjh!h]”hŒReturn”…”�”}”(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Œ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_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Œ ”…”�”}”(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)�”}”(hj|h]”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´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”…”�”}”(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×hjs"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Ž)�”}”(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Ýhj’"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´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)�”}”(hj|h]”hŒv”…”�”}”(hj1$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”…”�”}”(hjZ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MèhjW$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj˜#h²hh³jÇ#h´Mèubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjr$jHjr$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Ž)�”}”(hj|$h]”hŒ Parameters”…”�”}”(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ìhjv$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£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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mëhjv$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êhjv$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ìhjv$ubjM)�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mîhjv$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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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éŒ'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”†”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_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þ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_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)�”}”(hj|h]”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 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&]”jFjAjGjV&jHjV&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Ž)�”}”(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´MþhjZ&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ûhjy&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Èhjy&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”&h´Mûhjv&ubah}”(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´MýhjZ&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ühjZ&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þhjZ&ubjM)�”}”(hŒ **Return**”h]”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 hjZ&ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(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´Nubeh}”(h]”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éŒ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”…”�”}”(hjk'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjg'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Œ ”…”�”}”(hjz'h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjg'h²hh³jy'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þhjg'h²hh³jy'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)�”}”(hj|h]”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´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Œ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed 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´M hjS(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj`'h²hh³jy'h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjn(jHjn(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Ž)�”}”(hjx(h]”hŒ Parameters”…”�”}”(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 hjr(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£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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjr(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”…”�”}”(hjM)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 hjr(ubjM)�”}”(hŒ2h]”hŒ Parameters”…”�”}”(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 hj82ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj]2h]”hŒs64 i”…”�”}”(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´MV hjW2ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjv2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jr2h´MV hjs2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjW2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jr2h´MV hjT2ubj©)�”}”(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 hjT2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj82ubjM)�”}”(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 hj82ubjM)�”}”(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”…”�”}”(hj3h²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 hj82ubjM)�”}”(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 hj82ubjM)�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M\ hj82ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjS3h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj[3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjS3ubhŒ.”…”�”}”(hjS3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M] hj82ubeh}”(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”…”�”}”(hj4h²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”†”asbuh1hhj4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjI4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj4ubj)�”}”(hj|h]”hŒv”…”�”}”(hjV4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ubeh}”(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”…”�”}”(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´Mg hj|4h²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Ž)�”}”(hj45h]”hŒ Description”…”�”}”(hj65h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj25ubah}”(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 ”…”�”}”(hjJ5h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjR5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJ5ubhŒ to (”…”�”}”(hjJ5h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjd5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJ5ubhŒ & ”…”�”}”(hjJ5h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hjv5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJ5ubhŒ) with relaxed ordering.”…”�”}”(hjJ5h²hh³Nh´Nubeh}”(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 6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjá5h²hh³j 6h´My ubhÿ)�”}”(hŒatomic64_fetch_andnot”h]”j)�”}”(hj6h]”hŒatomic64_fetch_andnot”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjá5h²hh³j 6h´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&]”uh1jhj76ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j<6Œmodname”NŒ classname”Njwjz)�”}”j}]”j6Œc.atomic64_fetch_andnot”†”asbuh1hhj36ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj36ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjf6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj36ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj/6ubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_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}]”j6Œc.atomic64_fetch_andnot”†”asbuh1hhjz6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjz6ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj­6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjz6ubj)�”}”(hj|h]”hŒv”…”�”}”(hjº6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj/6ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjá5h²hh³j 6h´My ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÝ5h²hh³j 6h´My ubah}”(h]”jØ5ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j 6h´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 6h´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Ž)�”}”(hj7h]”hŒ Parameters”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7ubah}”(h]”h ]”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)�”}”(hj$7h]”hŒs64 i”…”�”}”(hj&7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj"7ubah}”(h]”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”…”�”}”(hj=7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j97h´Mz hj:7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j97h´Mz hj7ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj]7h]”hŒ atomic64_t *v”…”�”}”(hj_7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj[7ubah}”(h]”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{ hjW7ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjv7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jr7h´M{ hjs7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjW7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jr7h´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Ž)�”}”(hj8h]”hŒReturn”…”�”}”(hj8h²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ÿ6ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj8h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj"8h²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”…”�”}”(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€)�”}”jsŒatomic64_fetch_andnot_acquire”sbŒc.atomic64_fetch_andnot_acquire”†”asbuh1hhjW8h²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€8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjW8h²hh³j8h´MŒ ubhÿ)�”}”(hŒatomic64_fetch_andnot_acquire”h]”j)�”}”(hj|8h]”hŒatomic64_fetch_andnot_acquire”…”�”}”(hj’8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ8ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjW8h²hh³j8h´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}]”jz8Œ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}]”jz8Œc.atomic64_fetch_andnot_acquire”†”asbuh1hhjð8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjð8ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj#9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjð8ubj)�”}”(hj|h]”hŒv”…”�”}”(hj09h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjð8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¥8ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjW8h²hh³j8h´MŒ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjS8h²hh³j8h´MŒ ubah}”(h]”jN8ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j8h´MŒ hjP8h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with acquire ordering”h]”hŒ,atomic bitwise AND NOT with acquire ordering”…”�”}”(hjY9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŒ hjV9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjP8h²hh³j8h´MŒ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjq9jHjq9jI‰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Ž)�”}”(hj{9h]”hŒ Parameters”…”�”}”(hj}9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M� hju9ubj¤)�”}”(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£hju9ubjM)�”}”(hŒ**Description**”h]”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� hju9ubjM)�”}”(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”…”�”}”(hjP: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� hju9ubjM)�”}”(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.”…”�”}”(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‘ hju9ubjM)�”}”(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“ hju9ubjM)�”}”(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” hju9ubeh}”(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Œ ”…”�”}”(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”…”�”}”(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.atomic64_fetch_andnot_release”†”asbuh1hhjf;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹;h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjf;ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj™;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjf;ubj)�”}”(hj|h]”hŒv”…”�”}”(hj¦;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf;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)�”}”(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”…”�”}”(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<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 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”…”�”}”(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_fetch_andnot_relaxed”sbŒc.atomic64_fetch_andnot_relaxed”†”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_fetch_andnot_relaxed”h]”j)�”}”(hjh=h]”hŒatomic64_fetch_andnot_relaxed”…”�”}”(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Œ(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}]”jf=Œ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}]”jf=Œ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)�”}”(hj|h]”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³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 bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed 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´M± hjB>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj<=h²hh³jk=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. 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Ž)�”}”(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´Mµ hja>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£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´Mµ hja>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”…”�”}”(hjubjM)�”}”(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.”…”�”}”(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´M¶ hja>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³Œ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éŒ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”…”�”}”(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.atomic64_or”†”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)�”}”(hj|h]”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 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”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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"Ah]”hŒ atomic64_t *v”…”�”}”(hj$Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj Aubah}”(h]”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³j7Ah´MÅ hj8Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j7Ah´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�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ŒBAtomically updates **v** to (**v** | **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjsAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj{Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsAubhŒ to (”…”�”}”(hjsAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsAubhŒ | ”…”�”}”(hjsAh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjŸAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsAubhŒ) with relaxed ordering.”…”�”}”(hjsAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”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 Bh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÕ ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Bh²hh³j2Bh´MÕ ubhÿ)�”}”(hŒatomic64_fetch_or”h]”j)�”}”(hj/Bh]”hŒatomic64_fetch_or”…”�”}”(hjEBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjABubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj Bh²hh³j2Bh´MÕ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjcBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jeBŒ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Œi”…”�”}”(hj�Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjXBubj:)�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(hjãBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjXBubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj Bh²hh³j2Bh´MÕ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjBh²hh³j2Bh´MÕ ubah}”(h]”jBah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j2Bh´MÕ hjBh²hubj4)�”}”(hhh]”jM)�”}”(hŒ$atomic bitwise OR with full ordering”h]”hŒ$atomic bitwise OR with full ordering”…”�”}”(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 Ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjBh²hh³j2Bh´MÕ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj$CjHj$CjI‰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”…”�”}”(hj0Ch²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(Cubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjMCh]”hŒs64 i”…”�”}”(hjOCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjKCubah}”(h]”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Ö hjGCubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjfCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jbCh´MÖ hjcCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjGCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jbCh´MÖ hjDCubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj†Ch]”hŒ atomic64_t *v”…”�”}”(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Œ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Èhj€Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›Ch´M× hjDCubeh}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÙ hj(CubjM)�”}”(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”…”�”}”(hjDh²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Ø hj(CubjM)�”}”(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Ú hj(CubjM)�”}”(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(CubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjCDh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjKDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCDubhŒ.”…”�”}”(hjCDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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éŒ&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&]”uh1jhj„Dubah}”(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”†”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_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þhj€Dh²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”…”�”}”(hjEh²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”…”�”}”(hj Eh²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_fetch_or_acquire”†”asbuh1hhjEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjEubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjLEh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjEubj)�”}”(hj|h]”hŒv”…”�”}”(hjYEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEubeh}”(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]”jwDah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¨Dh´Mè hjyDh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with acquire ordering”h]”hŒ'atomic bitwise OR 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è hjEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjyDh²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”…”�”}”(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ºEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjžEubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj7Fh]”hŒ Description”…”�”}”(hj9Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5Fubah}”(h]”h ]”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 ”…”�”}”(hjMFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjUFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMFubhŒ to (”…”�”}”(hjMFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjgFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMFubhŒ | ”…”�”}”(hjMFh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjyFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMFubhŒ) with acquire ordering.”…”�”}”(hjMFh²hh³Nh´Nubeh}”(h]”h ]”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”…”�”}”(hj1Gh²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”…”�”}”(hjOGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jQGŒmodname”NŒ classname”Njwjz)�”}”j}]”jGŒc.atomic64_fetch_or_release”†”asbuh1hhjHGubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmGh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjHGubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj{Gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjDGubj:)�”}”(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”j˜GŒmodname”NŒ classname”Njwjz)�”}”j}]”jGŒc.atomic64_fetch_or_release”†”asbuh1hhj�GubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Gh²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)�”}”(hj|h]”hŒv”…”�”}”(hjÏGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjDGubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjöFh²hh³jGh´Mú ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjòFh²hh³jGh´Mú ubah}”(h]”jíFah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jGh´Mú hjïFh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with release ordering”h]”hŒ'atomic bitwise OR with release 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³jGh´Mú ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjHjHjHjI‰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_or_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjHh]”hŒ Parameters”…”�”}”(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þ hjHubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj9Hh]”hŒs64 i”…”�”}”(hj;Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj7Hubah}”(h]”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û hj3HubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjRHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jNHh´Mû hjOHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj3Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jNHh´Mû hj0Hubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjrHh]”hŒ atomic64_t *v”…”�”}”(hjtHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjpHubah}”(h]”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ü hjlHubjÉ)�”}”(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´Mü hjˆHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjlHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‡Hh´Mü hj0Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjHubjM)�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mþ hjHubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with release 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ÝHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÃHubhŒ | ”…”�”}”(hjÃHh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjïHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÃHubhŒ) with release 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ý hjHubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic64_fetch_or_release() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic64_fetch_or_release() there.”…”�”}”(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ÿ hjHubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjIh]”hŒReturn”…”�”}”(hjIh²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 hjHubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj/Ih²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj7Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/IubhŒ.”…”�”}”(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 hjHubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ&atomic64_fetch_or_relaxed (C function)”Œc.atomic64_fetch_or_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4s64 atomic64_fetch_or_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ3s64 atomic64_fetch_or_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjsIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjpIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”juIŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_fetch_or_relaxed”sbŒc.atomic64_fetch_or_relaxed”†”asbuh1hhjlIh²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•Ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjlIh²hh³j”Ih´M ubhÿ)�”}”(hŒatomic64_fetch_or_relaxed”h]”j)�”}”(hj‘Ih]”hŒatomic64_fetch_or_relaxed”…”�”}”(hj§Ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj£Iubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjlIh²hh³j”Ih´M ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”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�IŒc.atomic64_fetch_or_relaxed”†”asbuh1hhj¾IubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãIh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¾Iubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjñIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¾Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjºIubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jJŒmodname”NŒ classname”Njwjz)�”}”j}]”j�IŒc.atomic64_fetch_or_relaxed”†”asbuh1hhjJubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Jh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj8Jh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjJubj)�”}”(hj|h]”hŒv”…”�”}”(hjEJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjºIubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjlIh²hh³j”Ih´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjhIh²hh³j”Ih´M ubah}”(h]”jcIah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j”Ih´M hjeIh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with relaxed ordering”h]”hŒ'atomic bitwise OR with relaxed ordering”…”�”}”(hjnJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjkJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjeIh²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** ``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_or_relaxed() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj�Jh]”hŒ Parameters”…”�”}”(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 hjŠJubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hj¯Jh]”hŒs64 i”…”�”}”(hj±Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj­Jubah}”(h]”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©JubjÉ•)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjÈJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÄJh´M hjÅJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj©Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÄJh´M hj¦Jubj©)�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjâJubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jýJh´M hjþJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjâJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jýJh´M hj¦Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjŠJubjM)�”}”(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 hjŠJubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj9Kh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjAKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9KubhŒ to (”…”�”}”(hj9Kh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjSKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9KubhŒ | ”…”�”}”(hj9Kh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjeKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9KubhŒ) with relaxed ordering.”…”�”}”(hj9Kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjŠJubjM)�”}”(hŒIUnsafe to use in noinstr code; use raw_atomic64_fetch_or_relaxed() there.”h]”hŒIUnsafe to use in noinstr code; use raw_atomic64_fetch_or_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 hjŠJubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj�Kh]”hŒReturn”…”�”}”(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 hjŠJubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj¥Kh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj­Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥KubhŒ.”…”�”}”(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 hjŠJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒatomic64_xor (C function)”Œc.atomic64_xor”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ(void atomic64_xor (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ'void atomic64_xor(s64 i, atomic64_t *v)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjæKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjâKh²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õKh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjâKh²hh³jôKh´M ubhÿ)�”}”(hŒ atomic64_xor”h]”j)�”}”(hŒ atomic64_xor”h]”hŒ atomic64_xor”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjâKh²hh³jôKh´M ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(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.atomic64_xor”†”asbuh1hhjLubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFLh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjLubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjTLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjLubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjoLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jqLŒmodname”NŒ classname”Njwjz)�”}”j}]”jBLŒc.atomic64_xor”†”asbuh1hhjhLubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Lh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjhLubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj›Lh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjhLubj)�”}”(hj|h]”hŒv”…”�”}”(hj¨Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjLubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjâKh²hh³jôKh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÞKh²hh³jôKh´M ubah}”(h]”jÙKah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jôKh´M hjÛKh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(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´M hjÎLh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÛKh²hh³jôKh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjéLjHjéLjI‰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_xor() there. **Return** Nothing.”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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M# hjíLubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjMh]”hŒs64 i”…”�”}”(hjMh²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 hj MubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(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 Mubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjKMh]”hŒ atomic64_t *v”…”�”}”(hjMMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjIMubah}”(h]”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! hjEMubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjdMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`Mh´M! hjaMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjEMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`Mh´M! hj Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjíLubjM)�”}”(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´M# hjíLubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with relaxed 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Œ ^ ”…”�”}”(hjœMh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjÈMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœMubhŒ) with relaxed 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´M" hjíLubjM)�”}”(hŒRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j:Rh´MF hj;Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j:Rh´MF hjãQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÇQubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj`Rh]”hŒ Description”…”�”}”(hjbRh²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´MH hjÇQubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjvRh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj~Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvRubhŒ to (”…”�”}”(hjvRh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvRubhŒ ^ ”…”�”}”(hjvRh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¢Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvRubhŒ) with acquire ordering.”…”�”}”(hjvRh²hh³Nh´Nubeh}”(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ÇQubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_xor_acquire() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_xor_acquire() 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´MI 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MK hjÇQubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´ML hjÇQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_xor_release (C function)”Œc.atomic64_fetch_xor_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_xor_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_xor_release(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(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€)�”}”jsŒatomic64_fetch_xor_release”sbŒc.atomic64_fetch_xor_release”†”asbuh1hhjSh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MV ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHSh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjSh²hh³jGSh´MV ubhÿ)�”}”(hŒatomic64_fetch_xor_release”h]”j)�”}”(hjDSh]”hŒatomic64_fetch_xor_release”…”�”}”(hjZSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVSubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjSh²hh³jGSh´MV ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjxSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jzSŒmodname”NŒ classname”Njwjz)�”}”j}]”jBSŒc.atomic64_fetch_xor_release”†”asbuh1hhjqSubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Sh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjqSubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj¤Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjmSubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_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}]”jBSŒc.atomic64_fetch_xor_release”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjøSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¸Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjmSubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjSh²hh³jGSh´MV ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjSh²hh³jGSh´MV ubah}”(h]”jSah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jGSh´MV hjSh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with release ordering”h]”hŒ(atomic bitwise XOR with release 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´MV hjTh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjSh²hh³jGSh´MV ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj9TjHj9TjI‰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_xor_release() there. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjCTh]”hŒ Parameters”…”�”}”(hjETh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjATubah}”(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=Tubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjbTh]”hŒs64 i”…”�”}”(hjdTh²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´MW hj\TubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hj{Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jwTh´MW hjxTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj\Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jwTh´MW hjYTubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj›Th]”hŒ atomic64_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´MX hj•TubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj´Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j°Th´MX hj±Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj•Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j°Th´MX hjYTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj=TubjM)�”}”(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´MZ hj=TubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with release 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”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjìTubhŒ ^ ”…”�”}”(hjìTh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjìTubhŒ) with release 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´MY hj=TubjM)�”}”(hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_xor_release() there.”h]”hŒJUnsafe to use in noinstr code; use raw_atomic64_fetch_xor_release() there.”…”�”}”(hj1Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M[ hj=TubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjBUh]”hŒReturn”…”�”}”(hjDUh²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] hj=TubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjXUh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXUubhŒ.”…”�”}”(hjXUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M^ hj=Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ'atomic64_fetch_xor_relaxed (C function)”Œc.atomic64_fetch_xor_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ5s64 atomic64_fetch_xor_relaxed (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ4s64 atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(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€)�”}”jsŒatomic64_fetch_xor_relaxed”sbŒc.atomic64_fetch_xor_relaxed”†”asbuh1hhj•Uh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mi ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Uh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj•Uh²hh³j½Uh´Mi ubhÿ)�”}”(hŒatomic64_fetch_xor_relaxed”h]”j)�”}”(hjºUh]”hŒatomic64_fetch_xor_relaxed”…”�”}”(hjÐUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÌUubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj•Uh²hh³j½Uh´Mi ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(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¸UŒc.atomic64_fetch_xor_relaxed”†”asbuh1hhjçUubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjçUubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjãUubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj5Vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2Vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j7VŒmodname”NŒ classname”Njwjz)�”}”j}]”j¸UŒc.atomic64_fetch_xor_relaxed”†”asbuh1hhj.VubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSVh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj.Vubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjaVh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj.Vubj)�”}”(hj|h]”hŒv”…”�”}”(hjnVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj.Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjãUubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj•Uh²hh³j½Uh´Mi ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‘Uh²hh³j½Uh´Mi ubah}”(h]”jŒUah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j½Uh´Mi hjŽUh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed 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´Mi hj”Vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŽUh²hh³j½Uh´Mi ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj¯VjHj¯VjI‰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_xor_relaxed() there. **Return** The original 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´Mm hj³Vubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjØVh]”hŒs64 i”…”�”}”(hjÚVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÖVubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mj hjÒVubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjñVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jíVh´Mj hjîVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÒVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jíVh´Mj hjÏVubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjWh]”hŒ atomic64_t *v”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mk 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´Mk hj'Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j&Wh´Mk hjÏVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj³VubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjLWh]”hŒ Description”…”�”}”(hjNWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJWubah}”(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 ”…”�”}”(hjbWh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbWubhŒ to (”…”�”}”(hjbWh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbWubhŒ ^ ”…”�”}”(hjbWh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjŽWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbWubhŒ) with relaxed ordering.”…”�”}”(hjbWh²hh³Nh´Nubeh}”(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 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Œ ”…”�”}”(hj4Xh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Xh²hh³j3Xh´M{ ubhÿ)�”}”(hŒ atomic64_xchg”h]”j)�”}”(hj0Xh]”hŒ atomic64_xchg”…”�”}”(hjFXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBXubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj Xh²hh³j3Xh´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”…”�”}”(hjdXh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jfXŒ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”)�”}”(hj—h]”hŒ*”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj]Xubj)�”}”(hj|h]”hŒv”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjYXubj:)�”}”(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”ˆjjuh1j9hjYXubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj Xh²hh³j3Xh´M{ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjXh²hh³j3Xh´M{ ubah}”(h]”jXah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j3Xh´M{ hjXh²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 Yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjXh²hh³j3Xh´M{ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj&YjHj&YjI‰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Ž)�”}”(hj0Yh]”hŒ Parameters”…”�”}”(hj2Yh²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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjOYh]”hŒ atomic64_t *v”…”�”}”(hjQYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjMYubah}”(h]”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| hjIYubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjhYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jdYh´M| hjeYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjIYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jdYh´M| hjFYubj©)�”}”(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&]”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Œ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Èhj‚Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Yh´M} hjFYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj*YubjM)�”}”(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 hj*YubjM)�”}”(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~ hj*YubjM)�”}”(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.”…”�”}”(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Ž)�”}”(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‚ hj*YubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj3Zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj;Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3ZubhŒ.”…”�”}”(hj3Zh²hh³Nh´Nubeh}”(h]”h ]”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éŒ"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”…”�”}”(hjwZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jyZŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒatomic64_xchg_acquire”sbŒc.atomic64_xchg_acquire”†”asbuh1hhjpZh²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&]”uh1jPhjpZh²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þhjpZh²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)�”}”(hj|h]”hŒv”…”�”}”(hj[h²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”…”�”}”(hjI[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¾Zubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjpZh²hh³j˜Zh´MŽ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjlZh²hh³j˜Zh´MŽ ubah}”(h]”jgZah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j˜Zh´MŽ hjiZh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with acquire ordering”h]”hŒ%atomic exchange with acquire 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&]”uh1j3hjiZh²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 ”…”�”}”(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Œ**new**”h]”hŒnew”…”�”}”(hjX\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Œ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.”…”�”}”(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Ž)�”}”(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_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”j0]Œmodname”NŒ classname”Njwjz)�”}”j}]”jø\Œc.atomic64_xchg_release”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjg]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.atomic64_xchg_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´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”…”�”}”(hj2^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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)�”}”(hjR^h]”hŒs64 new”…”�”}”(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Œs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hjk^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jg^h´M¢ hjh^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjL^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jg^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”…”�”}”(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_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Œ ”…”�”}”(hjc_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:_h²hh³jb_h´M³ ubhÿ)�”}”(hŒatomic64_xchg_relaxed”h]”j)�”}”(hj__h]”hŒatomic64_xchg_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Œ(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_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)�”}”(hj|h]”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}]”j]_Œ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³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 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&]”uh1j3hj3_h²hh³jb_h´M³ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjU`jHjU`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Ž)�”}”(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Œ(``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´ hjx`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Èhjx`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j“`h´M´ hju`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µ 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Œ:Atomically updates **v** to **new** with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaubhŒ to ”…”�”}”(hjah²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj"ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”•h&]”uh1j�hjaubhŒ with relaxed ordering.”…”�”}”(hjah²hh³Nh´Nubeh}”(h]”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Œ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¸ hjY`ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjLah]”hŒReturn”…”�”}”(hjNah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJaubah}”(h]”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 ”…”�”}”(hjbah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbaubhŒ.”…”�”}”(hjbah²hh³Nh´Nubeh}”(h]”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_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Œ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjñaubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj$bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjñaubj)�”}”(hj|h]”hŒv”…”�”}”(hj1bh²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”…”�”}”(hjLbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jNbŒmodname”NŒ classname”Njwjz)�”}”j}]”jÂaŒc.atomic64_cmpxchg”†”asbuh1hhjEbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjbh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjEbubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjxbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEbubeh}”(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&]”jFjAjGjcjHjcjI‰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Ž)�”}”(hj ch]”hŒ Parameters”…”�”}”(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É hjcubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj+ch]”hŒ atomic64_t *v”…”�”}”(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Œpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjDch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@ch´MÆ hjAcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j@ch´MÆ hj"cubj©)�”}”(hŒ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hjdch]”hŒs64 old”…”�”}”(hjfch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbcubah}”(h]”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 compare with”h]”hŒs64 value to compare with”…”�”}”(hj}ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jych´MÇ hjzcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jych´MÇ hj"cubj©)�”}”(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È hj"cubeh}”(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Œ‘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”…”�”}”(hjdh²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”…”�”}”(hj>dh²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É hjcubjM)�”}”(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.”…”�”}”(hjWdh²hh³Nh´Nubah}”(h]”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Ž)�”}”(hjhdh]”hŒReturn”…”�”}”(hjjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfdubah}”(h]”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 ”…”�”}”(hj~dh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj†dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~dubhŒ.”…”�”}”(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Ï hjcubeh}”(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”jeŒmodname”NŒ classname”Njwjz)�”}”j}]”jÞdŒc.atomic64_cmpxchg_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)�”}”(hj|h]”hŒv”…”�”}”(hjMeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj eubj:)�”}”(hŒs64 old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjheh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jjeŒmodname”NŒ classname”Njwjz)�”}”j}]”jÞdŒc.atomic64_cmpxchg_acquire”†”asbuh1hhjaeubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†eh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaeubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj”eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj eubj:)�”}”(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 eubeh}”(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”…”�”}”(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Ú hjfh²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Ž)�”}”(hj(fh]”hŒ Parameters”…”�”}”(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"fubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjGfh]”hŒ atomic64_t *v”…”�”}”(hjIfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjEfubah}”(h]”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Û hjAfubjÉ)�”}”(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ÈhjAfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j\fh´MÛ hj>fubj©)�”}”(hŒ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hj€fh]”hŒs64 old”…”�”}”(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Ü hjzfubjÉ)�”}”(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Èhjzfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j•fh´MÜ hj>fubj©)�”}”(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Ý hj>fubeh}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mß hj"fubjM)�”}”(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 gh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj gubhŒ == ”…”�”}”(hj gh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj$gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj gubhŒ), atomically updates ”…”�”}”(hj gh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj6gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj gubhŒ to ”…”�”}”(hj gh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjHgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj gubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hj gh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj gubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÞ hj"fubjM)�”}”(hŒHUnsafe to use in noinstr code; use raw_atomic64_cmpxchg_acquire() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic64_cmpxchg_acquire() there.”…”�”}”(hjsgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Má hj"fubjM)�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mã hj"fubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(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´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mä hj"fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic64_cmpxchg_release (C function)”Œc.atomic64_cmpxchg_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>s64 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Œ ”…”�”}”(hjhh²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”…”�”}”(hj0hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j2hŒmodname”NŒ classname”Njwjz)�”}”j}]”júgŒc.atomic64_cmpxchg_release”†”asbuh1hhj)hubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNhh²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)�”}”(hj|h]”hŒv”…”�”}”(hjihh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj)hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj%hubj:)�”}”(hŒs64 old”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Œold”h]”hŒold”…”�”}”(hj°hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj%hubj:)�”}”(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”ˆjjuh1j9hj%hubeh}”(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”…”�”}”(hj"ih²hh³Nh´Nubah}”(h]”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Ž)�”}”(hjDih]”hŒ Parameters”…”�”}”(hjFih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBiubah}”(h]”h ]”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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjcih]”hŒ atomic64_t *v”…”�”}”(hjeih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjaiubah}”(h]”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 atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj|ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jxih´Mï hjyiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jxih´Mï hjZiubj©)�”}”(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ð hjZiubj©)�”}”(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ñ hjZiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj>iubjM)�”}”(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ó hj>iubjM)�”}”(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&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´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj@jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&jubhŒ), atomically updates ”…”�”}”(hj&jh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjRjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&jubhŒ to ”…”�”}”(hj&jh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjdjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&jubhŒ# with release ordering. Otherwise, ”…”�”}”(hj&jh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjvjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&jubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(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ò hj>iubjM)�”}”(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õ 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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³Œ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éŒ%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)�”}”(hjkh]”hŒatomic64_cmpxchg_relaxed”…”�”}”(hj.kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj*kubah}”(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”…”�”}”(hjLkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jNkŒmodname”NŒ classname”Njwjz)�”}”j}]”jkŒc.atomic64_cmpxchg_relaxed”†”asbuh1hhjEkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjEkubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjxkh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjEkubj)�”}”(hj|h]”hŒv”…”�”}”(hj…kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjAkubj:)�”}”(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}]”jkŒ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”ˆjjuh1j9hjAkubj:)�”}”(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}]”jkŒc.atomic64_cmpxchg_relaxed”†”asbuh1hhjá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”ˆjjuh1j9hjAkubeh}”(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”…”�”}”(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´M hj;lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjìjh²hh³jkh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjVljHjVljI‰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Ž)�”}”(hj`lh]”hŒ Parameters”…”�”}”(hjblh²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 hjZlubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjlh]”hŒ atomic64_t *v”…”�”}”(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 hjylubjÉ)�”}”(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Èhjylubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”lh´M hjvlubj©)�”}”(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 hjvlubj©)�”}”(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 mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmh´M hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjëlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmh´M hjvlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjZlubjM)�”}”(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´M hjZlubjM)�”}”(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 (”…”�”}”(hjBmh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBmubhŒ == ”…”�”}”(hjBmh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj\mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBmubhŒ), atomically updates ”…”�”}”(hjBmh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjnmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBmubhŒ to ”…”�”}”(hjBmh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj€mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBmubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hjBmh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj’mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBmubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjBmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M hjZlubjM)�”}”(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 hjZlubjM)�”}”(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 hjZlubjM)�”}”(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 hjZlubeh}”(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Œ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´M8 hj¶rubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjVth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRtubhŒ if the exchange occurred, ”…”�”}”(hjRth²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjhth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjRtubhŒ otherwise.”…”�”}”(hjRth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M9 hj¶rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)atomic64_try_cmpxchg_release (C function)”Œc.atomic64_try_cmpxchg_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDbool atomic64_try_cmpxchg_release (atomic64_t *v, s64 *old, s64 new)”h]”hù)�”}”(hŒCbool atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj¡th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj�th²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MD ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�th²hh³j®th´MD ubhÿ)�”}”(hŒatomic64_try_cmpxchg_release”h]”j)�”}”(hŒatomic64_try_cmpxchg_release”h]”hŒatomic64_try_cmpxchg_release”…”�”}”(hjÁth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½tubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj�th²hh³j®th´MD 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à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€)�”}”jsjÃtsbŒc.atomic64_try_cmpxchg_release”†”asbuh1hhjÙtubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÙtubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÙtubj)�”}”(hj|h]”hŒv”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÙtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÕtubj:)�”}”(hŒs64 *old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj6uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j8uŒmodname”NŒ classname”Njwjz)�”}”j}]”jütŒc.atomic64_try_cmpxchg_release”†”asbuh1hhj/uubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTuh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/uubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjbuh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj/uubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjouh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÕtubj:)�”}”(hŒs64 new”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(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ütŒc.atomic64_try_cmpxchg_release”†”asbuh1hhj„uubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©uh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj„uubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj·uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÕtubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj�th²hh³j®th´MD ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj™th²hh³j®th´MD ubah}”(h]”j”tah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j®th´MD hj–th²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release ordering”…”�”}”(hjáuh²hh³Nh´Nubah}”(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Þuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj–th²hh³j®th´MD 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 ``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. Unsafe to use in noinstr code; use raw_atomic64_try_cmpxchg_release() there. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjvh]”hŒ Parameters”…”�”}”(hjvh²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´MH hjýuubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj"vh]”hŒ atomic64_t *v”…”�”}”(hj$vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj vubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´ME hjvubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj;vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j7vh´ME hj8vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j7vh´ME hjvubj©)�”}”(hŒ2``s64 *old`` pointer to s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 *old``”h]”jS)�”}”(hj[vh]”hŒs64 *old”…”�”}”(hj]vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjYvubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MF hjUvubjÉ)�”}”(hhh]”jM)�”}”(hŒ$pointer to s64 value to compare with”h]”hŒ$pointer to s64 value to compare with”…”�”}”(hjtvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jpvh´MF hjqvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjUvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jpvh´MF hjvubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hj”vh]”hŒs64 new”…”�”}”(hj–vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj’vubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MG hjŽvubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to assign”h]”hŒs64 value to assign”…”�”}”(hj­vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j©vh´MG hjªvubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjŽvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j©vh´MG hjvubeh}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MI hjýuubjM)�”}”(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å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´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjÿvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåvubhŒ), atomically updates ”…”�”}”(hjåvh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåvubhŒ to ”…”�”}”(hjåvh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj#wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåvubhŒ# with release ordering. Otherwise, ”…”�”}”(hjåvh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj5wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåvubhŒ is not modified, ”…”�”}”(hjåvh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjGwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåvubhŒ$ is updated to the current value of ”…”�”}”(hjåvh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjYwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåvubhŒ#, and relaxed ordering is provided.”…”�”}”(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´MH hjýuubjM)�”}”(hŒLUnsafe to use in noinstr code; use raw_atomic64_try_cmpxchg_release() there.”h]”hŒLUnsafe to use in noinstr code; use raw_atomic64_try_cmpxchg_release() there.”…”�”}”(hjrwh²hh³Nh´Nubah}”(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ýuubjM)�”}”(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´MN hjýuubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj�wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™wubhŒ if the exchange occurred, ”…”�”}”(hj™wh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj¯wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™wubhŒ otherwise.”…”�”}”(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´MO hjýuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ)atomic64_try_cmpxchg_relaxed (C function)”Œc.atomic64_try_cmpxchg_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDbool atomic64_try_cmpxchg_relaxed (atomic64_t *v, s64 *old, s64 new)”h]”hù)�”}”(hŒCbool atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjèwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjä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öwh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjäwh²hh³jõwh´M[ ubhÿ)�”}”(hŒatomic64_try_cmpxchg_relaxed”h]”j)�”}”(hŒatomic64_try_cmpxchg_relaxed”h]”hŒatomic64_try_cmpxchg_relaxed”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjxubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjäwh²hh³jõwh´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'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€)�”}”jsj xsbŒc.atomic64_try_cmpxchg_relaxed”†”asbuh1hhj xubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGxh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj xubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjUxh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj xubj)�”}”(hj|h]”hŒv”…”�”}”(hjbxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjxubj:)�”}”(hŒs64 *old”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj}xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jxŒmodname”NŒ classname”Njwjz)�”}”j}]”jCxŒc.atomic64_try_cmpxchg_relaxed”†”asbuh1hhjvxubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›xh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjvxubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj©xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjvxubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj¶xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjvxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjxubj:)�”}”(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}]”jCxŒc.atomic64_try_cmpxchg_relaxed”†”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”ˆjjuh1j9hjxubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjäwh²hh³jõwh´M[ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjàwh²hh³jõwh´M[ ubah}”(h]”jÛwah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jõwh´M[ hjÝwh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with relaxed ordering”h]”hŒ1atomic compare and exchange with relaxed 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´M[ hj%yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÝwh²hh³jõwh´M[ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj@yjHj@yjI‰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. Unsafe to use in noinstr code; use raw_atomic64_try_cmpxchg_relaxed() there. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjJyh]”hŒ Parameters”…”�”}”(hjLyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHyubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M_ hjDyubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjiyh]”hŒ atomic64_t *v”…”�”}”(hjkyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgyubah}”(h]”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\ hjcyubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj‚yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~yh´M\ hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~yh´M\ hj`yubj©)�”}”(hŒ2``s64 *old`` pointer to s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 *old``”h]”jS)�”}”(hj¢yh]”hŒs64 *old”…”�”}”(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 s64 value to compare with”h]”hŒ$pointer to s64 value to compare with”…”�”}”(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Œ ``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&]”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Œ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ÈhjÕyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jðyh´M^ hj`yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjDyubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjzh]”hŒ Description”…”�”}”(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` hjDyubjM)�”}”(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,zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj4zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,zubhŒ == ”…”�”}”(hj,zh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjFzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,zubhŒ), atomically updates ”…”�”}”(hj,zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjXzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,zubhŒ to ”…”�”}”(hj,zh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,zubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hj,zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,zubhŒ is not modified, ”…”�”}”(hj,zh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjŽzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,zubhŒ$ is updated to the current 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Œ#, and relaxed ordering is provided.”…”�”}”(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_ hjDyubjM)�”}”(hŒLUnsafe to use in noinstr code; use raw_atomic64_try_cmpxchg_relaxed() there.”h]”hŒLUnsafe to use in noinstr code; use raw_atomic64_try_cmpxchg_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´Mc hjDyubjM)�”}”(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´Me hjDyubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjäzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjàzubhŒ if the exchange occurred, ”…”�”}”(hjàzh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjözh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjàzubhŒ otherwise.”…”�”}”(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´Mf hjDyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic64_sub_and_test (C function)”Œc.atomic64_sub_and_test”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool atomic64_sub_and_test (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ0bool 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mq ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj={h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj+{h²hh³j<{h´Mq ubhÿ)�”}”(hŒatomic64_sub_and_test”h]”j)�”}”(hŒatomic64_sub_and_test”h]”hŒatomic64_sub_and_test”…”�”}”(hjO{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK{ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj+{h²hh³j<{h´Mq ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”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€)�”}”jsjQ{sbŒc.atomic64_sub_and_test”†”asbuh1hhjg{ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjg{ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjœ{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjc{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_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Œv”…”�”}”(hjð{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjc{ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj+{h²hh³j<{h´Mq ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj'{h²hh³j<{h´Mq ubah}”(h]”j"{ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j<{h´Mq 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mq hj|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj${h²hh³j<{h´Mq ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj1|jHj1|jI‰jJ‰jK‰uh1híh²hhjºh³Nh´Nubj„)�”}”(hXI**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_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�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´Mu hj5|ubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”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´Mr hjT|ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(hjs|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jo|h´Mr hjp|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjT|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jo|h´Mr 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´Ms 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´Ms hj©|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¨|h´Ms 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´Mu 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´Mt hj5|ubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic64_sub_and_test() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic64_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´Mv 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´Mx hj5|ubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **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 zero, ”…”�”}”(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´My hj5|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic64_dec_and_test (C function)”Œc.atomic64_dec_and_test”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*bool atomic64_dec_and_test (atomic64_t *v)”h]”hù)�”}”(hŒ)bool 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³Œ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_dec_and_test”h]”j)�”}”(hŒatomic64_dec_and_test”h]”hŒ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.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)�”}”(hj|h]”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 decrement and test if zero with full ordering”h]”hŒ4atomic decrement and test if zero with full ordering”…”�”}”(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„ 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** ``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_dec_and_test() there. **Return** **true** if the resulting value of **v** is zero, **false** 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mˆ hjp~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£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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‡ hjp~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”…”�”}”(hjh²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† hjp~ubjM)�”}”(hŒEUnsafe to use in noinstr code; use raw_atomic64_dec_and_test() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic64_dec_and_test() 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ˆ 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠ hjp~ubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjDh²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”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@ubhŒ is zero, ”…”�”}”(hj@h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjhh²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‹ hjp~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ"atomic64_inc_and_test (C function)”Œc.atomic64_inc_and_test”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ*bool atomic64_inc_and_test (atomic64_t *v)”h]”hù)�”}”(hŒ)bool atomic64_inc_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³Œ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_and_test”h]”j)�”}”(hŒatomic64_inc_and_test”h]”hŒatomic64_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Œ(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_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Œ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”…”�”}”(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** ``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_inc_and_test() there. **Return** **true** if the resulting value of **v** is zero, **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³Œ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”…”�”}”(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ŒEUnsafe to use in noinstr code; use raw_atomic64_inc_and_test() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic64_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´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”…”�”}”(hj4�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0�ubhŒ if the resulting value of ”…”�”}”(hj0�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjF�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0�ubhŒ is zero, ”…”�”}”(hj0�h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjX�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0�ubhŒ otherwise.”…”�”}”(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éŒ"atomic64_add_negative (C function)”Œc.atomic64_add_negative”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool atomic64_add_negative (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ0bool 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³Œ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”h]”j)�”}”(hŒatomic64_add_negative”h]”hŒatomic64_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Œ(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”†”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”†”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)�”}”(hj|h]”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´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”…”�”}”(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¨ 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„)�”}”(hXH**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_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�hj›‚ubah}”(h]”h ]”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Ž)�”}”(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Œ?Atomically updates **v** to (**v** + **i**) 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Œ**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”…”�”}”(hjrƒ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³Œ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_add_negative() there.”h]”hŒEUnsafe to use in noinstr code; use raw_atomic64_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­ 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_acquire (C function)”Œc.atomic64_add_negative_acquire”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9bool atomic64_add_negative_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8bool atomic64_add_negative_acquire(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_acquire”h]”j)�”}”(hŒatomic64_add_negative_acquire”h]”hŒatomic64_add_negative_acquire”…”�”}”(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Œ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”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€)�”}”jsj5„sbŒc.atomic64_add_negative_acquire”†”asbuh1hhjK„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjK„ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj€„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjG„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}]”jn„Œc.atomic64_add_negative_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Œv”…”�”}”(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Œ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„)�”}”(hXS**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_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Œ``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¼ 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¼ hj5…ubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjw…h]”hŒ atomic64_t *v”…”�”}”(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Œ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Èhjq…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Œ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_atomic64_add_negative_acquire() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic64_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”…”�”}”(hj8†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4†ubhŒ if the resulting value of ”…”�”}”(hj4†h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjJ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4†ubhŒ is negative, ”…”�”}”(hj4†h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj\†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4†ubhŒ otherwise.”…”�”}”(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…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Œ*”…”�”}”(hjI‡h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj‡ubj)�”}”(hj|h]”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´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„)�”}”(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Ž)�”}”(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ŒBAtomically updates **v** to (**v** + **i**) with release 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 release 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Œ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”…”�”}”(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Œ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”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€)�”}”jsj9‰sbŒc.atomic64_add_negative_relaxed”†”asbuh1hhjO‰ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv‰h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjO‰ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj„‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjK‰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_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)�”}”(hj|h]”hŒv”…”�”}”(hj؉h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjK‰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)�”}”(hjBŠh]”hŒs64 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Œs64 value to add”h]”hŒs64 value to add”…”�”}”(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Œ(``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&]”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 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È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Œ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”…”�”}”(hj<‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8‹ubhŒ if the resulting value of ”…”�”}”(hj8‹h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjN‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8‹ubhŒ is negative, ”…”�”}”(hj8‹h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj`‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8‹ubhŒ otherwise.”…”�”}”(hj8‹h²hh³Nh´Nubeh}”(h]”h ]”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)�”}”(hj|h]”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”…”�”}”(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.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”…”�”}”(hjnŒ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&]”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÷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_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”…”�”}”(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Œ``s64 a`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 a``”h]”jS)�”}”(hjX�h]”hŒs64 a”…”�”}”(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Œs64 value to add”h]”hŒs64 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ÈhjR�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jm�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”…”�”}”(hj2Ž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”…”�”}”(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Œ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.”…”�”}”(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Ž)�”}”(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û 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_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Œ*”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjýŽubj)�”}”(hj|h]”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”…”�”}”(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.atomic64_add_unless”†”asbuh1hhjS�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjS�ubj)�”}”(hj»Ãh]”hŒa”…”�”}”(hj†�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjS�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)�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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Œ``s64 a`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 a``”h]”jS)�”}”(hjp�h]”hŒs64 a”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjn�ubah}”(h]”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 hjj�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Èhjj�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”…”�”}”(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”…”�”}”(hj8‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjú�ubhŒ + ”…”�”}”(hjú�h²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hjJ‘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³Œ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.”…”�”}”(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´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_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”…”�”}”(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.atomic64_inc_not_zero”†”asbuh1hhj5’ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\’h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5’ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjj’h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj5’ubj)�”}”(hj|h]”hŒv”…”�”}”(hjw’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj1’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 (”…”�”}”(hj2“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj:“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2“ubhŒ != 0), atomically updates ”…”�”}”(hj2“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjL“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2“ubhŒ to (”…”�”}”(hj2“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj^“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2“ubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hj2“h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjp“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2“ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(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_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”…”�”}”(hj1”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”…”�”}”(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.atomic64_inc_unless_negative”†”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)�”}”(hj|h]”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Œ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Ž)�”}”(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´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 (”…”�”}”(hjF•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjN•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF•ubhŒ >= 0), atomically updates ”…”�”}”(hjF•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF•ubhŒ to (”…”�”}”(hjF•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjr•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF•ubhŒ% + 1) with full 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´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Œ ”…”�”}”(hj3–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!–h²hh³j2–h´MB ubhÿ)�”}”(hŒatomic64_dec_unless_positive”h]”j)�”}”(hŒatomic64_dec_unless_positive”h]”hŒatomic64_dec_unless_positive”…”�”}”(hjE–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjA–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj!–h²hh³j2–h´MB 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€)�”}”jsjG–sbŒc.atomic64_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)�”}”(hj|h]”hŒv”…”�”}”(hjŸ–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjY–ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj!–h²hh³j2–h´MB ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj–h²hh³j2–h´MB ubah}”(h]”j–ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j2–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³j2–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Ž)�”}”(hjD—h]”hŒ Description”…”�”}”(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´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 (”…”�”}”(hjZ—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjb—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ—ubhŒ <= 0), atomically updates ”…”�”}”(hjZ—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjt—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ—ubhŒ to (”…”�”}”(hjZ—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj†—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ—ubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hjZ—h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj˜—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ—ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(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´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”…”�”}”(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€)�”}”jsŒatomic64_dec_if_positive”sbŒc.atomic64_dec_if_positive”†”asbuh1hhj5˜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Œ ”…”�”}”(hj^˜h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5˜h²hh³j]˜h´MU ubhÿ)�”}”(hŒatomic64_dec_if_positive”h]”j)�”}”(hjZ˜h]”hŒatomic64_dec_if_positive”…”�”}”(hjp˜h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl˜ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj5˜h²hh³j]˜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}]”jX˜Œ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)�”}”(hj|h]”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&]”jjuh1j3hj5˜h²hh³j]˜h´MU ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj1˜h²hh³j]˜h´MU ubah}”(h]”j,˜ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j]˜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³j]˜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)�”}”(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³Œ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”…”�”}”(hjJ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jF™h´MV hjG™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj+™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jF™h´MV hj(™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj ™ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjl™h]”hŒ Description”…”�”}”(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´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 (”…”�”}”(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³Œ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”…”�”}”(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´Mh ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbšh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjOšh²hh³jašh´Mh ubhÿ)�”}”(hŒatomic_long_read”h]”j)�”}”(hŒatomic_long_read”h]”hŒatomic_long_read”…”�”}”(hjtšh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjpšubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjOšh²hh³jaš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€)�”}”jsjvš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)�”}”(hj|h]”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³jašh´Mh ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjKšh²hh³jašh´Mh ubah}”(h]”jFšah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jašh´Mh hjHš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&]”uh1j3hjHšh²hh³jaš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Ž)�”}”(hj4›h]”hŒ Parameters”…”�”}”(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´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)�”}”(hjS›h]”hŒconst 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´Mi hjM›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´Mi hji›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjM›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh›h´Mi 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³Œ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Œ ”…”�”}”(hj<œ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”…”�”}”(hjNœh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJœ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”…”�”}”(hjjœh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjfœubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwœh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfœ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€)�”}”jsjPœsbŒc.atomic_long_read_acquire”†”asbuh1hhjfœubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨œh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfœubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¶œh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjfœubj)�”}”(hj|h]”hŒv”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjbœ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”…”�”}”(hjF�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jB�h´Mz hjC�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj'�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jB�h´Mz 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 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´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”…”�”}”(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€)�”}”jsj*žsbŒc.atomic_long_set”†”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)�”}”(hj|h]”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³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”…”�”}”(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Ÿ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”…”�”}”(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Œ 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”…”�”}”(hj3 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Œ ”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/ h²hh³jA h´Mœ ubhÿ)�”}”(hŒatomic_long_set_release”h]”j)�”}”(hŒatomic_long_set_release”h]”hŒatomic_long_set_release”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj/ h²hh³jA 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”…”�”}”(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€)�”}”jsjV sbŒc.atomic_long_set_release”†”asbuh1hhjl ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“ 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)�”}”(hj|h]”hŒv”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjh 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”ˆjjuh1j9hjh ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj/ h²hh³jA h´Mœ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj+ h²hh³jA h´Mœ ubah}”(h]”j& ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jA 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³jA 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)�”}”(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³Œ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_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ÈhjF¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ja¡h´M� hjC¡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³Œ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ž 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Œ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.”…”�”}”(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'¡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”…”�”}”(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_add”h]”j)�”}”(hŒatomic_long_add”h]”hŒatomic_long_add”…”�”}”(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û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”†”asbuh1hhjÌ¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó¢•9h²hh³Nh´Nubah}”(h]”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Œ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 add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj7£h²hh³Nh´Nubah}”(h]”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£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjT¢h²hh³jm¢h´M¯ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjO£jHjO£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Ž)�”}”(hjY£h]”hŒ Parameters”…”�”}”(hj[£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³ hjS£ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”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 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Èhjr£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�£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£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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M³ hjS£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² hjS£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.”…”�”}”(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´ hjS£ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjX¤h]”hŒReturn”…”�”}”(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¶ hjS£ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(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· hjS£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Œ ”…”�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(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&]”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”…”�”}”(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´MÁ hjr¥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 ”…”�”}”(hj@¦h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjH¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@¦ubhŒ to (”…”�”}”(hj@¦h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@¦ubhŒ + ”…”�”}”(hj@¦h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjl¦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Œ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.”…”�”}”(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_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Œ ”…”�”}”(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Œ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_add_return_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)�”}”(hj|h]”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 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)�”}”(hj?¨h]”hŒatomic_long_t *v”…”�”}”(hjA¨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Ö hj9¨ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_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Ö 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³Œ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”…”�”}”(hj=©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj9©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&]”uh1jPhj9©h²hh³jK©h´Mæ ubhÿ)�”}”(hŒatomic_long_add_return_release”h]”j)�”}”(hŒatomic_long_add_return_release”h]”hŒatomic_long_add_return_release”…”�”}”(hj^©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZ©ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj9©h²hh³jK©h´Mæ ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(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)�”}”(hjªÑh]”hŒi”…”�”}”(hj–©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjv©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjr©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_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Œv”…”�”}”(hjì©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjª©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjr©ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj9©h²hh³jK©h´Mæ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj5©h²hh³jK©h´Mæ ubah}”(h]”j0©ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jK©h´Mæ hj2©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&]”uh1j3hj2©h²hh³jK©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Ž)�”}”(hj7ªh]”hŒ Parameters”…”�”}”(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´Mê hj1ªubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”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´Mç hjPªubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong 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ÈhjPªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jkªh´Mç hjMª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è hjMªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj1ªubjM)�”}”(hŒ**Description**”h]”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ê hj1ª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é hj1ª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ë hj1ª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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mí hj1ªubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mî hj1ª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)�”}”(hj|h]”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 relaxed ordering”h]”hŒ atomic add with relaxed 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´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** ``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�hj…¬ubah}”(h]”h ]”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Œ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³Œ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_relaxed() there.”h]”hŒNUnsafe to use in noinstr code; use raw_atomic_long_add_return_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´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_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”…”�”}”(hj6®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”…”�”}”(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.atomic_long_fetch_add”†”asbuh1hhjJ®ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq®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)�”}”(hj|h]”hŒv”…”�”}”(hjŒ®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ®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”…”�”}”(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Œ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í®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³Œ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_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 ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCµŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjð´sbŒc.atomic_long_fetch_add_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)�”}”(hj|h]”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´MC ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÅ´h²hh³jÛ´h´MC ubah}”(h]”jÀ´ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÛ´h´MC 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´MC hj¢µh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj´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** ``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_fetch_add_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´MG 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´MD 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´MD hjüµubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjàµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jûµh´MD 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´ME hj¶ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj8¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4¶h´ME hj5¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4¶h´ME 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MG hjÁµubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with relaxed 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 relaxed ordering.”…”�”}”(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´MF hjÁµubjM)�”}”(hŒMUnsafe to use in noinstr code; use raw_atomic_long_fetch_add_relaxed() there.”h]”hŒMUnsafe to use in noinstr code; use raw_atomic_long_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´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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MJ 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´MK 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 (C function)”Œc.atomic_long_sub”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ/void atomic_long_sub (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ.void 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MU ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj·h²hh³j+·h´MU ubhÿ)�”}”(hŒatomic_long_sub”h]”j)�”}”(hŒatomic_long_sub”h]”hŒ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´MU ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjZ·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjV·ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh·h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjV·ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjv·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjV·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjR·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”†”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Œv”…”�”}”(hjÌ·h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjR·ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj·h²hh³j+·h´MU ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj·h²hh³j+·h´MU ubah}”(h]”j·ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j+·h´MU 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´MU hjò·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj·h²hh³j+·h´MU 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. Unsafe to use in noinstr code; use raw_atomic_long_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´MY hj¸ubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj6¸h]”hŒlong 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´MV hj0¸ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjO¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jK¸h´MV hjL¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jK¸h´MV hj-¸ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjo¸h]”hŒatomic_long_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´MW hji¸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´MW hj…¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhji¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„¸h´MW 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´MY 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´MX hj¸ubjM)�”}”(hŒ?Unsafe to use in noinstr code; use raw_atomic_long_sub() there.”h]”hŒ?Unsafe to use in noinstr code; use raw_atomic_long_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´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Œ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_sub_return (C function)”Œc.atomic_long_sub_return”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ6long atomic_long_sub_return (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ5long 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ûhjW¹h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mg ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjW¹h²hh³ji¹h´Mg ubhÿ)�”}”(hŒatomic_long_sub_return”h]”j)�”}”(hŒatomic_long_sub_return”h]”hŒatomic_long_sub_return”…”�”}”(hj|¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjx¹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjW¹h²hh³ji¹h´Mg 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”†”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Œ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´Mg ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjS¹h²hh³ji¹h´Mg ubah}”(h]”jN¹ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³ji¹h´Mg hjP¹h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(hj3ºh²hh³Nh´Nubah}”(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 hj0ºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjP¹h²hh³ji¹h´Mg 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 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_sub_return() there. **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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mk hjOºubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mh hjnº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´Mh hjŠºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjnºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‰ºh´Mh 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mi 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´Mi hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj§ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jºh´Mi 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mk hjOº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´Mj hjOºubjM)�”}”(hŒFUnsafe to use in noinstr code; use raw_atomic_long_sub_return() there.”h]”hŒFUnsafe to use in noinstr code; use raw_atomic_long_sub_return() 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´Ml 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mn 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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mo hjOº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_acquire (C function)”Œ c.atomic_long_sub_return_acquire”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(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Œ ”…”�”}”(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Œ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´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”…”�”}”(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€¼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Ž)�”}”(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´M~ hjŸ¼ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire 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 acquire ordering.”…”�”}”(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} 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”…”�”}”(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.atomic_long_sub_return_release”†”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)�”}”(hj|h]”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´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)�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŽ 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´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Œ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”…”�”}”(hjKÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjGÀ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Œ ”…”�”}”(hjZÀh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGÀh²hh³jYÀh´MŸ ubhÿ)�”}”(hŒatomic_long_sub_return_relaxed”h]”j)�”}”(hŒatomic_long_sub_return_relaxed”h]”hŒatomic_long_sub_return_relaxed”…”�”}”(hjlÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhÀubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjGÀh²hh³jYÀ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€)�”}”jsjnÀ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)�”}”(hj|h]”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´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Œ%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³jYÀ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Ž)�”}”(hjEÁh]”hŒ Parameters”…”�”}”(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?Áubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”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³Œ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³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Œ.``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 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Œ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.”…”�”}”(hj3Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”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Ž)�”}”(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´M¦ hj?ÁubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated 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³Œ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 (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Œ*”…”�”}”(hj=Ãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÃubj)�”}”(hj|h]”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Œ"atomic subtract with full ordering”h]”hŒ"atomic subtract 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** ``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 ”…”�”}”(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´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.”…”�”}”(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_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Œ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.”…”�”}”(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ÿ 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³Œ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.”…”�”}”(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´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)�”}”(hj|h]”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”…”�”}”(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&]”jFjAjGjVÎjHjVÎ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**”•Qh]”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´MhjZÎ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 hjyÎ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ÈhjyÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”Îh´M hjvÎubah}”(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´MhjZÎ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´MhjZÎ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´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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjZÎubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(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´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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éŒ+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”…”�”}”(hjkÏh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjgÏh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzÏh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjgÏh²hh³jyÏ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þhjgÏh²hh³jyÏ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)�”}”(hj|h]”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³jyÏh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjcÏh²hh³jyÏh´Mubah}”(h]”j^Ïah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jyÏh´Mhj`Ï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&]”uh1j3hj`Ïh²hh³jyÏ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Ž)�”}”(hj1Ðh]”hŒ Parameters”…”�”}”(hj3Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/Ðubah}”(h]”h ]”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)�”}”(hjPÐh]”hŒatomic_long_t *v”…”�”}”(hjRÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjNÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjJÐubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjiÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jeÐh´MhjfÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jeÐh´MhjGÐ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”…”�”}”(hj<Ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj8Ñ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Œ ”…”�”}”(hjKÑh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj8Ñh²hh³jJÑh´M/ubhÿ)�”}”(hŒatomic_long_inc_return_release”h]”j)�”}”(hŒatomic_long_inc_return_release”h]”hŒatomic_long_inc_return_release”…”�”}”(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_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&]”uh1jhjyÑ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_release”†”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)�”}”(hj|h]”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 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&]”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„)�”}”(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³j6Òh´M0hj7Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6Òh´M0hjÒ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´M2hjüÑubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release 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 release 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´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”…”�”}”(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€)�”}”jsj0ÓsbŒ c.atomic_long_inc_return_relaxed”†”asbuh1hhjFÓubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmÓh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjFÓubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj{Óh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjFÓubj)�”}”(hj|h]”hŒv”…”�”}”(hjˆÓh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjBÓ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 ”…”�”}”(hjCÔh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjKÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCÔubhŒ to (”…”�”}”(hjCÔh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj]Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCÔubhŒ + 1) with relaxed ordering.”…”�”}”(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´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.”…”�”}”(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´MEhjÍÓubjM)�”}”(hŒ **Return**”h]”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´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Œ ”…”�”}”(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)�”}”(hj|h]”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´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”…”�”}”(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´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„)�”}”(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.”…”�”}”(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´MVhjžÕubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjXÖh]”hŒReturn”…”�”}”(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´MXhjžÕubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original 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´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)�”}”(hj|h]”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”…”�”}”(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´MdhjP×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¤Öh²hh³j½Öh´Mdubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjk×jHjk×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Ž)�”}”(hju×h]”hŒ Parameters”…”�”}”(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´Mhhjo×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£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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mghjo×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´Mfhjo×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´Mhhjo×ubjM)�”}”(hŒ **Return**”h]”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´Mjhjo×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´Mkhjo×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”…”�”}”(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´MuubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj|Ø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þhj|Ø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)�”}”(hj|h]”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´Muubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjxØh²hh³jŽØh´Muubah}”(h]”jsØah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŽØh´MuhjuØ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&]”uh1j3hjuØ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** ``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Ž)�”}”(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´Myhj@Ù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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mvhj_Ù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´Mvhj{Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj_Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jzÙh´Mvhj\Ù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´Mxhj@Ù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´Mwhj@Ù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´Myhj@ÙubjM)�”}”(hŒ **Return**”h]”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_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”…”�”}”(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_fetch_inc_relaxed”h]”j)�”}”(hŒatomic_long_fetch_inc_relaxed”h]”hŒatomic_long_fetch_inc_relaxed”…”�”}”(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.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)�”}”(hj|h]”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 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&]”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 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)�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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³Œ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Œ ”…”�”}”(hj1Üh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÜh²hh³j0Üh´M˜ubhÿ)�”}”(hŒatomic_long_dec”h]”j)�”}”(hŒatomic_long_dec”h]”hŒatomic_long_dec”…”�”}”(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.atomic_long_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)�”}”(hj|h]”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³Œ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³j0Ü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Ž)�”}”(hjBÝh]”hŒ Description”…”�”}”(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Œ>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³Œ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Œ ”…”�”}”(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)�”}”(hj|h]”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** ``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”…”�”}”(hj1ß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.”…”�”}”(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­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³Œ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 ”…”�”}”(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³Œ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)�”}”(hj|h]”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”…”�”}”(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»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„)�”}”(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Ž)�”}”(hjxàh]”hŒ Parameters”…”�”}”(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¿hjrà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£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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¾hjrà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½hjrà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¿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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÁhjràubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated 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´MÂhjrà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”…”�”}”(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_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þ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_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Œ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 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&]”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„)�”}”(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Ž)�”}”(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´MÐhjCâubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjhâh]”hŒatomic_long_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 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È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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MÏhjCâ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ÎhjCâ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Ð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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”•h´MÒhjCâ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ÓhjCâ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”…”�”}”(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´MÞubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcãh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPãh²hh³jbãh´MÞubhÿ)�”}”(hŒatomic_long_dec_return_relaxed”h]”j)�”}”(hŒatomic_long_dec_return_relaxed”h]”hŒatomic_long_dec_return_relaxed”…”�”}”(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Œ(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€)�”}”jsjwã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)�”}”(hj|h]”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³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 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&]”uh1j3hjIã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** ``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)�”}”(hj9äh]”hŒatomic_long_t *v”…”�”}”(hj;äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj7äubah}”(h]”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ßhj3ä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´MßhjOäubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj3äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jNäh´Mßhj0äubah}”(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³Œ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Œ ”…”�”}”(hj4åh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!åh²hh³j3åh´Mïubhÿ)�”}”(hŒatomic_long_fetch_dec”h]”j)�”}”(hŒatomic_long_fetch_dec”h]”hŒatomic_long_fetch_dec”…”�”}”(hjFåh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBåubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj!åh²hh³j3å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”…”�”}”(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€)�”}”jsjHåsbŒc.atomic_long_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)�”}”(hj|h]”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&]”jjuh1j3hj!åh²hh³j3åh´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjåh²hh³j3åh´Mïubah}”(h]”jåah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j3å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³j3å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Ž)�”}”(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 full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj[æh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjcæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[æubhŒ to (”…”�”}”(hj[æh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjuæ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Œ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”…”�”}”(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.atomic_long_fetch_dec_acquire”†”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)�”}”(hj|h]”hŒv”…”�”}”(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´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”…”�”}”(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Œ - 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.”…”�”}”(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Ž)�”}”(hjpèh]”hŒReturn”…”�”}”(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´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_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Œ*”…”�”}”(hj5éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjéubj)�”}”(hj|h]”hŒv”…”�”}”(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Œ&atomic decrement with release ordering”h]”hŒ&atomic decrement with release ordering”…”�”}”(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´Mhjhé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 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.”…”�”}”(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´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³Œ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 ”…”�”}”(hjWêh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj_êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWêubhŒ.”…”�”}”(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´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)�”}”(hj|h]”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”…”�”}”(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&]”uh1j3hj�êh²hh³j¦êh´M$ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjTëjHjTë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Ž)�”}”(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Œ.``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%hjwë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Èhjwëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’ëh´M%hjtëubah}”(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Œ>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&hjXë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(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 ”…”�”}”(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+hjXë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”…”�”}”(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´M5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjeìh²hh³jwì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&]”uh1jhj†ìubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjeìh²hh³jwì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)�”}”(hj|h]”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´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjaìh²hh³jwìh´M5ubah}”(h]”j\ìah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jwìh´M5hj^ìh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND 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´M5hj>íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj^ìh²hh³jwìh´M5ubeh}”(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 relaxed ordering. Unsafe to use in noinstr code; use raw_atomic_long_and() 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´M9hj]í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´M6hj|í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Èhj|íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j—íh´M6hjyí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´M7hjyí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´M9hj]í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´M8hj]í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.”…”�”}”(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_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Œ*”…”�”}”(hjIïh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjïubj)�”}”(hj|h]”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´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”…”�”}”(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|ï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Ž)�”}”(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´MKhj›ï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´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Œõubah}”(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Œ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´Mthj;ô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_relaxed (C function)”Œc.atomic_long_fetch_and_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=long atomic_long_fetch_and_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒû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¤hj8ûubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(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Œ.``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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M¥hjqû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Èhjqû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Œ@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 ”…”�”}”(hj4üh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj<üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4üubhŒ.”…”�”}”(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û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”…”�”}”(hjuüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjqü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&]”uh1jPhjqüh²hh³jƒü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þhjqü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_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Œ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&]”jjuh1j3hjqüh²hh³jƒüh´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjmüh²hh³jƒüh´M¶ubah}”(h]”jhüah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jƒüh´M¶hjjüh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with acquire ordering”h]”hŒ,atomic bitwise AND NOT with acquire ordering”…”�”}”(hjMýh²hh³Nh´Nubah}”(h]”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ýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjjü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** ``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Ž)�”}”(hjoýh]”hŒ Parameters”…”�”}”(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ºhjiý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”…”�”}”(hjàýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mºhjiý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”…”�”}”(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¹hjiý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.”…”�”}”(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»hjiý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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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éŒ-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”…”�”}”(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.atomic_long_fetch_andnot_release”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjtÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2ÿ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)�”}”(hjh]”hŒatomic_long_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´MÊhjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj0h²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Ž)�”}”(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´MÌhj¹ÿubjM)�”}”(hŒCAtomically updates **v** to (**v** & **~i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ to (”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ & ”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ) with release ordering.”…”�”}”(hjhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”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”…”�”}”(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_andnot_relaxed”h]”j)�”}”(hŒ atomic_long_fetch_andnot_relaxed”h]”hŒ atomic_long_fetch_andnot_relaxed”…”�”}”(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_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)�”}”(hj|h]”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 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³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 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�hj ubah}”(h]”h ]”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Œ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�hj ubah}”(h]”h ]”h"]”h$]”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_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”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjah²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MíubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjah²hh³jsh´Míubhÿ)�”}”(hŒatomic_long_or”h]”j)�”}”(hŒatomic_long_or”h]”hŒatomic_long_or”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjah²hh³jsh´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Œ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÒubj)�”}”(hj|h]”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&]”jjuh1j3hjah²hh³jsh´Míubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj]h²hh³jsh´Míubah}”(h]”jXah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jsh´MíhjZh²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&]”uh1j3hjZh²hh³jsh´Míubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjUjHjUjI‰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Ž)�”}”(hj_h]”hŒ Parameters”…”�”}”(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´MñhjYubj¤)�”}”(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îhjxubjÉ)�”}”(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Èhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j“h´Mîhjuubj©)�”}”(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ïhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjYubjM)�”}”(hŒ**Description**”h]”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ñhjYubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) 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Œ | ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ) with relaxed 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ðhjYubjM)�”}”(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.”…”�”}”(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òhjYubjM)�”}”(hŒ **Return**”h]”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ôhjYubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”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éŒ!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”…”�”}”(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_fetch_or”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²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)�”}”(hj|h]”hŒv”…”�”}”(hjRh²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”…”�”}”(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ÿhjxh²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Ž)�”}”(hj0h]”hŒ Description”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ubah}”(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 ”…”�”}”(hjFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFubhŒ to (”…”�”}”(hjFh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFubhŒ | ”…”�”}”(hjFh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFubhŒ) with full ordering.”…”�”}”(hjFh²hh³Nh´Nubeh}”(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.”…”�”}”(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 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Œh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj,ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjLh²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”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jiŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjsbŒc.atomic_long_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)�”}”(hj|h]”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³jh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjëh²hh³jh´Mubah}”(h]”jæah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´Mhjè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³Œ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³jh´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 ``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_or_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Œ``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)�”}”(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³Œ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³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³Œ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ŒLUnsafe to use in noinstr code; use raw_atomic_long_fetch_or_acquire() there.”h]”hŒLUnsafe to use in noinstr code; use raw_atomic_long_fetch_or_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´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_release (C function)”Œc.atomic_long_fetch_or_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj: ubah}”(h]”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 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,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_fetch_or_relaxed (C function)”Œc.atomic_long_fetch_or_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6ubhŒ to (”…”�”}”(hj6h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6ubhŒ | ”…”�”}”(hj6h²hh³Nh´Nub•jŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6ubhŒ) with relaxed ordering.”…”�”}”(hj6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M:hj‡ ubjM)�”}”(hŒLUnsafe to use in noinstr code; use raw_atomic_long_fetch_or_relaxed() there.”h]”hŒLUnsafe to use in noinstr code; use raw_atomic_long_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”…”�”}”(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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(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”…”�”}”(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”ˆjjuh1j9hjubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jYŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjsbŒc.atomic_long_xor”†”asbuh1hhjPubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjPubj)�”}”(hj|h]”hŒv”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubeh}”(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”…”�”}”(hjh²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)�”}”(hj5h]”hŒatomic_long_t *v”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj3ubah}”(h]”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”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJh´MKhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJh´MKhjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj×ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjph]”hŒ Description”…”�”}”(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´MMhj×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´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”…”�”}”(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Œ ”…”�”}”(hj0h²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”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>ubah}”(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”…”�”}”(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Œi”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjVubj:)�”}”(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€)�”}”jsjDsbŒ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)�”}”(hj|h]”hŒv”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjVubeh}”(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Œ%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&]”uh1j3hjh²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�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_hjubj¤)�”}”(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&]”uh1jRhj8ubah}”(h]”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\hj4ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jOh´M\hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jOh´M\hj1ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjsh]”hŒatomic_long_t *v”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjqubah}”(h]”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]hjmubjÉ)�”}”(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Èhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jˆh´M]hj1ubeh}”(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´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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M^hjubjM)�”}”(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`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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MbhjubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ubhŒ.”…”�”}”(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´Mchjubeh}”(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Œlong atomic_long_cmpxchg(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ûhjY#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&]”uh1jPhjY#h²hh³jk#h´Mïubhÿ)�”}”(hŒatomic_long_cmpxchg”h]”j)�”}”(hŒatomic_long_cmpxchg”h]”hŒatomic_long_cmpxchg”…”�”}”(hj~#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz#ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjY#h²hh³jk#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€)�”}”jsj€#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)�”}”(hj|h]”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Œ ”…”�”}”(hj3$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!$ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjA$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´Mïubeh}”(h]”h ]”•h"]”h$]”h&]”jjj%ˆuh1høj&j'hjU#h²hh³jk#h´Mïubah}”(h]”jP#ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jk#h´MïhjR#h²hubj4)�”}”(hhh]”jM)�”}”(hŒ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(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ïhjh$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjR#h²hh³jk#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 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”…”�”}”(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£$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³Œ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 (”…”�”}”(hjo%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjw%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjo%ubhŒ == ”…”�”}”(hjo%h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj‰%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjo%ubhŒ), atomically updates ”…”�”}”(hjo%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj›%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjo%ubhŒ to ”…”�”}”(hjo%h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj­%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjo%ubhŒ with full ordering. Otherwise, ”…”�”}”(hjo%h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¿%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjo%ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(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Œ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”…”�”}”(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Œ ”…”�”}”(hjO&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj<&h²hh³jN&h´Mubhÿ)�”}”(hŒatomic_long_cmpxchg_acquire”h]”j)�”}”(hŒatomic_long_cmpxchg_acquire”h]”hŒatomic_long_cmpxchg_acquire”…”�”}”(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Œ&(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€)�”}”jsjc&sbŒc.atomic_long_cmpxchg_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)�”}”(hj|h]”hŒv”…”�”}”(hj»&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjy&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hju&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”ˆjjuh1j9hju&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”ˆjjuh1j9hju&ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj<&h²hh³jN&h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj8&h²hh³jN&h´Mubah}”(h]”j3&ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jN&h´Mhj5&h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire 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´MhjK'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj5&h²hh³jN&h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjf'jHjf'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Ž)�”}”(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´Mhjj'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†'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£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Œ”If (**v** == **old**), atomically updates **v** to **new** with acquire ordering. Otherwise, **v** is not modified and relaxed ordering is provided.”h]”(hŒIf (”…”�”}”(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´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjl(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR(ubhŒ), atomically updates ”…”�”}”(hjR(h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj~(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR(ubhŒ to ”…”�”}”(hjR(h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR(ubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hjR(h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¢(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR(ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(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´Mhjj'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 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”…”�”}”(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´Mhjj'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Œ ”…”�”}”(hj2)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)h²hh³j1)h´Mubhÿ)�”}”(hŒatomic_long_cmpxchg_release”h]”j)�”}”(hŒatomic_long_cmpxchg_release”h]”hŒatomic_long_cmpxchg_release”…”�”}”(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Œ&(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”…”�”}”(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€)�”}”jsjF)sbŒc.atomic_long_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)�”}”(hj|h]”hŒv”…”�”}”(hjž)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjX)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”ˆjjuh1j9hjX)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”ˆjjuh1j9hjX)ubeh}”(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Œ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release 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´Mhj.*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj)h²hh³j1)h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjI*jHjI*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Ž)�”}”(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´MhjM*ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjr*h]”hŒatomic_long_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´Mhjl*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Èhjl*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‡*h´Mhji*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´Mhji*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´Mhji*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´MhjM*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 (”…”�”}”(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´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjO+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5+ubhŒ), atomically updates ”…”�”}”(hj5+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hja+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5+ubhŒ to ”…”�”}”(hj5+h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjs+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5+ubhŒ# with release ordering. Otherwise, ”…”�”}”(hj5+h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj…+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5+ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj5+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MhjM*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´MhjM*ubjM)�”}”(hŒ **Return**”h]”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!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_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”…”�”}”(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_long_cmpxchg_relaxed”†”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Œ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”…”�”}”(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Ž)�”}”(hj6-h]”hŒ Parameters”…”�”}”(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´M1hj0-ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjU-h]”hŒatomic_long_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´M.hjO-ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(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-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/hjL-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´M0hjL-ubeh}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M2hj0-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”…”�”}”(hj2.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ubhŒ), atomically updates ”…”�”}”(hj.h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjD.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj.ubhŒ to ”…”�”}”(hj.h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjV.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”…”�”}”(hjh.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´M1hj0-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.”…”�”}”(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´M4hj0-ubjM)�”}”(hŒ **Return**”h]”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´M6hj0-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´M7hj0-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/h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!/ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjV/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj!/ubj)�”}”(hj|h]”hŒv”…”�”}”(hjc/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ûhjw/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰/h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjw/ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj—/h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjw/ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj¤/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjw/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´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 compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MAhj0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÞ.h²hh³jö.h´MAubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj0jHj0jI‰jJ‰jK‰uh1híh²hhjºh³Nh´Nubj„)�”}”(hX**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long *old`` pointer to 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, **old** is updated to the current value of **v**, and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg() there. **Return** **true** if the exchange occurred, **false** otherwise.”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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MEhj0ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjD0h]”hŒatomic_long_t *v”…”�”}”(hjF0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjB0ubah}”(h]”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>0ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj]0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jY0h´MBhjZ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj>0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jY0h´MBhj;0ubj©)�”}”(hŒ4``long *old`` pointer to long value to compare with ”h]”(j¯)�”}”(hŒ ``long *old``”h]”jS)�”}”(hj}0h]”hŒ long *old”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MChjw0ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%pointer to long value to compare with”h]”hŒ%pointer to long value to compare with”…”�”}”(hj–0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j’0h´MChj“0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjw0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’0h´MChj;0ubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj¶0h]”hŒlong new”…”�”}”(hj¸0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj´0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MDhj°0ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjÏ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jË0h´MDhjÌ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj°0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jË0h´MDhj;0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj0ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjñ0h]”hŒ Description”…”�”}”(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´MFhj0ubjM)�”}”(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 (”…”�”}”(hj1h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ubhŒ == ”…”�”}”(hj1h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj!1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ubhŒ), atomically updates ”…”�”}”(hj1h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj31h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ubhŒ to ”…”�”}”(hj1h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjE1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ubhŒ with full ordering. Otherwise, ”…”�”}”(hj1h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjW1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ubhŒ is not modified, ”…”�”}”(hj1h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hji1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ubhŒ$ is updated to the current value of ”…”�”}”(hj1h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj{1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ubhŒ#, and relaxed ordering is provided.”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MEhj0ubjM)�”}”(hŒGUnsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg() there.”h]”hŒGUnsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg() there.”…”�”}”(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´MIhj0ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj¥1h]”hŒReturn”…”�”}”(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´MKhj0ubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj¿1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»1ubhŒ if the exchange occurred, ”…”�”}”(hj»1h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjÑ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»1ubhŒ otherwise.”…”�”}”(hj»1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MLhj0ubeh}”(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_acquire (C function)”Œ!c.atomic_long_try_cmpxchg_acquire”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒLbool atomic_long_try_cmpxchg_acquire (atomic_long_t *v, long *old, long new)”h]”hù)�”}”(hŒKbool atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj2h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MXubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj2h²hh³j2h´MXubhÿ)�”}”(hŒatomic_long_try_cmpxchg_acquire”h]”j)�”}”(hŒatomic_long_try_cmpxchg_acquire”h]”hŒatomic_long_try_cmpxchg_acquire”…”�”}”(hj*2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&2ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj2h²hh³j2h´MXubj4)�”}”(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”…”�”}”(hjI2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjF2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jK2Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj,2sbŒ!c.atomic_long_try_cmpxchg_acquire”†”asbuh1hhjB2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjB2ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjw2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjB2ubj)�”}”(hj|h]”hŒv”…”�”}”(hj„2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>2ubj:)�”}”(hŒ long *old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjœ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj˜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)�”}”(hŒold”h]”hŒold”…”�”}”(hjÅ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>2ubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÞ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÚ2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚ2ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjú2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj>2ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj2h²hh³j2h´MXubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj2h²hh³j2h´MXubah}”(h]”jý1ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j2h´MXhjÿ1h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(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´MXhj!3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÿ1h²hh³j2h´MXubeh}”(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 ``long *old`` pointer to 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, **old** is updated to the current value of **v**, and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg_acquire() there. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjF3h]”hŒ Parameters”…”�”}”(hjH3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.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)�”}”(hje3h]”hŒatomic_long_t *v”…”�”}”(hjg3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjc3ubah}”(h]”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_3ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj~3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jz3h´MYhj{3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj_3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jz3h´MYhj\3ubj©)�”}”(hŒ4``long *old`` pointer to long value to compare with ”h]”(j¯)�”}”(hŒ ``long *old``”h]”jS)�”}”(hjž3h]”hŒ long *old”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjœ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MZhj˜3ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%pointer to long value to compare with”h]”hŒ%pointer to long value to compare with”…”�”}”(hj·3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j³3h´MZhj´3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj˜3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j³3h´MZhj\3ubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj×3h]”hŒlong new”…”�”}”(hjÙ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÕ3ubah}”(h]”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Ñ3ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(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\3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj@3ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj4h]”hŒ Description”…”�”}”(hj4h²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´M]hj@3ubjM)�”}”(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(4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj04h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(4ubhŒ == ”…”�”}”(hj(4h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjB4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(4ubhŒ), atomically updates ”…”�”}”(hj(4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjT4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(4ubhŒ to ”…”�”}”(hj(4h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjf4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(4ubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hj(4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjx4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(4ubhŒ is not modified, ”…”�”}”(hj(4h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjŠ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(4ubhŒ$ is updated to the current 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Œ#, and relaxed ordering is provided.”…”�”}”(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@3ubjM)�”}”(hŒOUnsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg_acquire() there.”h]”hŒOUnsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg_acquire() there.”…”�”}”(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`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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mbhj@3ubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjà4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜ4ubhŒ if the exchange occurred, ”…”�”}”(hjÜ4h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjò4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÜ4ubhŒ otherwise.”…”�”}”(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´Mchj@3ubeh}”(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_release (C function)”Œ!c.atomic_long_try_cmpxchg_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒLbool atomic_long_try_cmpxchg_release (atomic_long_t *v, long *old, long new)”h]”hù)�”}”(hŒKbool atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(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´MnubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj95h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'5h²hh³j85h´Mnubhÿ)�”}”(hŒatomic_long_try_cmpxchg_release”h]”j)�”}”(hŒatomic_long_try_cmpxchg_release”h]”hŒatomic_long_try_cmpxchg_release”…”�”}”(hjK5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjG5ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj'5h²hh³j85h´Mnubj4)�”}”(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”…”�”}”(hjj5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jl5Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjM5sbŒ!c.atomic_long_try_cmpxchg_release”†”asbuh1hhjc5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjc5ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj˜5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjc5ubj)�”}”(hj|h]”hŒv”…”�”}”(hj¥5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjc5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj_5ubj:)�”}”(hŒ long *old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(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Œold”h]”hŒold”…”�”}”(hjæ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¹5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj_5ubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÿ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjû5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjû5ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj6h²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³j85h´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj#5h²hh³j85h´Mnubah}”(h]”j5ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j85h´Mnhj 5h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release ordering”…”�”}”(hjE6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MnhjB6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj 5h²hh³j85h´Mnubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj]6jHj]6jI‰jJ‰jK‰uh1híh²hhjºh³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long *old`` pointer to 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, **old** is updated to the current value of **v**, and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg_release() there. **Return** **true** if the exchange occurred, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjg6h]”hŒ Parameters”…”�”}”(hji6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hje6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mrhja6ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj†6h]”hŒatomic_long_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´Mohj€6ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjŸ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j›6h´Mohjœ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj€6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›6h´Mohj}6ubj©)�”}”(hŒ4``long *old`` pointer to long value to compare with ”h]”(j¯)�”}”(hŒ ``long *old``”h]”jS)�”}”(hj¿6h]”hŒ long *old”…”�”}”(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´Mphj¹6ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%pointer to long value to compare with”h]”hŒ%pointer to long value to compare with”…”�”}”(hjØ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÔ6h´MphjÕ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¹6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÔ6h´Mphj}6ubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hjø6h]”hŒlong new”…”�”}”(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´Mqhjò6ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j 7h´Mqhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjò6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j 7h´Mqhj}6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hja6ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj37h]”hŒ Description”…”�”}”(hj57h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj17ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mshja6ubjM)�”}”(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 (”…”�”}”(hjI7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjQ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI7ubhŒ == ”…”�”}”(hjI7h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjc7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI7ubhŒ), atomically updates ”…”�”}”(hjI7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hju7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI7ubhŒ to ”…”�”}”(hjI7h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj‡7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI7ubhŒ# with release ordering. Otherwise, ”…”�”}”(hjI7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI7ubhŒ is not modified, ”…”�”}”(hjI7h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj«7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI7ubhŒ$ is updated to the current value of ”…”�”}”(hjI7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj½7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI7ubhŒ#, and relaxed ordering is provided.”…”�”}”(hjI7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Mrhja6ubjM)�”}”(hŒOUnsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg_release() there.”h]”hŒOUnsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg_release() 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´Mvhja6ubjM)�”}”(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´Mxhja6ubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjý7ubhŒ if the exchange occurred, ”…”�”}”(hjý7h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjý7ubhŒ otherwise.”…”�”}”(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´Myhja6ubeh}”(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_relaxed (C function)”Œ!c.atomic_long_try_cmpxchg_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒLbool atomic_long_try_cmpxchg_relaxed (atomic_long_t *v, long *old, long new)”h]”hù)�”}”(hŒKbool atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjL8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjH8h²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M…ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjH8h²hh³jY8h´M…ubhÿ)�”}”(hŒatomic_long_try_cmpxchg_relaxed”h]”j)�”}”(hŒatomic_long_try_cmpxchg_relaxed”h]”hŒatomic_long_try_cmpxchg_relaxed”…”�”}”(hjl8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh8ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjH8h²hh³jY8h´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‹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€)�”}”jsjn8sbŒ!c.atomic_long_try_cmpxchg_relaxed”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjÆ8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj„8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj€8ubj:)�”}”(hŒ long *old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÞ8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÚ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Œold”h]”hŒold”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj€8ubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj<9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj€8ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjH8h²hh³jY8h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjD8h²hh³jY8h´M…ubah}”(h]”j?8ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jY8h´M…hjA8h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with relaxed ordering”h]”hŒ1atomic compare and exchange with relaxed ordering”…”�”}”(hjf9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M…hjc9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjA8h²hh³jY8h´M…ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj~9jHj~9jI‰jJ‰jK‰uh1híh²hhjºh³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long *old`` pointer to 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, **old** is updated to the current value of **v**, and relaxed ordering is provided. Unsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg_relaxed() there. **Return** **true** if the exchange occurred, **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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‰hj‚9ubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj§9h]”hŒatomic_long_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 atomic_long_t”h]”hŒpointer to atomic_long_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ž9ubj©)�”}”(hŒ4``long *old`` pointer to long value to compare with ”h]”(j¯)�”}”(hŒ ``long *old``”h]”jS)�”}”(hjà9h]”hŒ long *old”…”�”}”(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 long value to compare with”h]”hŒ%pointer to long value to compare with”…”�”}”(hjù9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jõ9h´M‡hjö9ubah}”(h]”h •P]”h"]”h$]”h&]”uh1jÈhjÚ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jõ9h´M‡hjž9ubj©)�”}”(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”…”�”}”(hj2:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j.:h´Mˆhj/:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j.:h´Mˆhjž9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj‚9ubjM)�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MŠhj‚9ubjM)�”}”(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 (”…”�”}”(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´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj„:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj:ubhŒ), atomically updates ”…”�”}”(hjj:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj–:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj:ubhŒ to ”…”�”}”(hjj:h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj¨:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj:ubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hjj:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjº:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj:ubhŒ is not modified, ”…”�”}”(hjj:h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjÌ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj:ubhŒ$ is updated to the current value of ”…”�”}”(hjj:h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÞ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj:ubhŒ#, and relaxed ordering is provided.”…”�”}”(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‚9ubjM)�”}”(hŒOUnsafe to use in noinstr code; use raw_atomic_long_try_cmpxchg_relaxed() there.”h]”hŒOUnsafe to use in noinstr code; use raw_atomic_long_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´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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M�hj‚9ubjM)�”}”(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”…”�”}”(hj4;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‚9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ%atomic_long_sub_and_test (C function)”Œc.atomic_long_sub_and_test”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ8bool atomic_long_sub_and_test (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ7bool atomic_long_sub_and_test(long i, atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(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³jz;h´M›ubhÿ)�”}”(hŒatomic_long_sub_and_test”h]”j)�”}”(hŒatomic_long_sub_and_test”h]”hŒatomic_long_sub_and_test”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰;ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhji;h²hh³jz;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_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Œ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&]”jjuh1j3hji;h²hh³jz;h´M›ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hje;h²hh³jz;h´M›ubah}”(h]”j`;ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jz;h´M›hjb;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”…”�”}”(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&]”uh1j3hjb;h²hh³jz;h´M›ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj\<jHj\<jI‰jJ‰jK‰uh1híh²hhjºh³Nh´Nubj„)�”}”(hXT**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_sub_and_test() there. **Return** **true** if the resulting value of **v** is zero, **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³Œ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 ”…”�”}”(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_sub_and_test() there.”h]”hŒHUnsafe to use in noinstr code; use raw_atomic_long_sub_and_test() 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Ž)�”}”(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´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´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_and_test (C function)”Œc.atomic_long_dec_and_test”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ0bool atomic_long_dec_and_test (atomic_long_t *v)”h]”hù)�”}”(hŒ/bool atomic_long_dec_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_dec_and_test”h]”j)�”}”(hŒatomic_long_dec_and_test”h]”hŒatomic_long_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Œ(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_and_test”†”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)�”}”(hj|h]”hŒv”…”�”}”(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Œ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´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_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.”…”�”}”(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²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³Œ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”…”�”}”(hjo?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk?ubhŒ if the resulting value of ”…”�”}”(hjk?h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk?ubhŒ is zero, ”…”�”}”(hjk?h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj“?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk?ubhŒ otherwise.”…”�”}”(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_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Œ*”…”�”}”(hj9@h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj@ubj)�”}”(hj|h]”hŒv”…”�”}”(hjF@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”…”�”}”(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** ``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 ”…”�”}”(hjAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAubhŒ to (”…”�”}”(hjAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAubhŒ + 1) with full ordering.”…”�”}”(hjAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”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.”…”�”}”(hj4Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”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Ž)�”}”(hjEAh]”hŒReturn”…”�”}”(hjGAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCAubah}”(h]”h ]”h"]”h$]”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_Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[AubhŒ if the resulting value of ”…”�”}”(hj[Ah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjqAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[AubhŒ is zero, ”…”�”}”(hj[Ah²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjƒAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[AubhŒ otherwise.”…”�”}”(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‹@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Œ ”…”�”}”(hjBh²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”j1BŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÞAsbŒc.atomic_long_add_negative”†”asbuh1hhj(BubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOBh²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)�”}”(hj|h]”hŒv”…”�”}”(hjjBh²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Œ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)�”}”(hj Ch]”hŒatomic_long_t *v”…”�”}”(hjCh²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ÔhjCubjÉ)�”}”(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³j"Ch´MÔhj#Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j"Ch´MÔhjËBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj¯BubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjHCh]”hŒ Description”…”�”}”(hjJCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFCubah}”(h]”h ]”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 ”…”�”}”(hj^Ch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjfCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj^CubhŒ to (”…”�”}”(hj^Ch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjxCh²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Õ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”…”�”}”(hj+Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj'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Œ ”…”�”}”(hj9Dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj'Dh²hh³j8Dh´Måubhÿ)�”}”(hŒ atomic_long_add_negative_acquire”h]”j)�”}”(hŒ atomic_long_add_negative_acquire”h]”hŒ atomic_long_add_negative_acquire”…”�”}”(hjKDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGDubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj'Dh²hh³j8Dh´Måubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjgDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjcDubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuDh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcDubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjƒDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjcDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj_Dubj:)�”}”(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€)�”}”jsjMDsbŒ"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)�”}”(hj|h]”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'Dh²hh³j8Dh´Måubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj#Dh²hh³j8Dh´Måubah}”(h]”jDah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j8Dh´Måhj Dh²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with acquire ordering”h]”hŒ5atomic add and test if negative with acquire 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åhjÿDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj Dh²hh³j8Dh´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Ž)�”}”(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éhjEubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjCEh]”hŒlong i”…”�”}”(hjEEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAEubah}”(h]”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Œlong value to add”h]”hŒlong value to add”…”�”}”(hj\Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jXEh´MæhjYEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jXEh´Mæhj:Eubj©)�”}”(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&]”uh1jRhjzEubah}”(h]”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çhjvEubjÉ)�”}”(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ÈhjvEubeh}”(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Ž)�”}”(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ìhjEubjM)�”}”(hŒJ**true** if the resulting value of **v** is negative, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj=Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9FubhŒ if the resulting value of ”…”�”}”(hj9Fh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjOFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9FubhŒ is negative, ”…”�”}”(hj9Fh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjaFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9FubhŒ otherwise.”…”�”}”(hj9Fh²hh³Nh´Nubeh}”(h]”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”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Gubah}”(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”†”asbuh1hhjGubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Gh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj;Gh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjGubj)�”}”(hj|h]”hŒv”…”�”}”(hjHGh²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Œ5atomic add and test if negative with release ordering”h]”hŒ5atomic add and test if negative with release ordering”…”�”}”(hjqGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M÷hjnGh²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 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_negative_release() there. **Return** **true** if the resulting value of **v** is negative, **false** otherwise.”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Œ``long i`` long value to add ”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³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´Møhj¬GubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(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³Œ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_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jHh´MùhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjåGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jHh´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�hj$Hubah}”(h]”h ]”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ŒBAtomically updates **v** to (**v** + **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(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”…”�”}”(hjkNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjgNh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjgNh²hh³jxNh´M1ubhÿ)�”}”(hŒatomic_long_add_unless”h]”j)�”}”(hŒatomic_long_add_unless”h]”hŒatomic_long_add_unless”…”�”}”(hj‹Nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‡Nubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjgNh²hh³jxNh´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)�”}”(hj|h]”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 Oh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùNubj)�”}”(hj»Ãh]”hŒa”…”�”}”(hjOh²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”…”�”}”(hj1Oh²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÷lh]”hŒu”…”�”}”(hjMOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj-Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjŸNubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjgNh²hh³jxNh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjcNh²hh³jxNh´M1ubah}”(h]”j^Nah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jxNh´M1hj`Nh²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hjvOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M1hjsOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj`Nh²hh³jxNh´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 Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jPh´M3hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjêOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jPh´M3hj®Oubj©)�”}”(hŒ&``long u`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long u``”h]”jS)�”}”(hj)Ph]”hŒlong u”…”�”}”(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´M4hj#PubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hjBPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j>Ph´M4hj?Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj#Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j>Ph´M4hj®Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj’OubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjdPh]”hŒ Description”…”�”}”(hjfPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjbPubah}”(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 (”…”�”}”(hjzPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‚Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzPubhŒ != ”…”�”}”(hjzPh²hh³Nh´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hj”Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzPubhŒ), atomically updates ”…”�”}”(hjzPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¦Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzPubhŒ to (”…”�”}”(hjzPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¸Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzPubhŒ + ”…”�”}”(hjzPh²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hjÊPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzPubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjzPh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÜPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzPubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjzPh²hh³Nh´Nubeh}”(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Ž)�”}”(hjQh]”hŒReturn”…”�”}”(hjQh²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:hj’OubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQubhŒ if ”…”�”}”(hjQh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj2Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQubhŒ was updated, ”…”�”}”(hjQh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjDQh²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”…”�”}”(hj}Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjyQh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Qh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyQh²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þhjyQh²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)�”}”(hj|h]”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&]”jjuh1j3hjyQh²hh³jŠQh´MFubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjuQh²hh³jŠQh´MFubah}”(h]”jpQah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŠQh´MFhjrQh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic increment unless zero with full ordering”h]”hŒ/atomic increment unless zero with full ordering”…”�”}”(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´MFhjRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjrQh²hh³jŠQh´MFubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj8RjHj8RjI‰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Ž)�”}”(hjBRh]”hŒ Parameters”…”�”}”(hjDRh²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´MJhj= 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Ž)�”}”(hjVTh]”hŒ Parameters”…”�”}”(hjXTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjTTubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M]hjPTubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjuTh]”hŒatomic_long_t *v”…”�”}”(hjwTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjsTubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MZhjoTubjÉ)�”}”(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´MZhj‹Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjoTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠTh´MZhjlTubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjPTubjM)�”}”(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\hjPTubjM)�”}”(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”…”�”}”(hjUh²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[hjPTubjM)�”}”(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^hjPTubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj.Uh]”hŒReturn”…”�”}”(hj0Uh²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`hjPTubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjHUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDUubhŒ if ”…”�”}”(hjDUh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDUubhŒ was updated, ”…”�”}”(hjDUh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjlUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjDUubhŒ otherwise.”…”�”}”(hjDUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MahjPTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ,atomic_long_dec_unless_positive (C function)”Œ!c.atomic_long_dec_unless_positive”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ7bool atomic_long_dec_unless_positive (atomic_long_t *v)”h]”hù)�”}”(hŒ6bool atomic_long_dec_unless_positive(atomic_long_t *v)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hj¥Uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¡Uh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MlubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Uh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡Uh²hh³j²Uh´Mlubhÿ)�”}”(hŒatomic_long_dec_unless_positive”h]”j)�”}”(hŒatomic_long_dec_unless_positive”h]”hŒatomic_long_dec_unless_positive”…”�”}”(hjÅUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁUubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj¡Uh²hh³j²Uh´Mlubj4)�”}”(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ä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_long_dec_unless_positive”†”asbuh1hhjÝUubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÝUubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÝUubj)�”}”(hj|h]”hŒv”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÝUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÙUubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj¡Uh²hh³j²Uh´Mlubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj�Uh²hh³j²Uh´Mlubah}”(h]”j˜Uah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j²Uh´MlhjšUh²hubj4)�”}”(hhh]”jM)�”}”(hŒ3atomic decrement unless positive with full ordering”h]”hŒ3atomic decrement unless positive with full ordering”…”�”}”(hjHVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MlhjEVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjšUh²hh³j²Uh´Mlubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj`VjHj`VjI‰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_dec_unless_positive() there. **Return** **true** if **v** was updated, **false** otherwise.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjjVh]”hŒ Parameters”…”�”}”(hjlVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhVubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MphjdVubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj‰Vh]”hŒatomic_long_t *v”…”�”}”(hj‹Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj‡Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MmhjƒVubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj¢Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jžVh´MmhjŸVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjƒVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jžVh´Mmhj€Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjdVubjM)�”}”(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´MohjdVubjM)�”}”(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ÚVh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjâVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚVubhŒ <= 0), 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”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚVubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hjÚVh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚVubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(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´MnhjdVubjM)�”}”(hŒOUnsafe to use in noinstr code; use raw_atomic_long_dec_unless_positive() there.”h]”hŒOUnsafe to use in noinstr code; use raw_atomic_long_dec_unless_positive() there.”…”�”}”(hj1Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MqhjdVubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjBWh]”hŒReturn”…”�”}”(hjDWh²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´MshjdVubjM)�”}”(hŒ3**true** if **v** was updated, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj\Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXWubhŒ if ”…”�”}”(hjXWh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjnWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXWubhŒ was updated, ”…”�”}”(hjXWh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj€Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXWubhŒ otherwise.”…”�”}”(hjXWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MthjdVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ(atomic_long_dec_if_positive (C function)”Œc.atomic_long_dec_if_positive”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ3long atomic_long_dec_if_positive (atomic_long_t *v)”h]”hù)�”}”(hŒ2long atomic_long_dec_if_positive(atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj¹Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjµWh²hh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjµWh²hh³jÇWh´Mubhÿ)�”}”(hŒatomic_long_dec_if_positive”h]”j)�”}”(hŒatomic_long_dec_if_positive”h]”hŒatomic_long_dec_if_positive”…”�”}”(hjÚWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖWubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjµWh²hh³jÇWh´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ù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.atomic_long_dec_if_positive”†”asbuh1hhjòWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjòWubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj'Xh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjòWubj)�”}”(hj|h]”hŒv”…”�”}”(hj4Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjòWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîWubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjµWh²hh³jÇWh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj±Wh²hh³jÇWh´Mubah}”(h]”j¬Wah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÇWh´Mhj®Wh²hubj4)�”}”(hhh]”jM)�”}”(hŒ/atomic decrement if positive with full ordering”h]”hŒ/atomic decrement if positive with full ordering”…”�”}”(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´MhjZXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj®Wh²hh³jÇWh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjuXjHjuXjI‰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. 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Ž)�”}”(hjXh]”hŒ Parameters”…”�”}”(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ƒhjyXubj¤)�”}”(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£hjyXubjM)�”}”(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‚hjyXubjM)�”}”(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 Yh²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�hjyXubjM)�”}”(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.”…”�”}”(hjFYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M„hjyXubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjWYh]”hŒReturn”…”�”}”(hjYYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjUYubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M†hjyXubjM)�”}”(hŒFThe old value of (**v** - 1), regardless of whether **v** was updated.”h]”(hŒThe old value of (”…”�”}”(hjmYh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjuYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmYubhŒ - 1), regardless of whether ”…”�”}”(hjmYh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‡Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmYubhŒ was updated.”…”�”}”(hjmYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œl/var/lib/git/docbuild/linux/Documentation/driver-api/basics:99: ./include/linux/atomic/atomic-instrumented.h”h´M‡hjyXubeh}”(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 Zh²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&]”uh1jhjZubah}”(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Œ*”…”�”}”(hjIZh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjùYubj)�”}”(hj|h]”hŒv”…”�”}”(hjVZh²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”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M½hj|Zh²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)�”}”(hj|h]”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´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”…”�”}”(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Í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²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Ž)�”}”(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´MÑhju\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£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´MÐhju\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Ïhju\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Ñ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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÓhju\ubjM)�”}”(hŒThe value loaded from **v**.”h]”(hŒThe value loaded from ”…”�”}”(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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.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éŒ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”…”�”}”(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Œ ”…”�”}”(hjƒ]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjp]h²hh³j‚]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þhjp]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”†”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Œ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&]”jjuh1j3hjp]h²hh³j‚]h´Mêubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjl]h²hh³j‚]h´Mêubah}”(h]”jg]ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‚]h´Mêhji]h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with relaxed ordering”h]”hŒ atomic set with relaxed 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&]”uh1j3hji]h²hh³j‚]h´Mêubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjd^jHjd^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Ž)�”}”(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Œ$``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£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Œ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”…”�”}”(hj1_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íhjh^ubjM)�”}”(hŒ;Safe to use in noinstr code; prefer atomic_set() elsewhere.”h]”hŒ;Safe to use in noinstr code; prefer atomic_set() 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ïhjh^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ñhjh^ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(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´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_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)�”}”(hj|h]”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”…”�”}”(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)�”}”(hjªÑh]”hŒi”…”�”}”(hjO`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”…”�”}”(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&]”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 ah²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°`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�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Œ5Atomically sets **v** to **i** with release ordering.”h]”(hŒAtomically sets ”…”�”}”(hjCah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjKah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCaubhŒ to ”…”�”}”(hjCah²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj]ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCaubhŒ with release ordering.”…”�”}”(hjCah²hh³Nh´Nubeh}”(h]”h ]”h"]”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.”…”�”}”(hjvah²hh³Nh´Nubah}”(h]”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�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´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 bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjbubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj%bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjbubj:)�”}”(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”jBbŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjïasbŒc.raw_atomic_add”†”asbuh1hhj9bubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9bubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjnbh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj9bubj)�”}”(hj|h]”hŒv”…”�”}”(hj{bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjbubeh}”(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”…”�”}”(hj ch²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´MhjcubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hj7ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j3ch´Mhj4cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j3ch´MhjÜbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÀbubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjYch]”hŒ Description”…”�”}”(hj[ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWcubah}”(h]”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 ”…”�”}”(hjoch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjwch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjocubhŒ to (”…”�”}”(hjoch²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‰ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjocubhŒ + ”…”�”}”(hjoch²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj›ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjocubhŒ) with relaxed ordering.”…”�”}”(hjoch²hh³Nh´Nubeh}”(h]”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 dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjdh²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Œ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjdh²hh³jdh´M&ubhÿ)�”}”(hŒraw_atomic_add_return”h]”j)�”}”(hŒraw_atomic_add_return”h]”hŒraw_atomic_add_return”…”�”}”(hj+dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj'dubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjdh²hh³jdh´M&ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjGdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjCdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUdh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjCdubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjcdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?dubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_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_add_return”†”asbuh1hhjwdubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjždh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjwdubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¬dh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjwdubj)�”}”(hj|h]”hŒv”…”�”}”(hj¹dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjwdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj?dubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjdh²hh³jdh´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjdh²hh³jdh´M&ubah}”(h]”jýcah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jdh´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³jdh´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Ž)�”}”(hjeh]”hŒ Parameters”…”�”}”(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´M*hjþdubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS•)�”}”(hj#eh]”hŒint i”…”�”}”(hj%eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!eubah}”(h]”h ]”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”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjiubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjLih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjiubj)�”}”(hj|h]”hŒv”…”�”}”(hjYih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiubeh}”(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”…”�”}”(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\hjih²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”…”�”}”(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ºiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjžiubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj7jh]”hŒ Description”…”�”}”(hj9jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5jubah}”(h]”h ]”h"]”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 ”…”�”}”(hjMjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjUjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMjubhŒ to (”…”�”}”(hjMjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjgjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMjubhŒ + ”…”�”}”(hjMjh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjyjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMjubhŒ) with release ordering.”…”�”}”(hjMjh²hh³Nh´Nubeh}”(h]”h ]”h"]”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 kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjöjh²hh³jkh´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&]”uh1jhjkubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjöjh²hh³jkh´Mvubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hj7kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj3kubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3kubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjSkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj/kubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjnkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjkkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jpkŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjksbŒc.raw_atomic_add_return_relaxed”†”asbuh1hhjgkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjgkubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjœkh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjgkubj)�”}”(hj|h]”hŒv”…”�”}”(hj©kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj/kubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjöjh²hh³jkh´Mvubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjòjh²hh³jkh´Mvubah}”(h]”jíjah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jkh´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³jkh´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”…”�”}”(hjlh²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´Mwhj lubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj,lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j(lh´Mwhj)lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j(lh´Mwhj lubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjLlh]”hŒ atomic_t *v”…”�”}”(hjNlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJlubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MxhjFlubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjelh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jalh´Mxhjblubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jalh´Mxhj lubeh}”(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�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´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 mh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjmh²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~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”…”�”}”(hjJmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjFmh²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Œ ”…”�”}”(hjYmh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjFmh²hh³jXmh´M�ubhÿ)�”}”(hŒraw_atomic_fetch_add”h]”j)�”}”(hŒraw_atomic_fetch_add”h]”hŒraw_atomic_fetch_add”…”�”}”(hjkmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgmubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjFmh²hh³jXmh´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ûhjƒmubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjƒmubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj£mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjmubj:)�”}”(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€)�”}”jsjmmsbŒ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)�”}”(hj|h]”hŒv”…”�”}”(hjùmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjmubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjFmh²hh³jXmh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjBmh²hh³jXmh´M�ubah}”(h]”j=mah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jXmh´M�hj?mh²hubj4)�”}”(hhh]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full 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�hjnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj?mh²hh³jXmh´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Ž)�”}”(hjDnh]”hŒ Parameters”…”�”}”(hjFnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBnubah}”(h]”h ]”h"]”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Œ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjcnh]”hŒint i”…”�”}”(hjenh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjanubah}”(h]”h ]”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Œint value to add”h]”hŒint value to add”…”�”}”(hj|nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jxnh´MŽhjynubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jxnh´MŽhjZnubj©)�”}”(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�hjZnubeh}”(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** + **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”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjínubhŒ + ”…”�”}”(hjính²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjoh²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�hj>nubjM)�”}”(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.”…”�”}”(hj2oh²hh³Nh´Nubah}”(h]”h ]”h"]”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Ž)�”}”(hjCoh]”hŒReturn”…”�”}”(hjEoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAoubah}”(h]”h ]”h"]”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 ”…”�”}”(hjYoh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjaoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjYoubhŒ.”…”�”}”(hjYoh²hh³Nh´Nubeh}”(h]”h ]”h"]”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_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 pubah}”(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”†”asbuh1hhjpubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.ph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjpubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjsh²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Åhj6subjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjUsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQsh´MÅhjRsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6subeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQsh´MÅhjúrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÞrubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjwsh]”hŒ Description”…”�”}”(hjysh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjusubah}”(h]”h ]”h"]”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”…”�”}”(hjth²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ûhj6th²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Œ ”…”�”}”(hjIth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6th²hh³jHth´MÝubhÿ)�”}”(hŒraw_atomic_fetch_add_relaxed”h]”j)�”}”(hŒraw_atomic_fetch_add_relaxed”h]”hŒraw_atomic_fetch_add_relaxed”…”�”}”(hj[th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWtubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj6th²hh³jHth´MÝubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjwth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjstubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjstubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj“th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjstubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjotubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_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€)�”}”jsj]tsbŒc.raw_atomic_fetch_add_relaxed”†”asbuh1hhj§tubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§tubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÜth²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj§tubj)�”}”(hj|h]”hŒv”…”�”}”(hjéth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjotubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj6th²hh³jHth´MÝubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj2th²hh³jHth´MÝubah}”(h]”j-tah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jHth´MÝhj/th²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝhjuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj/th²hh³jHth´MÝubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj*ujHj*ujI‰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_fetch_add_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hj4uh]”hŒ Parameters”…”�”}”(hj6uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2uubah}”(h]”h ]”h"]”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Œ``int i`` int value to add ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjSuh]”hŒint i”…”�”}”(hjUuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjQuubah}”(h]”h ]”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ÞhjMuubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hjluh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jhuh´MÞhjiuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjMuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jhuh´MÞhjJuubj©)�”}”(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ßhj†uubjÉ)�”}”(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Èhj†uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¡uh´MßhjJuubeh}”(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 vh²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.”…”�”}”(hj"vh²hh³Nh´Nubah}”(h]”h ]”h"]”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Ž)�”}”(hj3vh]”hŒReturn”…”�”}”(hj5vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1vubah}”(h]”h ]”h"]”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 ”…”�”}”(hjIvh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjQvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIvubhŒ.”…”�”}”(hjIvh²hh³Nh´Nubeh}”(h]”h ]”h"]”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ûhj†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_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þhj†vh²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”jwŒ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)�”}”(hj|h]”hŒv”…”�”}”(hj9wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj÷vubeh}”(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ôhjvh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hjbwh²hh³Nh´Nubah}”(h]”h ]”h"]”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&]”uh1j3hjvh²hh³j˜vh´Môubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjzwjHjzwjI‰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Ž)�”}”(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Œ ``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£hj~wubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjxh]”hŒ Description”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxubah}”(h]”h ]”h"]”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 relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj-xh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj5xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-xubhŒ to (”…”�”}”(hj-xh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjGxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj-xubhŒ - ”…”�”}”(hj-xh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjYxh²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÷hj~wubjM)�”}”(hŒ;Safe to use in noinstr code; prefer atomic_sub() elsewhere.”h]”hŒ;Safe to use in noinstr code; prefer atomic_sub() elsewhere.”…”�”}”(hjrxh²hh³Nh´Nubah}”(h]”h ]”h"]”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Œ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ühj~wubeh}”(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”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjyubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjyubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj!yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjýxubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_t”…”�”}”(hjyŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjëxsbŒc.raw_atomic_sub_return”†”asbuh1hhj5yubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\yh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5yubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjjyh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj5yubj)�”}”(hj|h]”hŒv”…”�”}”(hjwyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5yubeh}”(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&]”uh1jRhjzubah}”(h]”h ]”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”…”�”}”(hj3zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j/zh´Mhj0zubah}”(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Ž)�”}”(hjUzh]”hŒ Description”…”�”}”(hjWzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSzubah}”(h]”h ]”h"]”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 ”…”�”}”(hjkzh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjszh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkzubhŒ to (”…”�”}”(hjkzh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj…zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkzubhŒ - ”…”�”}”(hjkzh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj—zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkzubhŒ) with full ordering.”…”�”}”(hjkzh²hh³Nh´Nubeh}”(h]”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”…”�”}”(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Œ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”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)�”}”(hjªÑh]”hŒi”…”�”}”(hjq{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQ{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjM{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”†”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Œv”…”�”}”(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&]”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³Œ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)�”}”(hj1|h]”hŒint i”…”�”}”(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Œint value to subtract”h]”hŒint value to subtract”…”�”}”(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Œ$``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”…”�”}”(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³Œ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”…”�”}”(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_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&]”uh1jhj…}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€)�”}”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)�”}”(hj|h]”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 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³jv}h´M;ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjX~jHjX~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Ž)�”}”(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Œ ``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<hjx~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=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Œ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”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhŒ - ”…”�”}”(hj h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj7h²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Œ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.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”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Ž)�”}”(hjah]”hŒReturn”…”�”}”(hjch²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ŒThe updated value of **v**.”h]”(hŒThe updated 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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.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éŒ*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Œ ”…”�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(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´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Ž)�”}”(hjE�h]”hŒ Description”…”�”}”(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´MYhj¬€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”…”�”}”(hjc�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[�ubhŒ to (”…”�”}”(hj[�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hju�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´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”…”�”}”(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_sub”†”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)�”}”(hj|h]”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´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³j6ƒh´Mmhj7ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6ƒh´Mmhjƒ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´MnhjTƒ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´Mnhjpƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjTƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³joƒ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”…”�”}”(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_sub_acquire”h]”j)�”}”(hŒraw_atomic_fetch_sub_acquire”h]”hŒraw_atomic_fetch_sub_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_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)�”}”(hj|h]”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 subtract with acquire ordering”h]”hŒ%atomic subtract 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 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Ž)�”}”(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 to subtract ”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 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È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_sub_acquire() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_fetch_sub_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_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Œ ”…”�”}”(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)�”}”(hj|h]”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 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** ``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Ž)�”}”(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_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”…”�”}”(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_sub_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)�”}”(hj|h]”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 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)�”}”(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_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”…”�”}”(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_inc”h]”j)�”}”(hŒraw_atomic_inc”h]”hŒraw_atomic_inc”…”�”}”(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_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€)�”}”jsjk‹sbŒc.raw_atomic_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Œ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 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&]”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„)�”}”(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”…”�”}”(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³Œ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 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”…”�”}”(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€)�”}”jsj*�sbŒc.raw_atomic_inc_return”†”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)�”}”(hj|h]”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”…”�”}”(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 ”…”�”}”(hj=Žh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjEŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=ŽubhŒ to (”…”�”}”(hj=Žh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjWŽ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ŒBSafe to use in noinstr code; prefer atomic_inc_return() elsewhere.”h]”hŒBSafe to use in noinstr code; prefer atomic_inc_return() elsewhere.”…”�”}”(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´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_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Œ ”…”�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(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´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”…”�”}”(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´Mhjy�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.”…”�”}”(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˜�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´Mhj˜�ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated 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´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)�”}”(hj|h]”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”…”�”}”(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´MhjJ‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjž�h²hh³j·�h´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGje‘jHje‘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Ž)�”}”(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´Mhji‘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£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´Mhji‘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´Mhji‘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´Mhji‘ubjM)�”}”(hŒ **Return**”h]”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 updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hj9’h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjA’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9’ubhŒ.”…”�”}”(hj9’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_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”…”�”}”(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´M4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰’h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjv’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þhjv’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)�”}”(hj|h]”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³jˆ’h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjr’h²hh³jˆ’h´M4ubah}”(h]”jm’ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jˆ’h´M4hjo’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&]”uh1j3hjo’h²hh³jˆ’h´M4ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj6“jHj6“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Ž)�”}”(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´M8hj:“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”…”�”}”(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´M5hjY“ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjx“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jt“h´M5hju“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjY“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jt“h´M5hjV“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”…”�”}”(hjK”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjG”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Œ ”…”�”}”(hjZ”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjG”h²hh³jY”h´MJubhÿ)�”}”(hŒraw_atomic_fetch_inc”h]”j)�”}”(hŒraw_atomic_fetch_inc”h]”hŒraw_atomic_fetch_inc”…”�”}”(hjl”h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh”ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjG”h²hh³jY”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€)�”}”jsjn”sbŒc.raw_atomic_fetch_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Œ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³jY”h´MJubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjC”h²hh³jY”h´MJubah}”(h]”j>”ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jY”h´MJhj@”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&]”uh1j3hj@”h²hh³jY”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)�”}”(hj0•h]”hŒ atomic_t *v”…”�”}”(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´MKhj*•ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjI•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jE•h´MKhjF•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jE•h´MKhj'•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³Œ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 ”…”�”}”(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´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”…”�”}”(hj=–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9–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”…”�”}”(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_inc_acquire”†”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)�”}”(hj|h]”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´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Ž)�”}”(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´MghjÜ–ubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with acquire 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”…”�”}”(hjl—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjR—ubhŒ + 1) with acquire 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´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.”…”�”}”(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´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Œ ”…”�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(hjh˜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”…”�”}”(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€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.”…”�”}”(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‚hj­˜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„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_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)�”}”(hj|h]”hŒv”…”�”}”(hj9š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”…”�”}”(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´M—hj_šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj³™h²hh³jÌ™h´M—ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjzšjHjzš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Ž)�”}”(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 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Œ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›hj~š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³Œ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 ”…”�”}”(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³Œ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 (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)�”}”(hj|h]”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”…”�”}”(hj3œ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­hj0œ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_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Ž)�”}”(hjUœh]”hŒ Parameters”…”�”}”(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±hjOœubj¤)�”}”(hhh]”j©)�”}”(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®hjkœ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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M°hjOœ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¯hjOœ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±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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M³hjOœ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´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_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”…”�”}”(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´MÁubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJ�h²hh³j\�h´MÁubhÿ)�”}”(hŒraw_atomic_dec_return”h]”j)�”}”(hŒraw_atomic_dec_return”h]”hŒraw_atomic_dec_return”…”�”}”(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Œ (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€)�”}”jsjq�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)�”}”(hj|h]”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´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Œ#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&]”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** ``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)�”}”(hj3žh]”hŒ atomic_t *v”…”�”}”(hj5žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1ž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”…”�”}”(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³Œ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Œ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”…”�”}”(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”jaŸŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjBŸsbŒc.raw_atomic_dec_return_acquire”†”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)�”}”(hj|h]”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 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Ž)�”}”(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Œ>Atomically updates **v** to (**v** - 1) 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”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjU ubhŒ - 1) 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Œ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”…”�”}”(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_dec_return_release”†”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)�”}”(hj|h]”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 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”…”�”}”(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÷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.”…”�”}”(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Ž)�”}”(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 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_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)�”}”(hj|h]”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 relaxed ordering”h]”hŒ&atomic decrement 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´Mhjb£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 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�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 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´Mhj�£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´Mhj�£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³Œ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 ”…”�”}”(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´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_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)�”}”(hj|h]”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”…”�”}”(hj6¥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$hj3¥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 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Ž)�”}”(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)�”}”(hjw¥h]”hŒ atomic_t *v”…”�”}”(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Œ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Èhjq¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŒ¥h´M%hjn¥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 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&hjR¥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(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 ”…”�”}”(hj"¦h²hh³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+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_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”…”�”}”(hjc¦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Œ ”…”�”}”(hjr¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj_¦h²hh³jq¦h´M>ubhÿ)�”}”(hŒraw_atomic_fetch_dec_acquire”h]”j)�”}”(hŒraw_atomic_fetch_dec_acquire”h]”hŒraw_atomic_fetch_dec_acquire”…”�”}”(hj„¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€¦ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj_¦h²hh³jq¦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_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Œ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³jq¦h´M>ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj[¦h²hh³jq¦h´M>ubah}”(h]”jV¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jq¦h´M>hjX¦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&]”uh1j3hjX¦h²hh³jq¦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)�”}”(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”…”�”}”(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?§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´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”…”�”}”(hj4¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj0¨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Œ ”…”�”}”(hjC¨h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0¨h²hh³jB¨h´MXubhÿ)�”}”(hŒraw_atomic_fetch_dec_release”h]”j)�”}”(hŒraw_atomic_fetch_dec_release”h]”hŒraw_atomic_fetch_dec_release”…”�”}”(hjU¨h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQ¨ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0¨h²hh³jB¨h´MXubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_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.raw_atomic_fetch_dec_release”†”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)�”}”(hj|h]”hŒv”…”�”}”(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´MXubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,¨h²hh³jB¨h´MXubah}”(h]”j'¨ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jB¨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³jB¨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”…”�”}”(hj2©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Ž)�”}”(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´M[hjô¨ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with release 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Œ - 1) with release 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´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”…”�”}”(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.raw_atomic_fetch_dec_relaxed”†”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)�”}”(hj|h]”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´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”…”�”}”(hjC«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;«ubhŒ to (”…”�”}”(hj;«h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjU«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.”…”�”}”(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´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³Œ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”…”�”}”(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_and”†”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)�”}”(hj|h]”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 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”…”�”}”(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Œ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³Œ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”…”�”}”(hj5®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1®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”…”�”}”(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)�”}”(hjªÑh]”hŒi”…”�”}”(hjm®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjM®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjI®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€)�”}”jsj7®sbŒc.raw_atomic_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)�”}”(hj|h]”hŒv”…”�”}”(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&]”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”…”�”}”(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$¯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Œ?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”…”�”}”(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_fetch_and_acquire”h]”j)�”}”(hŒraw_atomic_fetch_and_acquire”h]”hŒraw_atomic_fetch_and_acquire”…”�”}”(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Œ(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)�”}”(hj|h]”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³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Œ(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³Œ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&]”uh1j3hjY°h²hh³jr°h´M³ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjT±jHjT±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Ž)�”}”(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Œ``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”…”�”}”(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Œ$``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£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 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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¶hjX±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.”…”�”}”(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´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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.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éŒ)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Œ ”…”�”}”(hjH³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!³ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjV³h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj!³ubj)�”}”(hj|h]”hŒv”…”�”}”(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 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ÏhjdzubjÉ)�”}”(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Èhjdzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jâ³h´MÏhjijubj©)�”}”(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Ðhjijubeh}”(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³Œ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 ”…”�”}”(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Œ**v**”h]”hŒv”…”�”}”(hjq´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW´ubhŒ & ”…”�”}”(hjW´h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(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³Œ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”…”�”}”(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_and_relaxed”†”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)�”}”(hj|h]”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 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”…”�”}”(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Œ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”…”�”}”(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_andnot”h]”j)�”}”(hŒraw_atomic_andnot”h]”hŒraw_atomic_andnot”…”�”}”(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_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)�”}”(hj|h]”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 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&]”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„)�”}”(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Ž)�”}”(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´MhjH¸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´Mhjg¸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Èhjg¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‚¸h´Mhjd¸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´Mhjd¸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´MhjH¸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´MhjH¸ubjM)�”}”(hŒ>Safe to use in noinstr code; prefer atomic_andnot() elsewhere.”h]”hŒ>Safe to use in noinstr code; prefer atomic_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´MhjH¸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´MhjH¸ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(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´MhjH¸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Œ*”…”�”}”(hj4ºh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÿ¹ubj)�”}”(hj|h]”hŒv”…”�”}”(hjAº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 AND NOT with full ordering”h]”hŒ)atomic bitwise AND NOT with full 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´Mhjgº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. 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´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´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£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 ”…”�”}”(hj5»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj=»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5»ubhŒ to (”…”�”}”(hj5»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjO»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5»ubhŒ & ”…”�”}”(hj5»h²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hja»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5»ubhŒ) with full ordering.”…”�”}”(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´Mhj†º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.”…”�”}”(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´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_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”…”�”}”(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_fetch_andnot_acquire”†”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)�”}”(hj|h]”hŒv”…”�”}”(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 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)�”}”(hj4½h]”hŒ atomic_t *v”…”�”}”(hj6½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj2½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”…”�”}”(hjM½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jI½h´M1hjJ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj.½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jI½h´M1hjò¼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³Œ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 ”…”�”}”(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´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”…”�”}”(hj2¾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Œ ”…”�”}”(hjA¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj.¾h²hh³j@¾h´MJubhÿ)�”}”(hŒraw_atomic_fetch_andnot_release”h]”j)�”}”(hŒraw_atomic_fetch_andnot_release”h]”hŒraw_atomic_fetch_andnot_release”…”�”}”(hjS¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjO¾ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj.¾h²hh³j@¾h´MJubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”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)�”}”(hjªÑh]”hŒi”…”�”}”(hj‹¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjg¾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€)�”}”jsjU¾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)�”}”(hj|h]”hŒv”…”�”}”(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´MJubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj*¾h²hh³j@¾h´MJubah}”(h]”j%¾ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j@¾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³j@¾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)�”}”(hjK¿h]”hŒint 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´MKhjE¿ubjÉ)�”}”(hhh]”jM)�”}”(hŒ int value”h]”hŒ int value”…”�”}”(hjd¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`¿h´MKhja¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjE¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`¿h´MKhjB¿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´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´MLhjB¿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 ”…”�”}”(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´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”…”�”}”(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_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þhj~À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)�”}”(hj|h]”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´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjzÀh²hh³j�Àh´Mdubah}”(h]”juÀah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�Àh´MdhjwÀh²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT with relaxed 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´MdhjWÁh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjwÀh²hh³j�Àh´Mdubeh}”(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 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Ž)�”}”(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´MhhjvÁ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£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´MhhjvÁ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”…”�”}”(hjQÂ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´MghjvÁ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.”…”�”}”(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´MihjvÁ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´MkhjvÁ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´MlhjvÁ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”…”�”}”(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_or”†”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Œ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 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”…”�”}”(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´MhjÆÃubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) 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”…”�”}”(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 relaxed 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Œ: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”…”�”}”(hj1Å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”…”�”}”(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)�”}”(hjªÑh]”hŒi”…”�”}”(hjiÅh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjEÅ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€)�”}”jsj3ÅsbŒc.raw_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)�”}”(hj|h]”hŒv”…”�”}”(hj¿Åh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjEÅ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”…”�”}”(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Œ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjbÆh]”hŒ atomic_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 atomic_t”h]”hŒpointer to atomic_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Ž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”…”�”}”(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_fetch_or_acquire”h]”j)�”}”(hŒraw_atomic_fetch_or_acquire”h]”hŒraw_atomic_fetch_or_acquire”…”�”}”(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Œ(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_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Œ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³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Œ'atomic bitwise OR with acquire ordering”h]”hŒ'atomic bitwise OR with acquire ordering”…”�”}”(hj8È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Èh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjUÇh²hh³jnÇ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`` 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Ž)�”}”(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Œ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjyÈh]”hŒint i”…”�”}”(hj{Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjwÈ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¨hjsÈ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ÈhjsÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŽÈh´M¨hjpÈ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©hjpÈ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Œ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ªhjTÈ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.”…”�”}”(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¬hjTÈubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjYÉh]”hŒReturn”…”�”}”(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®hjTÈubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjoÉh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjwÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjoÉubhŒ.”…”�”}”(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´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_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Œ ”…”�”}”(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)�”}”(hj|h]”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 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Â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_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Ž)�”}”(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 ”…”�”}”(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 release ordering.”…”�”}”(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´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”…”�”}”(hj=Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj9ÌubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKÌh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9Ìubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjYÌh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj5Ìubj:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_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.raw_atomic_fetch_or_relaxed”†”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)�”}”(hj|h]”hŒv”…”�”}”(hj¯Ìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj5Ì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”…”�”}”(hj2Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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)�”}”(hjRÍh]”hŒ atomic_t *v”…”�”}”(hjTÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjPÍ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ÞhjLÍ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ÈhjLÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jgÍ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”…”�”}”(hjPÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjLÎ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&]”uh1jPhjLÎh²hh³j^Îh´Móubhÿ)�”}”(hŒraw_atomic_xor”h]”j)�”}”(hŒraw_atomic_xor”h]”hŒraw_atomic_xor”…”�”}”(hjqÎh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmÎubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjLÎ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€)�”}”jsjsÎ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)�”}”(hj|h]”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&]”jjuh1j3hjLÎh²hh³j^Îh´Móubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjHÎh²hh³j^Îh´Móubah}”(h]”jCÎah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j^Îh´MóhjEÎ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&]”uh1j3hjEÎ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_xor() elsewhere. **Return** Nothing.”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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M÷hjDÏubj¤)�”}”(hhh]”(j©)�”}”(hŒ``int i`` int value ”h]”(j¯)�”}”(hŒ ``int i``”h]”jS)�”}”(hjiÏh]”hŒint i”…”�”}”(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Œ 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ÈhjcÏ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£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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M÷hjDÏ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öhjDÏubjM)�”}”(hŒ;Safe to use in noinstr code; prefer atomic_xor() elsewhere.”h]”hŒ;Safe to use in noinstr code; prefer atomic_xor() elsewhere.”…”�”}”(hj8Ð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øhjDÏ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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MúhjDÏ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ûhjDÏ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Œ*”…”�”}”(hj0Ñh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjûÐubj)�”}”(hj|h]”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 full ordering”h]”hŒ%atomic bitwise XOR with full ordering”…”�”}”(hjfÑ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´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º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�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´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£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 ”…”�”}”(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 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´Mhj‚Ñ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.”…”�”}”(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 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_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”…”�”}”(hj7Ó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”…”�”}”(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€)�”}”jsjÓsbŒc.raw_atomic_fetch_xor_acquire”†”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)�”}”(hj|h]”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´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)�”}”(hj0Ôh]”hŒ atomic_t *v”…”�”}”(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Œpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(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îÓ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³Œ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_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Œ ”…”�”}”(hj=Õh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*Õh²hh³j<Õh´M:ubhÿ)�”}”(hŒraw_atomic_fetch_xor_release”h]”j)�”}”(hŒraw_atomic_fetch_xor_release”h]”hŒraw_atomic_fetch_xor_release”…”�”}”(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Œ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”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)�”}”(hjªÑh]”hŒi”…”�”}”(hj‡Õh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjcÕ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€)�”}”jsjQÕ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)�”}”(hj|h]”hŒv”…”�”}”(hjÝÕh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjcÕ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** ``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)�”}”(hjGÖh]”hŒint i”…”�”}”(hjIÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjEÖ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;hjAÖ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ÈhjAÖ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<hjzÖ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ÈhjzÖ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Œ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 ”…”�”}”(hj=×h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjE×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´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”…”�”}”(hj~×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjz×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&]”uh1jPhjz×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þhjz×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)�”}”(hj|h]”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&]”jjuh1j3hjz×h²hh³jŒ×h´MTubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjv×h²hh³jŒ×h´MTubah}”(h]”jq×ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŒ×h´MThjs×h²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR 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´MThjSØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjs×h²hh³jŒ×h´MTubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjnØjHjnØ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Ž)�”}”(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´MXhjrØ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£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´MXhjrØ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”…”�”}”(hjMÙ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´MWhjrØ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.”…”�”}”(hjfÙ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´MYhjrØ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³Œ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 ”…”�”}”(hj�Ùh²hh³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\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_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Œ*”…”�”}”(hj<Úh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÚubj)�”}”(hj|h]”hŒv”…”�”}”(hjIÚ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”…”�”}”(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)�”}”(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´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³j6Ûh´Mmhj7Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j6Ûh´MmhjßÚ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³Œ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 ”…”�”}”(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Œ**new**”h]”hŒnew”…”�”}”(hjŒÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjrÛubhŒ with full 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´MnhjÃÚubjM)�”}”(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)�”}”(hj|h]”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Œ ”…”�”}”(hjNæ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”…”�”}”(hjuæh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjqæubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒæh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjqæubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(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Œ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)�”}”(hj5çh]”hŒint old”…”�”}”(hj7çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj3ç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”…”�”}”(hjNçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJçh´MñhjKçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJçh´Mñhjóæubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjnçh]”hŒint new”…”�”}”(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Œ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Èhjhç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 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Ž)�”}”(hj9èh]”hŒReturn”…”�”}”(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´Møhj׿ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjOèh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjWèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOèubhŒ.”…”�”}”(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´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 ]”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_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)�”}”(hj|h]”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Œ ”…”�”}”(hj1é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”…”�”}”(hjXéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjTéubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjféh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjTéubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjté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Œ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&]”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. 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”…”�”}”(hj1ê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)�”}”(hjQêh]”hŒint new”…”�”}”(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´MhjKêubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to assign”h]”hŒint value to assign”…”�”}”(hjjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jfêh´Mhjgêubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjKêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jfê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 ”…”�”}”(hj2ëh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj:ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ëubhŒ.”…”�”}”(hj2ë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”…”�”}”(hjsëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjoë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&]”uh1jPhjoëh²hh³j�ë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þhjoë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_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)�”}”(hj|h]”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ûhj7ìubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIìh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7ìubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(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&]”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Œ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&]”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„)�”}”(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)�”}”(hj4íh]”hŒint new”…”�”}”(hj6íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj2í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”…”�”}”(hjMíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jIíh´M+hjJíubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj.í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Ž)�”}”(hjoíh]”hŒ Description”…”�”}”(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Œ”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³Œ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Œñ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´MLhjŒï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_acquire (C function)”Œ c.raw_atomic_try_cmpxchg_acquire”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDbool raw_atomic_try_cmpxchg_acquire (atomic_t *v, int *old, int new)”h]”hù)�”}”(hŒCbool raw_atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(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´McubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…ñh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjsñh²hh³j„ñh´Mcubhÿ)�”}”(hŒraw_atomic_try_cmpxchg_acquire”h]”j)�”}”(hŒraw_atomic_try_cmpxchg_acquire”h]”hŒraw_atomic_try_cmpxchg_acquire”…”�”}”(hj—ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj“ñubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjsñh²hh³j„ñh´Mcubj4)�”}”(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_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)�”}”(hj|h]”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”…”�”}”(hj2ò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”…”�”}”(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)�”}”(hŒnew”h]”hŒnew”…”�”}”(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&]”jjuh1j3hjsñh²hh³j„ñh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjoñh²hh³j„ñh´Mcubah}”(h]”jjñah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j„ñh´Mchjlñ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´MchjŽòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjlñh²hh³j„ñh´Mcubeh}”(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. Safe to use in noinstr code; prefer atomic_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´Mghj­ò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´MdhjÌò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´Mdhjèòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÌòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jçòh´MdhjÉò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³Œ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 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´Mehj!óubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j óh´MehjÉòubj©)�”}”(hŒ ``int new`` int value to assign ”h]”(j¯)�”}”(hŒ ``int new``”h]”jS)�”}”(hjDóh]”hŒint new”…”�”}”(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´Mfhj>ó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³jYóh´MfhjZóubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj>óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jYóh´MfhjÉò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´Mhhj­ò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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mghj­òubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic_try_cmpxchg_acquire() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic_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´Mkhj­òubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj3ôh]”hŒReturn”…”�”}”(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´Mmhj­òubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjMôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIôubhŒ if the exchange occurred, ”…”�”}”(hjIôh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj_ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIôubhŒ otherwise.”…”�”}”(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´Mnhj­ò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_release (C function)”Œ c.raw_atomic_try_cmpxchg_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDbool raw_atomic_try_cmpxchg_release (atomic_t *v, int *old, int new)”h]”hù)�”}”(hŒCbool raw_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³Œ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_try_cmpxchg_release”h]”j)�”}”(hŒraw_atomic_try_cmpxchg_release”h]”hŒraw_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´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_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)�”}”(hj|h]”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Œ ”…”�”}”(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Œold”h]”hŒold”…”�”}”(hjSõ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”…”�”}”(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Œ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&]”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`` 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. Safe to use in noinstr code; prefer atomic_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Œ$``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Œ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³Œ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 int value to compare with”h]”hŒ$pointer to int value to compare with”…”�”}”(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Œ ``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´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³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³Œ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ŒKSafe to use in noinstr code; prefer atomic_try_cmpxchg_release() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic_try_cmpxchg_release() 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Œ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjn÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj÷ubhŒ if the exchange occurred, ”…”�”}”(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_atomic_try_cmpxchg_relaxed (C function)”Œ c.raw_atomic_try_cmpxchg_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒDbool raw_atomic_try_cmpxchg_relaxed (atomic_t *v, int *old, int new)”h]”hù)�”}”(hŒCbool raw_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³Œ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_try_cmpxchg_relaxed”h]”j)�”}”(hŒraw_atomic_try_cmpxchg_relaxed”h]”hŒraw_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´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_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)�”}”(hj|h]”hŒv”…”�”}”(hj3ø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”…”�”}”(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”)�”}”(hj—h]”hŒ*”…”�”}”(hjgøh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjGøubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjtøh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjGø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 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** ``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. Safe to use in noinstr code; prefer atomic_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Œ$``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Œ2``int *old`` pointer to int value to compare with ”h]”(j¯)�”}”(hŒ ``int *old``”h]”jS)�”}”(hjMùh]”hŒint *old”…”�”}”(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Œ$pointer to int value to compare with”h]”hŒ$pointer to int value to compare with”…”�”}”(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 ù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£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”…”�”}”(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”…”�”}”(hj9ú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”…”�”}”(hjKú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ŒKSafe to use in noinstr code; prefer atomic_try_cmpxchg_relaxed() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic_try_cmpxchg_relaxed() 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Œ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_atomic_sub_and_test (C function)”Œc.raw_atomic_sub_and_test”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1bool raw_atomic_sub_and_test (int i, atomic_t *v)”h]”hù)�”}”(hŒ0bool raw_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³Œ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_and_test”h]”j)�”}”(hŒraw_atomic_sub_and_test”h]”hŒraw_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´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”…”�”}”(hj2û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”…”�”}”(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.raw_atomic_sub_and_test”†”asbuh1hhjFûubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmûh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjFûubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj{ûh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjFûubj)�”}”(hj|h]”hŒv”…”�”}”(hjˆûh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFû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”…”�”}”(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éû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³Œ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Œ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”…”�”}”(hjIýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjEý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&]”uh1jPhjEýh²hh³jVýh´MÙubhÿ)�”}”(hŒraw_atomic_dec_and_test”h]”j)�”}”(hŒraw_atomic_dec_and_test”h]”hŒraw_atomic_dec_and_test”…”�”}”(hjiýh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeýubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjEýh²hh³jVý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€)�”}”jsjkýsbŒc.raw_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)�”}”(hj|h]”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&]”jjuh1j3hjEýh²hh³jVýh´MÙubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjAý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Œ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&]”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_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”…”�”}”(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³Œ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Œ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”…”�”}”(hj9ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj5ÿ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&]”uh1jPhj5ÿh²hh³jFÿh´Míubhÿ)�”}”(hŒraw_atomic_inc_and_test”h]”j)�”}”(hŒraw_atomic_inc_and_test”h]”hŒraw_atomic_inc_and_test”…”�”}”(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_t *v)”h]”j:)�”}”(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_inc_and_test”†”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)�”}”(hj|h]”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&]”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Œ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³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_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”…”�”}”(hjh²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”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j2h´Mîhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j2h´Mîhjubah}”(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³Œ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 ”…”�”}”(hjnh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnubhŒ to (”…”�”}”(hjnh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnubhŒ + 1) with full ordering.”…”�”}”(hjnh²hh³Nh´Nubeh}”(h]”h ]”h"]”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”…”�”}”(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Œ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj%h²hh³j6h´M ubhÿ)�”}”(hŒraw_atomic_add_negative”h]”j)�”}”(hŒraw_atomic_add_negative”h]”hŒraw_atomic_add_negative”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjEubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj%h²hh³j6h´M ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjaubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjaubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjaubeh}”(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€)�”}”jsjKsbŒ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)�”}”(hj|h]”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³j6h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj!h²hh³j6h´M ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j6h´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”…”�”}”(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 hjýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j6h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰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Ž)�”}”(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)�”}”(hjAh]”hŒint i”…”�”}”(hjCh²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”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jVh´M hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jVh´M hj8ubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjzh]”hŒ atomic_t *v”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjxubah}”(h]”h ]”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 hjtubjÉ)�”}”(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Èhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�h´M hj8ubeh}”(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Ž)�”}”(hj!h]”hŒReturn”…”�”}”(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 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�hj7ubhŒ if the resulting value of ”…”�”}”(hj7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7ubhŒ is negative, ”…”�”}”(hj7h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7ubhŒ otherwise.”…”�”}”(hj7h²hh³Nh´Nubeh}”(h]”h ]”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&]”uh1jhjubah}”(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”†”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)�”}”(hj|h]”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Œ5atomic add and test if negative with acquire ordering”h]”hŒ5atomic add and test if negative with acquire ordering”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.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„)�”}”(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 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´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”…”�”}”(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³Œ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”…”�”}”(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 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Œ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.”…”�”}”(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! 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”…”�”}”(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$ 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_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”…”�”}”(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´M7 ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²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”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj#ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³jh´M7 ubj4)�”}”(hŒ(int i, atomic_t *v)”h]”(j:)�”}”(hŒint i”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²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”…”�”}”(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_add_negative_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)�”}”(hj|h]”hŒv”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj;ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²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Ž)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²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”…”�”}”(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´M8 hjubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4h´M8 hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4h´M8 hjubj©)�”}”(hŒ$``atomic_t *v`` pointer to atomic_t ”h]”(j¯)�”}”(hŒ``atomic_t *v``”h]”jS)�”}”(hjXh]”hŒ atomic_t *v”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjVubah}”(h]”h ]”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 hjRubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmh´M9 hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmh´M9 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Œ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”…”�”}”(hjh²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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ if the resulting value of ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ is negative, ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ otherwise.”…”�”}”(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ú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”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjrh²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Œ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjrh²hh³jƒh´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þhjrh²hh³jƒh´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)�”}”(hj|h]”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&]”jjuh1j3hjrh²hh³jƒh´MQ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjnh²hh³jƒh´MQ ubah}”(h]”jiah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jƒh´MQ hjkh²hubj4)�”}”(hhh]”jM)�”}”(hŒ5atomic add and test if negative with relaxed ordering”h]”hŒ5atomic add and test if negative 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´MQ hjJ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjkh²hh³jƒh´MQ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGje jHje 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Ž)�”}”(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´MU hji 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 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´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 hj… 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´MU hji 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”…”�”}”(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´MT hji 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.”…”�”}”(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´MV hji 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´MX hji 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´MY 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_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Œ ”…”�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(hj` 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”…”�”}”(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Œa”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt 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)�”}”(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³Œ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”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jG h´Mi hjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj, ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jG h´Mi hj) ubj©)�”}”(hŒ``int a`` int value to add ”h]”(j¯)�”}”(hŒ ``int a``”h]”jS)�”}”(hjk h]”hŒint a”…”�”}”(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´Mj hje 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´Mj hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhje ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j€ 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”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõ ubhŒ + ”…”�”}”(hjõ h²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hjE 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”…”�”}”(hjW 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.”…”�”}”(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´Mo 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´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”…”�”}”(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_add_unless”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²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)�”}”(hj|h]”hŒv”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj ubj:)�”}”(hŒint a”h]”(jü)�”}”(hŒint”h]”hŒint”…”�”}”(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Œa”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfubeh}”(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³Œ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Ž)�”}”(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Œ$``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‡ hjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_t”h]”hŒpointer to atomic_t”…”�”}”(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‡ hjubj©)�”}”(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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mˆ hjWubjÉ)�”}”(hhh]”jM)�”}”(hŒint value to add”h]”hŒint value to add”…”�”}”(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ˆ 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”…”�”}”(hjh²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”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjçubhŒ + ”…”�”}”(hjçh²hh³Nh´NubjŽ)�”}”(hŒ**a**”h]”hŒa”…”�”}”(hj7h²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”…”�”}”(hjIh²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.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”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Ž)�”}”(hjsh]”hŒReturn”…”�”}”(hjuh²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ÿ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&]”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”…”�”}”(hj)h²hh³Nh´Nubah}”(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_not_zero”†”asbuh1hhj"ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj"ubj)�”}”(hj|h]”hŒv”…”�”}”(hjdh²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 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�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 (”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ != 0), atomically updates ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ to (”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj]h²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.”…”�”}”(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Ž)�”}”(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_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Œ ”…”�”}”(hj h²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”…”�”}”(hj=h²hh³Nh´Nubah}”(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_unless_negative”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj2ubah}”(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 (”…”�”}”(hj3h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3ubhŒ >= 0), atomically updates ”…”�”}”(hj3h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3ubhŒ to (”…”�”}”(hj3h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3ubhŒ% + 1) with full ordering. Otherwise, ”…”�”}”(hj3h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj3h²hh³Nh´Nubeh}”(h]”h ]”h"]”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Œ ”…”�”}”(hj h²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”…”�”}”(hj2h²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”…”�”}”(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€)�”}”jsj4sbŒ c.raw_atomic_dec_unless_positive”†”asbuh1hhjJubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjJubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjJubj)�”}”(hj|h]”hŒv”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjFubah}”(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]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´MÎ hjh²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&]”uh1j3hjh²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Ï 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Ž)�”}”(hj1h]”hŒ Description”…”�”}”(hj3h²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 (”…”�”}”(hjGh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubhŒ <= 0), atomically updates ”…”�”}”(hjGh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubhŒ to (”…”�”}”(hjGh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hjGh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(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Ñ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”…”�”}”(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Œ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"h²hh³j4h´Mê ubhÿ)�”}”(hŒraw_atomic_dec_if_positive”h]”j)�”}”(hŒraw_atomic_dec_if_positive”h]”hŒraw_atomic_dec_if_positive”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjCubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj"h²hh³j4h´Mê ubj4)�”}”(hŒ (atomic_t *v)”h]”j:)�”}”(hŒ atomic_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒatomic_t”h]”hŒatomic_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€)�”}”jsjIsbŒc.raw_atomic_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)�”}”(hj|h]”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³j4h´Mê ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j4h´Mê ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j4h´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³j4h´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”…”�”}”(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ë hjubjÉ)�”}”(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Èhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j h´Më hjubah}”(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´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”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj\ubhŒ > 0), atomically updates ”…”�”}”(hj\h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjvh²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Œ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”…”�”}”(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€)�”}”jsŒraw_atomic64_read”sbŒc.raw_atomic64_read”†”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Œ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj)h²hh³jQh´M ubhÿ)�”}”(hŒraw_atomic64_read”h]”j)�”}”(hjNh]”hŒraw_atomic64_read”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj)h²hh³jQh´M ubj4)�”}”(hŒ(const atomic64_t *v)”h]”j:)�”}”(hŒconst atomic64_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjh²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}]”jLŒc.raw_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)�”}”(hj|h]”hŒv”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjwubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj)h²hh³jQh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj%h²hh³jQh´M ubah}”(h]”j ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jQh´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³Œ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³jQh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰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Ž)�”}”(hj!h]”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Œ.``const atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``const atomic64_t *v``”h]”jS)�”}”(hj@h]”hŒconst atomic64_t *v”…”�”}”(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 hj:ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jUh´M hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jUh´M hj7ubah}”(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�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 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”†”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Œ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³j>h´M ubhÿ)�”}”(hŒraw_atomic64_read_acquire”h]”j)�”}”(hj;h]”hŒraw_atomic64_read_acquire”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j>h´M ubj4)�”}”(hŒ(const atomic64_t *v)”h]”j:)�”}”(hŒconst atomic64_t *v”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(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Œ 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}]”j9Œc.raw_atomic64_read_acquire”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjdubah}”(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 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³j>h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰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�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Œ.``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&]”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”…”�”}”(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$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjhh]”hŒ Description”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfubah}”(h]”h ]”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 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 hjubjM)�”}”(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 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_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”…”�”}”(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´M8 ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²hh³jh´M8 ubhÿ)�”}”(hŒraw_atomic64_set”h]”j)�”}”(hŒraw_atomic64_set”h]”hŒraw_atomic64_set”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³jh´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”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jIŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj*sbŒc.raw_atomic64_set”†”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)�”}”(hj|h]”hŒv”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj<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}]”jcŒ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”ˆjjuh1j9hj<ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjh²hh³jh´M8 ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÿh²hh³jh´M8 ubah}”(h]”júah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh´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³jh´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”…”�”}”(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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj3h]”hŒ atomic64_t *v”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj1ubah}”(h]”h ]”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”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jHh´M9 hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jHh´M9 hj*ubj©)�”}”(hŒ``s64 i`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjlh]”hŒs64 i”…”�”}”(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´M: hjfubjÉ)�”}”(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Èhjfubeh}”(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Œ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Ž)�”}”(hjh]”hŒReturn”…”�”}”(hjh²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.”…”�”}”(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@ 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”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjBh²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Œ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjBh²hh³jTh´MI ubhÿ)�”}”(hŒraw_atomic64_set_release”h]”j)�”}”(hŒraw_atomic64_set_release”h]”hŒraw_atomic64_set_release”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjcubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjBh²hh³jTh´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”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jˆŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjisbŒc.raw_atomic64_set_release”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²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)�”}”(hj|h]”hŒv”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj{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.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”ˆjjuh1j9hj{ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjBh²hh³jTh´MI ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj>h²hh³jTh´MI ubah}”(h]”j9ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jTh´MI hj;h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic set with release ordering”h]”hŒ atomic set with release ordering”…”�”}”(hj1 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³jTh´MI ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjI jHjI 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Ž)�”}”(hjS h]”hŒ Parameters”…”�”}”(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´MM 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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MJ 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´MJ hjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjl ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‡ h´MJ hji 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 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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MM hjM 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 hjM 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 hjM 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´MP hjM ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(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´MQ hjM 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”…”�”}”(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´Mc ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”!h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�!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þhj�!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)�”}”(hj|h]”hŒv”…”�”}”(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´Mc ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj}!h²hh³j“!h´Mc ubah}”(h]”jx!ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j“!h´Mc hjz!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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mc hjm"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjz!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”…”�”}”(hjC#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;#ubhŒ to (”…”�”}”(hj;#h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjU#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³Œ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.”…”�”}”(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Œ"ubjM)�”}”(hŒ **Return**”h]”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Œ ”…”�”}”(hjI$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$$ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjW$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”†”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)�”}”(hj|h]”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´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)�”}”(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´Mv hjH%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´Mv hjd%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjH%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jc%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”…”�”}”(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€)�”}”jsŒraw_atomic64_add_return_acquire”sbŒ!c.raw_atomic64_add_return_acquire”†”asbuh1hhjH&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&]”uh1jPhjH&h²hh³jp&h´M� ubhÿ)�”}”(hŒraw_atomic64_add_return_acquire”h]”j)�”}”(hjm&h]”hŒraw_atomic64_add_return_acquire”…”�”}”(hjƒ&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjH&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_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}]”jk&Œ!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)�”}”(hj|h]”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³jp&h´M� ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjD&h²hh³jp&h´M� ubah}”(h]”j?&ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jp&h´M� hjA&h²hubj4)�”}”(hhh]”jM)�”}”(hŒ atomic add with acquire ordering”h]”hŒ atomic add with acquire 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´M� hjG'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjA&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 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Ž)�”}”(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)�”}”(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”…”�”}”(hjÝ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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³Œ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 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”…”�”}”(hjA(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’ hjf'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.”…”�”}”(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´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 ”…”�”}”(hj�(h²hh³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_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Œ ”…”�”}”(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 )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_release”†”asbuh1hhjW)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjW)ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŠ)h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjW)ubj)�”}”(hj|h]”hŒv”…”�”}”(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Œ 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”…”�”}”(hj<*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8*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¬ hj4*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Èhj4*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Ž)�”}”(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Œ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&]”uh1jhj8+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j=+Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_add_return_relaxed”sbŒ!c.raw_atomic64_add_return_relaxed”†”asbuh1hhj4+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&]”uh1jPhj4+h²hh³j\+h´MÄ ubhÿ)�”}”(hŒraw_atomic64_add_return_relaxed”h]”j)�”}”(hjY+h]”hŒraw_atomic64_add_return_relaxed”…”�”}”(hjo+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjk+ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj4+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}]”jW+Œ!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Œ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}]”jW+Œ!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)�”}”(hj|h]”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&]”jjuh1j3hj4+h²hh³j\+h´MÄ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj0+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 relaxed ordering”h]”hŒ atomic add with relaxed ordering”…”�”}”(hj6,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Ä hj3,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„)�”}”(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Ž)�”}”(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Œ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjw,h]”hŒs64 i”…”�”}”(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 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Èhjq,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŒ,h´MÅ hjn,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Æ hjn,ubeh}”(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Œ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Ç hjR,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.”…”�”}”(hjF-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Ž)�”}”(hjW-h]”hŒReturn”…”�”}”(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Ë hjR,ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjm-h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hju-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm-ubhŒ.”…”�”}”(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Ì hjR,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”…”�”}”(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Í-Œc.raw_atomic64_fetch_add”†”asbuh1hhjC.ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh.h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjC.ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjv.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjC.ubj)�”}”(hj|h]”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 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”…”�”}”(hj?/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j;/h´MÝ hj1ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjc1h]”hŒs64 i”…”�”}”(hje1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhja1ubah}”(h]”h ]”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Œs64 value to add”h]”hŒs64 value to add”…”�”}”(hj|1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jx1h´M÷ hjy1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jx1h´M÷ hjZ1ubj©)�”}”(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ø hjZ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj>1ubjM)�”}”(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ú hj>1ubjM)�”}”(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”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjí1ubhŒ + ”…”�”}”(hjí1h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj2h²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ù hj>1ubjM)�”}”(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.”…”�”}”(hj22h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mû hj>1ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjC2h]”hŒReturn”…”�”}”(hjE2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjA2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mý hj>1ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjY2h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hja2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjY2ubhŒ.”…”�”}”(hjY2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mþ hj>1ubeh}”(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Œ ”…”�”}”(hj 3h²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”…”�”}”(hj63h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj33ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j83Œmodname”NŒ classname”Njwjz)�”}”j}]”j¹2Œ c.raw_atomic64_fetch_add_release”†”asbuh1hhj/3ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT3h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj/3ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjb3h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj/3ubj)�”}”(hj|h]”hŒv”…”�”}”(hjo3h²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 hj 4ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_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 hjÐ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj´3ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjM4h]”hŒ Description”…”�”}”(hjO4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjK4ubah}”(h]”h ]”h"]”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 ”…”�”}”(hjc4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjk4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc4ubhŒ to (”…”�”}”(hjc4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj}4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc4ubhŒ + ”…”�”}”(hjc4h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjc4ubhŒ) with release ordering.”…”�”}”(hjc4h²hh³Nh´Nubeh}”(h]”h ]”h"]”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”j5Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_add_relaxed”sbŒ c.raw_atomic64_fetch_add_relaxed”†”asbuh1hhj 5h²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Œ ”…”�”}”(hj55h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj 5h²hh³j45h´M+ ubhÿ)�”}”(hŒraw_atomic64_fetch_add_relaxed”h]”j)�”}”(hj15h]”hŒraw_atomic64_fetch_add_relaxed”…”�”}”(hjG5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjC5ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj 5h²hh³j45h´M+ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hje5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjb5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jg5Œ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Œi”…”�”}”(hj‘5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZ5ubj:)�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(hjå5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¥5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZ5ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj 5h²hh³j45h´M+ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj5h²hh³j45h´M+ ubah}”(h]”j5ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j45h´M+ hj5h²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 6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj5h²hh³j45h´M+ 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 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Ž)�”}”(hj06h]”hŒ Parameters”…”�”}”(hj26h²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/ hj*6ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value to add ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjO6h]”hŒs64 i”…”�”}”(hjQ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjM6ubah}”(h]”h ]”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, hjI6ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to add”h]”hŒs64 value to add”…”�”}”(hjh6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jd6h´M, hje6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjI6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jd6h´M, hjF6ubj©)�”}”(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&]”uh1jRhj†6ubah}”(h]”h ]”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Œ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Èhj‚6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�6h´M- hjF6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj*6ubjM)�”}”(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/ hj*6ubjM)�”}”(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”…”�”}”(hj7h²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. hj*6ubjM)�”}”(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 hj*6ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj/7h]”hŒReturn”…”�”}”(hj17h²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 hj*6ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjE7h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjM7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjE7ubhŒ.”…”�”}”(hjE7h²hh³Nh´Nubeh}”(h]”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 hj*6ubeh}”(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”…”�”}”(hj†7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj‚7h²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&]”uh1jPhj‚7h²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þhj‚7h²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&]”uh1jhj 8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j8Œmodname”NŒ classname”Njwjz)�”}”j}]”jâ7Œc.raw_atomic64_sub”†”asbuh1hhj8ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-8h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj8ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj;8h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj8ubj)�”}”(hj|h]”hŒv”…”�”}”(hjH8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj»7ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj‚7h²hh³j”7h´MB ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj~7h²hh³j”7h´MB ubah}”(h]”jy7ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j”7h´MB hj{7h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hjq8h²hh³Nh´Nubah}”(h]”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 hjn8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj{7h²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”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j9h´MD hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjå8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j9h´MD hj©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³Œ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 ”…”�”}”(hj<9h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjD9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<9ubhŒ to (”…”�”}”(hj<9h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjV9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<9ubhŒ - ”…”�”}”(hj<9h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjh9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<9ubhŒ) with relaxed ordering.”…”�”}”(hj<9h²hh³Nh´Nubeh}”(h]”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.”…”�”}”(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´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 :ubah}”(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Œ ”…”�”}”(hjJ:h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj%:ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjX: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ö9Œc.raw_atomic64_sub_return”†”asbuh1hhjl:ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘: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)�”}”(hj|h]”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Ó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)�”}”(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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MU hjI;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´MU hje;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjI;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jd;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”…”�”}”(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€)�”}”jsŒraw_atomic64_sub_return_acquire”sbŒ!c.raw_atomic64_sub_return_acquire”†”asbuh1hhjI<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Œ ”…”�”}”(hjr<h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjI<h²hh³jq<h´Mn ubhÿ)�”}”(hŒraw_atomic64_sub_return_acquire”h]”j)�”}”(hjn<h]”hŒraw_atomic64_sub_return_acquire”…”�”}”(hj„<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€<ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjI<h²hh³jq<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}]”jl<Œ!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}]”jl<Œ!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)�”}”(hj|h]”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&]”jjuh1j3hjI<h²hh³jq<h´Mn ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjE<h²hh³jq<h´Mn ubah}”(h]”j@<ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jq<h´Mn hjB<h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic subtract with acquire ordering”h]”hŒ%atomic subtract with acquire ordering”…”�”}”(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´Mn hjH=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjB<h²hh³jq<h´Mn ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjc=jHjc=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Ž)�”}”(hjm=h]”hŒ Parameters”…”�”}”(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´Mr hjg=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 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´Mo hj¢=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj†=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¡=h´Mo 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´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 hjƒ=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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mr hjg=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”…”�”}”(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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mq hjg=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.”…”�”}”(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 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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mu hjg=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´Mv hjg=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Œ ”…”�”}”(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Œ 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”ja?Œmodname”NŒ classname”Njwjz)�”}”j}]”jâ>Œ!c.raw_atomic64_sub_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)�”}”(hj|h]”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 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Š 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&]”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Œpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(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‹ 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Œ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”…”�”}”(hjAh²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”…”�”}”(hjAŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_sub_return_relaxed”sbŒ!c.raw_atomic64_sub_return_relaxed”†”asbuh1hhj5Ah²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^Ah²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5Ah²hh³j]Ah´M£ ubhÿ)�”}”(hŒraw_atomic64_sub_return_relaxed”h]”j)�”}”(hjZAh]”hŒraw_atomic64_sub_return_relaxed”…”�”}”(hjpAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjlAubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj5Ah²hh³j]Ah´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&]”uh1jhj‹Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j�AŒmodname”NŒ classname”Njwjz)�”}”j}]”jXAŒ!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”ˆjjuh1j9hjƒAubj:)�”}”(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}]”jXAŒ!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Œ*”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÎAubj)�”}”(hj|h]”hŒv”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjƒAubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj5Ah²hh³j]Ah´M£ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj1Ah²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 subtract with relaxed ordering”h]”hŒ%atomic subtract with relaxed ordering”…”�”}”(hj7Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M£ hj4Bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj.Ah²hh³j]Ah´M£ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjOBjHjOBjI‰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Ž)�”}”(hjYBh]”hŒ Parameters”…”�”}”(hj[Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWBubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M§ hjSBubj¤)�”}”(hhh]”(j©)�”}”(hŒ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjxBh]”hŒs64 i”…”�”}”(hjzBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjvBubah}”(h]”h ]”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¤ hjrBubjÉ)�”}”(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ÈhjrBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�Bh´M¤ hjoBubj©)�”}”(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¥ hjoBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjSBubjM)�”}”(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§ hjSBubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjCh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCubhŒ to (”…”�”}”(hjCh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCubhŒ - ”…”�”}”(hjCh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj.Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCubhŒ) with relaxed ordering.”…”�”}”(hjCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¦ hjSBubjM)�”}”(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.”…”�”}”(hjGCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¨ hjSBubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjXCh]”hŒReturn”…”�”}”(hjZCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVCubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mª hjSBubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjnCh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjvCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnCubhŒ.”…”�”}”(hjnCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M« hjSBubeh}”(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”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jDŒmodname”NŒ classname”Njwjz)�”}”j}]”jÎCŒc.raw_atomic64_fetch_sub”†”asbuh1hhjýCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjýCubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj0Dh²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”…”�”}”(hjKDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jMDŒmodname”NŒ classname”Njwjz)�”}”j}]”jÎCŒc.raw_atomic64_fetch_sub”†”asbuh1hhjDDubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiDh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjDDubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjwDh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjDDubj)�”}”(hj|h]”hŒv”…”�”}”(hj„Dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjùCubeh}”(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 subtract with full ordering”h]”hŒ"atomic subtract 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ÓCh´Mº ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjÅDjHjÅDjI‰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_fetch_sub() elsewhere. **Return** The original 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Œ ``s64 i`` s64 value to subtract ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjîDh]”hŒs64 i”…”�”}”(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´M» hjèDubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to subtract”h]”hŒs64 value to subtract”…”�”}”(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» hjåDubj©)�”}”(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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M¼ hj!EubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj@Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jAtomically 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# hjGNubjM)�”}”(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% hjGNubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjOh]”hŒReturn”…”�”}”(hjOh²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' hjGNubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M( hjGNubeh}”(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”…”�”}”(hjIOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jKOŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_inc_return”sbŒc.raw_atomic64_inc_return”†”asbuh1hhjBOh²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Œ ”…”�”}”(hjkOh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjBOh²hh³jjOh´M5 ubhÿ)�”}”(hŒraw_atomic64_inc_return”h]”j)�”}”(hjgOh]”hŒraw_atomic64_inc_return”…”�”}”(hj}Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyOubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjBOh²hh³jjOh´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}]”jeOŒ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)�”}”(hj|h]”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&]”jjuh1j3hjBOh²hh³jjOh´M5 ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj>Oh²hh³jjOh´M5 ubah}”(h]”j9Oah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jjOh´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³jjOh´M5 ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjPjHjPjI‰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”…”�”}”(hj!Ph²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 hjPubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj>Ph]”hŒ atomic64_t *v”…”�”}”(hj@Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjAtomically updates **v** to (**v** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjsRh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj{Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsRubhŒ to (”…”�”}”(hjsRh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsRubhŒ + 1) with acquire ordering.”…”�”}”(hjsRh²hh³Nh´Nubeh}”(h]”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 Sh²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Œ ”…”�”}”(hj3Sh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Sh²hh³j2Sh´Mi ubhÿ)�”}”(hŒraw_atomic64_inc_return_release”h]”j)�”}”(hj/Sh]”hŒraw_atomic64_inc_return_release”…”�”}”(hjESh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjASubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj Sh²hh³j2Sh´Mi ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjcSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`Subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jeSŒmodname”NŒ classname”Njwjz)�”}”j}]”j-SŒ!c.raw_atomic64_inc_return_release”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjœSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjXSubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj Sh²hh³j2Sh´Mi ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjSh²hh³j2Sh´Mi ubah}”(h]”jSah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j2Sh´Mi hjSh²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&]”uh1j3hjSh²hh³j2Sh´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)�”}”(hjTh]”hŒ atomic64_t *v”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjTubah}”(h]”h ]”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 hjTubjÉ)�”}”(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ÈhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jTh´Mj hjýSubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjáSubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjATh]”hŒ Description”…”�”}”(hjCTh²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´Ml hjáSubjM)�”}”(hŒ>Atomically updates **v** to (**v** + 1) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjWTh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj_Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWTubhŒ to (”…”�”}”(hjWTh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjqTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWTubhŒ + 1) with release ordering.”…”�”}”(hjWTh²hh³Nh´Nubeh}”(h]”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Œ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjîTh²hh³jUh´M‚ ubhÿ)�”}”(hŒraw_atomic64_inc_return_relaxed”h]”j)�”}”(hjUh]”hŒraw_atomic64_inc_return_relaxed”…”�”}”(hj)Uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%Uubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjîTh²hh³jUh´M‚ ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hjGUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjDUubah}”(h]”h ]”h"]”h$•]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jIUŒmodname”NŒ classname”Njwjz)�”}”j}]”jUŒ!c.raw_atomic64_inc_return_relaxed”†”asbuh1hhj@UubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeUh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj@Uubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjsUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj@Uubj)�”}”(hj|h]”hŒv”…”�”}”(hj€Uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjAtomically updates **v** to (**v** + 1) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hj;Vh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjCVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;VubhŒ to (”…”�”}”(hj;Vh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjUVh²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.”…”�”}”(hjnVh²hh³Nh´Nubah}”(h]”h ]”h"]”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Ž)�”}”(hjVh]”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 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”…”�”}”(hj Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj Wubah}”(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”…”�”}”(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õVŒc.raw_atomic64_fetch_inc”†”asbuh1hhj$WubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$Wubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjWWh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj$Wubj)�”}”(hj|h]”hŒv”…”�”}”(hjdWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj Wubah}”(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 Xh]”hŒ Description”…”�”}”(hj Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXubah}”(h]”h ]”h"]”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”…”�”}”(hj'Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXubhŒ to (”…”�”}”(hjXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj9Xh²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.”…”�”}”(hjRXh²hh³Nh´Nubah}”(h]”h ]”h"]”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Ž)�”}”(hjcXh]”hŒReturn”…”�”}”(hjeXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaXubah}”(h]”h ]”h"]”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 ”…”�”}”(hjyXh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyXubhŒ.”…”�”}”(hjyXh²hh³Nh´Nubeh}”(h]”h ]”h"]”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&]”uh1jhj Yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jYŒmodname”NŒ classname”Njwjz)�”}”j}]”jÙXŒ c.raw_atomic64_fetch_inc_acquire”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjHYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjYubah}”(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 increment with acquire ordering”h]”hŒ&atomic increment with acquire ordering”…”�”}”(hjqYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M² hjnYh²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** ``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_inc_acquire() elsewhere. **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³Œ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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hj²Yh]”hŒ atomic64_t *v”…”�”}”(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´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³jÇYh´M³ hjÈYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¬Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÇYh´M³ hj©Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj�YubjM)�”}”(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³Œ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** + 1) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjZh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZubhŒ to (”…”�”}”(hjZh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZubhŒ + 1) with acquire ordering.”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”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.”…”�”}”(hj6Zh²hh³Nh´Nubah}”(h]”h ]”h"]”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Ž)�”}”(hjGZh]”hŒReturn”…”�”}”(hjIZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEZubah}”(h]”h ]”h"]”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 ”…”�”}”(hj]Zh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjeZh²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_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)�”}”(hj|h]”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”…”�”}”(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“Zh²hh³jÂZh´MÌ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjm[jHjm[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Ž)�”}”(hjw[h]”hŒ Parameters”…”�”}”(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Ð hjq[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£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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÏ hjq[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Î hjq[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Ð hjq[ubjM)�”}”(hŒ **Return**”h]”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Ò hjq[ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original 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Ó hjq[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”…”�”}”(hj…\h²hh³Nh´Nubah}”(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_inc_relaxed”sbŒ c.raw_atomic64_fetch_inc_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Œ ”…”�”}”(hj§\h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~\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þ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.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)�”}”(hj|h]”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'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Œ&atomic increment with relaxed ordering”h]”hŒ&atomic increment with relaxed ordering”…”�”}”(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å hj6]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjw\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** ``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Ž)�”}”(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´Mé hjU]ubj¤)�”}”(hhh]”j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjz]h]”hŒ atomic64_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 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Èhjt]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�]h´Mæ hjq]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´Mè hjU]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ç hjU]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é 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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Më hjU]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ì hjU]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”…”�”}”(hjf^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjb^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Œ ”…”�”}”(hju^h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjb^h²hh³jt^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&]”uh1jhjƒ^ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjb^h²hh³jt^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)�”}”(hj|h]”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&]”jjuh1j3hjb^h²hh³jt^h´Mû ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj^^h²hh³jt^h´Mû ubah}”(h]”jY^ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jt^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³Œ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³jt^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)�”}”(hjK_h]”hŒ atomic64_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 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ÈhjE_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`_h´Mü hjB_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 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Œ ”…”�”}”(hjJ`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!`h²hh³jI`h´M ubhÿ)�”}”(hŒraw_atomic64_dec_return”h]”j)�”}”(hjF`h]”hŒraw_atomic64_dec_return”…”�”}”(hj\`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjX`ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj!`h²hh³jI`h´M ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(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}]”jD`Œc.raw_atomic64_dec_return”†”asbuh1hhjs`ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜`h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjs`ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¦`h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjs`ubj)�”}”(hj|h]”hŒv”…”�”}”(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³jI`h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj`h²hh³jI`h´M ubah}”(h]”j`ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jI`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³jI`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”…”�”}”(hjah²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 hjaubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj6ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j2ah´M hj3aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j2ah´M hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjø`ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjXah]”hŒ Description”…”�”}”(hjZah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVaubah}”(h]”h ]”h"]”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 ”…”�”}”(hjnah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjvah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnaubhŒ to (”…”�”}”(hjnah²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjˆah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnaubhŒ - 1) with full ordering.”…”�”}”(hjnah²hh³Nh´Nubeh}”(h]”h ]”h"]”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”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj bubah}”(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”†”asbuh1hhjbh²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&]”uh1jPhjbh²hh³j-bh´M) ubhÿ)�”}”(hŒraw_atomic64_dec_return_acquire”h]”j)�”}”(hj*bh]”hŒraw_atomic64_dec_return_acquire”…”�”}”(hj@bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjch²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 ”…”�”}”(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Œ - 1) with acquire ordering.”…”�”}”(hjRch²hh³Nh´Nubeh}”(h]”h ]”h"]”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.”…”�”}”(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- 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”…”�”}”(hj$dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj dubah}”(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”…”�”}”(hjBdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jDdŒmodname”NŒ classname”Njwjz)�”}”j}]”j dŒ!c.raw_atomic64_dec_return_release”†”asbuh1hhj;dubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`dh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;dubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjndh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj;dubj)�”}”(hj|h]”hŒv”…”�”}”(hj{dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj;dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj7dubah}”(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Ž)�”}”(hj eh]”hŒ Description”…”�”}”(hj"eh²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 ”…”�”}”(hj6eh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj>eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6eubhŒ to (”…”�”}”(hj6eh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjPeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj6eubhŒ - 1) with release ordering.”…”�”}”(hj6eh²hh³Nh´Nubeh}”(h]”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.”…”�”}”(hjieh²hh³Nh´Nubah}”(h]”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Ž)�”}”(hjzeh]”hŒReturn”…”�”}”(hj|eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxeubah}”(h]”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”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfubah}”(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”…”�”}”(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ðeŒ!c.raw_atomic64_dec_return_relaxed”†”asbuh1hhjfubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDfh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjRfh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjfubj)�”}”(hj|h]”hŒv”…”�”}”(hj_fh²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\ 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º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Ž)�”}”(hjgh]”hŒ Description”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgubah}”(h]”h ]”h"]”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”…”�”}”(hj"gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgubhŒ to (”…”�”}”(hjgh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj4gh²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.”…”�”}”(hjMgh²hh³Nh´Nubah}”(h]”h ]”h"]”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Ž)�”}”(hj^gh]”hŒReturn”…”�”}”(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´Mb hj¤fubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjtgh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjtgubhŒ.”…”�”}”(hjtgh²hh³Nh´Nubeh}”(h]”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 hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j hŒmodname”NŒ classname”Njwjz)�”}”j}]”jÔgŒc.raw_atomic64_fetch_dec”†”asbuh1hhjhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(hh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjhubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj6hh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjhubj)�”}”(hj|h]”hŒv”…”�”}”(hjChh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjhubeh}”(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”…”�”}”(hjlhh²hh³Nh´Nubah}”(h]”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 hjihh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjªgh²hh³jÙgh´Mr ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj„hjHj„hjI‰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”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjþhubhŒ to (”…”�”}”(hjþhh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjih²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.”…”�”}”(hj1ih²hh³Nh´Nubah}”(h]”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Ž)�”}”(hjBih]”hŒReturn”…”�”}”(hjDih²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´Mx hjˆhubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjXih²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXiubhŒ.”…”�”}”(hjXih²hh³Nh´Nubeh}”(h]”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Œ ”…”�”}”(hj jh²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)�”}”(hj|h]”hŒv”…”�”}”(hj'jh²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”…”�”•}”(hjPjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒ hjMjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjŽih²hh³j½ih´MŒ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjhjjHjhjjI‰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Ž)�”}”(hjrjh]”hŒ Parameters”…”�”}”(hjtjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpjubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hjljubj¤)�”}”(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� hj‹jubjÉ)�”}”(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Èhj‹jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¦jh´M� hjˆjubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjljubjM)�”}”(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� hjljubjM)�”}”(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Ž hjljubjM)�”}”(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.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M� hjljubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj&kh]”hŒReturn”…”�”}”(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´M’ hjljubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjAtomically 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¨ hjPlubjM)�”}”(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ª hjPlubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj mh]”hŒReturn”…”�”}”(hj mh²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¬ hjPlubjM)�”}”(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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M­ hjPlubeh}”(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”…”�”}”(hjdmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjamubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jfmŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_dec_relaxed”sbŒ c.raw_atomic64_fetch_dec_relaxed”†”asbuh1hhj]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Œ ”…”�”}”(hj†mh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj]mh²hh³j…mh´M¿ ubhÿ)�”}”(hŒraw_atomic64_fetch_dec_relaxed”h]”j)�”}”(hj‚mh]”hŒraw_atomic64_fetch_dec_relaxed”…”�”}”(hj˜mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”mubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj]mh²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€mŒ 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)�”}”(hj|h]”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&]”jjuh1j3hj]mh²hh³j…mh´M¿ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjYmh²hh³j…mh´M¿ ubah}”(h]”jTmah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j…mh´M¿ hjVmh²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement 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&]”uh1j3hjVmh²hh³j…mh´M¿ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj0njHj0njI‰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”…”�”}”(hjAtomically 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Á hj4nubjM)�”}”(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à hj4nubjM)�”}”(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Å hj4nubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjoh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjoubhŒ.”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÆ hj4nubeh}”(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”…”�”}”(hjEoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjAoh²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Œ ”…”�”}”(hjToh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjAoh²hh³jSoh´MÕ ubhÿ)�”}”(hŒraw_atomic64_and”h]”j)�”}”(hŒraw_atomic64_and”h]”hŒraw_atomic64_and”…”�”}”(hjfoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjboubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjAoh²hh³jSoh´MÕ ubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”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€)�”}”jsjhosbŒ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Œi”…”�”}”(hj³oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjzoubj:)�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÇoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjzoubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjAoh²hh³jSoh´MÕ ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj=oh²hh³jSoh´MÕ ubah}”(h]”j8oah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jSoh´MÕ hj:oh²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hj0ph²hh³Nh´Nubah}”(h]”h ]”h"]”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³jSoh´MÕ ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjHpjHjHpjI‰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_and() elsewhere. **Return** Nothing.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjRph]”hŒ Parameters”…”�”}”(hjTph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPpubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÙ hjLpubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjqph]”hŒs64 i”…”�”}”(hjsph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjopubah}”(h]”h ]”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Ö hjkpubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjŠph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j†ph´MÖ hj‡pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjkpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j†ph´MÖ hjhpubj©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjªph]”hŒ atomic64_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 atomic64_t”h]”hŒpointer to atomic64_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× hjhpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjLpubjM)�”}”(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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÙ hjLpubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjûph²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûpubhŒ to (”…”�”}”(hjûph²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûpubhŒ & ”…”�”}”(hjûph²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj'qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjûpubhŒ) with relaxed 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´MØ hjLpubjM)�”}”(hŒ=Safe to use in noinstr code; prefer atomic64_and() elsewhere.”h]”hŒ=Safe to use in noinstr code; prefer atomic64_and() elsewhere.”…”�”}”(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´MÚ hjLpubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjQqh]”hŒReturn”…”�”}”(hjSqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjOqubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÜ hjLpubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjgqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MÝ hjLpubeh}”(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 (C function)”Œc.raw_atomic64_fetch_and”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ1s64 raw_atomic64_fetch_and (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ0s64 raw_atomic64_fetch_and(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(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Œraw_atomic64_fetch_and”sbŒc.raw_atomic64_fetch_and”†”asbuh1hhj’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_atomic64_fetch_and”h]”j)�”}”(hj·qh]”hŒraw_atomic64_fetch_and”…”�”}”(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Œ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(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µqŒc.raw_atomic64_fetch_and”†”asbuh1hhjäqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjäqubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjäqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjàqubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(hj2rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj/rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j4rŒmodname”NŒ classname”Njwjz)�”}”j}]”jµqŒc.raw_atomic64_fetch_and”†”asbuh1hhj+rubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPrh²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)�”}”(hj|h]”hŒv”…”�”}”(hjkrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+rubeh}”(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Œ%atomic bitwise AND with full ordering”h]”hŒ%atomic bitwise AND with full 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** ``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_and() 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Œ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjÕrh]”hŒs64 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Œ s64 value”h]”hŒ s64 value”…”�”}”(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Œ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjsh]”hŒ atomic64_t *v”…”�”}”(hjsh²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è hjsubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hj'sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j#sh´Mè hj$subah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j#sh´Mè hjÌrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj°rubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjIsh]”hŒ Description”…”�”}”(hjKsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGsubah}”(h]”h ]”h"]”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Œ?Atomically updates **v** to (**v** & **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj_sh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjgsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_subhŒ to (”…”�”}”(hj_sh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjysh²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 full 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ŒCSafe to use in noinstr code; prefer atomic64_fetch_and() elsewhere.”h]”hŒCSafe to use in noinstr code; prefer atomic64_fetch_and() 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_atomic64_fetch_and_acquire (C function)”Œ c.raw_atomic64_fetch_and_acquire”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_and_acquire (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_and_acquire(s64 i, atomic64_t *v)”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jtŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsŒraw_atomic64_fetch_and_acquire”sbŒ c.raw_atomic64_fetch_and_acquire”†”asbuh1hhjth²hh³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjth²hh³j0th´Mubhÿ)�”}”(hŒraw_atomic64_fetch_and_acquire”h]”j)�”}”(hj-th]”hŒraw_atomic64_fetch_and_acquire”…”�”}”(hjCth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?tubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjth²hh³j0th´Mubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”h]”(h)�”}”(hhh]”j)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjath²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jctŒmodname”NŒ classname”Njwjz)�”}”j}]”j+tŒ c.raw_atomic64_fetch_and_acquire”†”asbuh1hhjZtubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZtubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjZtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjVtubj:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_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+tŒ c.raw_atomic64_fetch_and_acquire”†”asbuh1hhj¡tubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¡tubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÔth²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¡tubj)�”}”(hj|h]”hŒv”…”�”}”(hjáth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjVtubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjth²hh³j0th´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjth²hh³j0th´Mubah}”(h]”jÿsah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j0th´Mhjth²hubj4)�”}”(hhh]”jM)�”}”(hŒ(atomic bitwise AND with acquire ordering”h]”hŒ(atomic bitwise AND with acquire 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´Mhjuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjth²hh³j0th´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj"ujHj"ujI‰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_and_acquire() elsewhere. **Return** The original 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´Mhj&uubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjKuh]”hŒs64 i”…”�”}”(hjMuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjIuubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MhjEuubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjduh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`uh´Mhjauubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjEuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`uh´MhjBuubj©)�”}”(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´Mhj~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´Mhjšuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj~uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j™uh´MhjBuubeh}”(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´Mhj&uubjM)�”}”(hŒBAtomically updates **v** to (**v** & **i**) with acquire 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”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÕuubhŒ) with acquire 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´Mhj&uubjM)�”}”(hŒKSafe to use in noinstr code; prefer atomic64_fetch_and_acquire() elsewhere.”h]”hŒKSafe to use in noinstr code; prefer atomic64_fetch_and_acquire() 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´Mhj&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´Mhj&uubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjAvh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjIvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAvubhŒ.”…”�”}”(hjAvh²hh³Nh´Nubeh}”(h]”h ]”h"]”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_and_release (C function)”Œ c.raw_atomic64_fetch_and_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ9s64 raw_atomic64_fetch_and_release (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ8s64 raw_atomic64_fetch_and_release(s64 i, 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_and_release”sbŒ c.raw_atomic64_fetch_and_release”†”asbuh1hhj~vh²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§vh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj~vh²hh³j¦vh´Mubhÿ)�”}”(hŒraw_atomic64_fetch_and_release”h]”j)�”}”(hj£vh]”hŒraw_atomic64_fetch_and_release”…”�”}”(hj¹vh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjµvubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj~vh²hh³j¦vh´Mubj4)�”}”(hŒ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”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¡vŒ c.raw_atomic64_fetch_and_release”†”asbuh1hhjÐvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõvh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÐvubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÐvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÌvubj:)�”}”(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_and_release”†”asbuh1hhjwubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhjzubeh}”(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”…”�”}”(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´MMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}{h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjj{h²hh³j|{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þhjj{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€)�”}”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)�”}”(hj|h]”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&]”jjuh1j3hjj{h²hh³j|{h´MMubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjf{h²hh³j|{h´MMubah}”(h]”ja{ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j|{h´MMhjc{h²hubj4)�”}”(hhh]”jM)�”}”(hŒ,atomic bitwise AND NOT with relaxed ordering”h]”hŒ,atomic bitwise AND NOT 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´MMhjV|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjc{h²hh³j|{h´MMubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjq|jHjq|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Ž)�”}”(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´MQhju|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£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´MQhju|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”…”�”}”(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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MPhju|ubjM)�”}”(hŒ@Safe to use in noinstr code; prefer atomic64_andnot() elsewhere.”h]”hŒ@Safe to use in noinstr code; prefer atomic64_andnot() elsewhere.”…”�”}”(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´MRhju|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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MThju|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´MUhju|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Œ ”…”�”}”(hj2~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&]”uh1jhjX~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j]~Œmodname”NŒ classname”Njwjz)�”}”j}]”jÞ}Œc.raw_atomic64_fetch_andnot”†”asbuh1hhjT~ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy~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Œv”…”�”}”(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´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”…”�”}”(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´Mchjø~ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hjh²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)�”}”(hj7h]”hŒ atomic64_t *v”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mdhj1ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jLh´MdhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jLh´Mdhjõ~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³Œ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Ý)�”}”(h•hh]”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&]”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 ”…”�”}”(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´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_or (C function)”Œc.raw_atomic64_or”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ+void raw_atomic64_or (s64 i, atomic64_t *v)”h]”hù)�”}”(hŒ*void raw_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³Œ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_or”h]”j)�”}”(hŒraw_atomic64_or”h]”hŒraw_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.raw_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&]”uh1jhjˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j"ˆŒmodname”NŒ classname”Njwjz)�”}”j}]”jó‡Œc.raw_atomic64_or”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjYˆ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 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** ``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_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´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Ž)�”}”(hj7‰h]”hŒ Description”…”�”}”(hj9‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5‰ubah}”(h]”h ]”h"]”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”…”�”}”(hjg‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM‰ubhŒ | ”…”�”}”(hjM‰h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjy‰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Œ•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Ž)�”}”(hj`•h]”hŒ Description”…”�”}”(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´MEhjÇ”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”…”�”}”(hj�•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³Œ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Œ ”…”�”}”(hj6–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj –h²hh³j5–h´MRub•hÿ)�”}”(hŒraw_atomic64_fetch_xor”h]”j)�”}”(hj2–h]”hŒraw_atomic64_fetch_xor”…”�”}”(hjH–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjD–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj –h²hh³j5–h´MRubj4)�”}”(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}]”j0–Œ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Œ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}]”j0–Œ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)�”}”(hj|h]”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³j5–h´MRubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj –h²hh³j5–h´MRubah}”(h]”j–ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j5–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³j5–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Ž)�”}”(hj1—h]”hŒ Parameters”…”�”}”(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´MVhj+—ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``s64 i`` s64 value ”h]”(j¯)�”}”(hŒ ``s64 i``”h]”jS)�”}”(hjP—h]”hŒs64 i”…”�”}”(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´MShjJ—ubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(hji—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³je—h´MShjf—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjJ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³je—h´MShjG—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´MThjƒ—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Èhjƒ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jž—h´MThjG—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Ž)�”}”(hj0˜h]”hŒReturn”…”�”}”(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´MYhj+—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´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”†”asbuh1hhjƒ˜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&]”uh1jPhjƒ˜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þhjƒ˜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Œ ”…”�”}”(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)�”}”(hj|h]”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´Mmubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj˜h²hh³j«˜h´Mmubah}”(h]”jz˜ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j«˜h´Mmhj|˜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´Mmhj‚™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj|˜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”…”�”}”(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´Mqhj¡™ubjM)�”}”(hŒBAtomically updates **v** to (**v** ^ **i**) with acquire 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”…”�”}”(hjjš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 acquire 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´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”…”�”}”(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Œ(s64 i, atomic64_t *v)”h]”(j:)�”}”(hŒs64 i”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_fetch_xor_release”†”asbuh1hhjK›ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp›h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjK›ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj~›h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjG›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)�”}”(hj|h]”hŒv”…”�”}”(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 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)�”}”(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‰hj6œubjÉ)�”}”(hhh]”jM)�”}”(hŒ s64 value”h]”hŒ s64 value”…”�”}”(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Œ(``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³Œ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Œ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È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³Œ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 ”…”�”}”(hj2�h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj:�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2�ubhŒ.”…”�”}”(hj2�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”…”�”}”(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Œraw_atomic64_fetch_xor_relaxed”sbŒ c.raw_atomic64_fetch_xor_relaxed”†”asbuh1hhjo�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&]”uh1jPhjo�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þhjo�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)�”}”(hj|h]”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&]”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Œ(atomic bitwise XOR with relaxed ordering”h]”hŒ(atomic bitwise XOR with relaxed ordering”…”�”}”(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´M¢hjnž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„)�”}”(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 ”…”�”}”(hj<Ÿh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjDŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj<ŸubhŒ to (”…”�”}”(hj<Ÿh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjVŸ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³Œ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.”…”�”}”(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 (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”…”�”}”(hj> h²hh³Nh´Nubah}”(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”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3 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”ˆ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 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”…”�”}”(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Œ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”…”�”}”(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Œraw_atomic64_xchg_acquire”sbŒc.raw_atomic64_xchg_acquire”†”asbuh1hhjJ¢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&]”uh1jPhjJ¢h²hh³jr¢h´MÔubhÿ)�”}”(hŒraw_atomic64_xchg_acquire”h]”j)�”}”(hjo¢h]”hŒraw_atomic64_xchg_acquire”…”�”}”(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Œ(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}]”jm¢Œ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)�”}”(hj|h]”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}]”jm¢Œ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&]”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Œ%atomic exchange with acquire ordering”h]”hŒ%atomic exchange 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&]”uh1j3hjC¢h²hh³jr¢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 ``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Ž)�”}”(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)�”}”(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”…”�”}”(hjà£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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£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 **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”…”�”}”(hj2¤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ŒFSafe to use in noinstr code; prefer atomic64_xchg_acquire() elsewhere.”h]”hŒFSafe to use in noinstr code; prefer atomic64_xchg_acquire() 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´MÙhji£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´MÛhji£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Ü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_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Œ*”…”�”}”(hj4¥h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj¥ubj)�”}”(hj|h]”hŒv”…”�”}”(hjA¥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&]”uh1jhjY¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j^¥Œmodname”NŒ classname”Njwjz)�”}”j}]”jÒ¤Œc.raw_atomic64_xchg_release”†”asbuh1hhjU¥ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz¥h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjU¥ubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(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 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”…”�”}”(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ê¥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³Œ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 ”…”�”}”(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ò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Œ ”…”�”}”(hj=§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj§h²hh³j<§h´M ubhÿ)�”}”(hŒraw_atomic64_xchg_relaxed”h]”j)�”}”(hj9§h]”hŒraw_atomic64_xchg_relaxed”…”�”}”(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Œ(atomic64_t *v, s64 new)”h]”(j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_t”…”�”}”(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}]”j7§Œc.raw_atomic64_xchg_relaxed”†”asbuh1hhjf§ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹§h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjf§ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj™§h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjf§ubj)�”}”(hj|h]”hŒv”…”�”}”(hj¦§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjb§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}]”j7§Œ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”ˆjjuh1j9hjb§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³Œ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 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Ž)�”}”(hj9¨h]”hŒ Parameters”…”�”}”(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´M hj3¨ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjX¨h]”hŒ atomic64_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´M hjR¨ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(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Œ ``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 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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M hj3¨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 hj3¨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´Mhj3¨ubjM)�”}”(hŒ **Return**”h]”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´Mhj3¨ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original 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´Mhj3¨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”…”�”}”(hj€©h²hh³Nh´Nubah}”(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”sbŒc.raw_atomic64_cmpxchg”†”asbuh1hhjy©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&]”uh1jPhjy©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þhjy©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)�”}”(hj|h]”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Œ ”…”�”}”(hjDªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjªubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjRª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”…”�”}”(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”†”asbuh1hhjgªubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒªh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjgªubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjšªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjÇ©ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjy©h²hh³j¡©h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hju©h²hh³j¡©h´M ubah}”(h]”jp©ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j¡©h´M hjr©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&]”uh1j3hjr©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)�”}”(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"hj8«ubjÉ)�”}”(hhh]”jM)�”}”(hŒs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(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 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hjw«h]”hŒs64 new”…”�”}”(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 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È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** == **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.”…”�”}”(hj1¬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Ž)�”}”(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´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Œ.”…”�”}”(•0hjX¬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)�”}”(hj|h]”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”…”�”}”(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_acquire”†”asbuh1hhj;­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj;­ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjn­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”†”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 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³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Œ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hjZ®h]”hŒs64 old”…”�”}”(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Œs64 value to compare with”h]”hŒs64 value to compare with”…”�”}”(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Œ ``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”…”�”}”(hj4¯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.”…”�”}”(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´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³Œ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 ”…”�”}”(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´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Œ*”…”�”}”(hj6°h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj°ubj)�”}”(hj|h]”hŒv”…”�”}”(hjC°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_release”†”asbuh1hhjW°ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjW°ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjаh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjW°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)�”}”(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[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[hj4±ubj©)�”}”(hŒ&``s64 old`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 old``”h]”jS)�”}”(hjv±h]”hŒs64 old”…”�”}”(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 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Èhjp±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‹±h´M\hj4±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]hj4±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”…”�”}”(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”…”�”}”(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³Œ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.”…”�”}”(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´Mahj±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³Œ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Œ ”…”�”}”(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)�”}”(hj|h]”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”…”�”}”(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_cmpxchg_relaxed”†”asbuh1hhjs³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜³h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjs³ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj¦³h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs³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”jijŒ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]”jIJah ]”(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&]”jFjAjGj0´jHj0´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”…”�”}”(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´Mzhj4´ubj¤)�”}”(hhh]”(j©)�”}”(hŒ(``atomic64_t *v`` pointer to atomic64_t ”h]”(j¯)�”}”(hŒ``atomic64_t *v``”h]”jS)�”}”(hjY´h]”hŒ atomic64_t *v”…”�”}”(hj[´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjW´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´MwhjS´ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic64_t”h]”hŒpointer to atomic64_t”…”�”}”(hjr´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jn´h´Mwhjo´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjS´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jn´h´MwhjP´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´MxhjP´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´MyhjP´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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M{hj4´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”…”�”}”(hj6µ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µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµubhŒ to ”…”�”}”(hjµh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjZµ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”…”�”}”(hjlµ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´Mzhj4´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.”…”�”}”(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}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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´Mhj4´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€hj4´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Œ ”…”�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(hjg¶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}]”jH¶Œ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Œ*”…”�”}”(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}]”jH¶Œ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&]”jFjAjGjE·jHjE·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Ž)�”}”(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·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‘hje·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’hje·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´M”hjI·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 (”…”�”}”(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´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjK¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1¸ubhŒ), atomically updates ”…”�”}”(hj1¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj]¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1¸ubhŒ to ”…”�”}”(hj1¸h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjo¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1¸ubhŒ with full ordering. Otherwise, ”…”�”}”(hj1¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1¸ubhŒ is not modified, ”…”�”}”(hj1¸h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj“¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1¸ubhŒ$ is updated to the current value of ”…”�”}”(hj1¸h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¥¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1¸ubhŒ#, and relaxed ordering is provided.”…”�”}”(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“hjI·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—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Œ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š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_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”…”�”}”(hj4¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj0¹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Œ ”…”�”}”(hjB¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj0¹h²hh³jA¹h´M±ubhÿ)�”}”(hŒ raw_atomic64_try_cmpxchg_acquire”h]”j)�”}”(hŒ raw_atomic64_try_cmpxchg_acquire”h]”hŒ raw_atomic64_try_cmpxchg_acquire”…”�”}”(hjT¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjP¹ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj0¹h²hh³jA¹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”…”�”}”(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€)�”}”jsjV¹sbŒ"c.raw_atomic64_try_cmpxchg_acquire”†”asbuh1hhjl¹ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“¹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)�”}”(hj|h]”hŒv”…”�”}”(hj®¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjl¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjh¹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”ˆjjuh1j9hjh¹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Œ ”…”�”}”(hj<ºh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjºubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjJºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjh¹ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj0¹h²hh³jA¹h´M±ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj,¹h²hh³jA¹h´M±ubah}”(h]”j'¹ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jA¹h´M±hj)¹h²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire 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³jA¹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”…”�”}”(hj@»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Ž)�”}”(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ŒÇ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 (”…”�”}”(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´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj’»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx»ubhŒ), 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Œ**new**”h]”hŒnew”…”�”}”(hj¶»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx»ubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hjx»h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÈ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx»ubhŒ is not modified, ”…”�”}”(hjx»h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjÚ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx»ubhŒ$ is updated to the current 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Œ#, and relaxed ordering is provided.”…”�”}”(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Œ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”…”�”}”(hj0¼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”…”�”}”(hjB¼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”…”�”}”(hj{¼h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjw¼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&]”uh1jPhjw¼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þhjw¼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)�”}”(hj|h]”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Œ*”…”�”}”(hj<½h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj ½ubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjI½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”…”�”}”(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.raw_atomic64_try_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&]”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Œ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&]”uh1j3hjp¼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)�”}”(hj5¾h]”hŒs64 *old”…”�”}”(hj7¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj3¾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”…”�”}”(hjN¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJ¾h´MÕhjK¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJ¾h´MÕhjó½ubj©)�”}”(hŒ ``s64 new`` s64 value to assign ”h]”(j¯)�”}”(hŒ ``s64 new``”h]”jS)�”}”(hjn¾h]”hŒs64 new”…”�”}”(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 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Èhjh¾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, **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”…”�”}”(hj3¿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.”…”�”}”(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Û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”…”�”}”(hjw¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjs¿ubhŒ if the exchange occurred, ”…”�”}”(hjs¿h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj‰¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjs¿ubhŒ otherwise.”…”�”}”(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´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)�”}”(hj|h]”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”…”�”}”(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_try_cmpxchg_relaxed”†”asbuh1hhjPÀubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuÀ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Œold”h]”hŒold”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPÀ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)�”}”(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õ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&]”uh1jRhjzÁ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öhjvÁ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ÈhjvÁ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”…”�”}”(hj2Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÂubhŒ to ”…”�”}”(hjÂh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjDÂ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”…”�”}”(hjVÂ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”…”�”}”(hjhÂ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”…”�”}”(hjzÂ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”…”�”}”(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_atomic64_sub_and_test”†”asbuh1hhjAÃubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhÃh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjAÃubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjvÃh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjAÃ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}]”jdÃŒ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)�”}”(hj|h]”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Œ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)�”}”(hj4Äh]”hŒs64 i”…”�”}”(hj6Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj2Ä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”…”�”}”(hjMÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jIÄh´MhjJÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj.Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jIÄh´Mhj+Äubj©)�”}”(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´MhjgÄ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ÈhjgÄ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³Œ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”…”�”}”(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”…”�”}”(hjRÅ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)�”}”(hj|h]”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 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&]”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 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Ž)�”}”(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´M+hjJÆubj¤)�”}”(hhh]”j©)�”}”(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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.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(hjfÆ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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M*hjJÆ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)hjJÆ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+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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´M-hjJÆ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”…”�”}”(hj0Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÇubhŒ is zero, ”…”�”}”(hjÇh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjBÇ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.hjJÆ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”…”�”}”(hj{Çh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjwÇ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&]”uh1jPhjwÇ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þ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€)�”}”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)�”}”(hj|h]”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Œ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&]”uh1j3hjpÇh²hh³jˆÇh´M;ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj6ÈjHj6È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Ž)�”}”(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?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<hjYÈ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È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³Œ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”…”�”}”(hj2É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”…”�”}”(hjkÉh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjgÉ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Œ ”…”�”}”(hjyÉh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjgÉh²hh³jxÉ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þhjgÉh²hh³jxÉ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)�”}”(hj|h]”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³jxÉh´MOubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjcÉ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Œ2atomic add and test if negative with full ordering”h]”hŒ2atomic add and test if negative with full 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´MOhjRÊh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj`Éh²hh³jxÉh´MOubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjmÊjHjmÊ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Ž)�”}”(hjwÊh]”hŒ Parameters”…”�”}”(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´MShjqÊ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£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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MShjqÊ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”…”�”}”(hjLË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´MRhjqÊ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.”…”�”}”(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´MThjqÊ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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MVhjqÊ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´MWhjqÊ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ŒÐ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 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ˆhjuÏubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic64_add_negative_release() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic64_add_negative_release() elsewhere.”…”�”}”(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Š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³Œn/var/lib/git/docbuild/linux/Documentation/driver-api/basics:102: ./include/linux/atomic/atomic-arch-fallback.h”h´MŒhjuÏ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´M�hjuÏ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_relaxed (C function)”Œ#c.raw_atomic64_add_negative_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ=bool raw_atomic64_add_negative_relaxed (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”…”�”}”(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Œraw_atomic64_fetch_add_unless”sbŒc.raw_atomic64_fetch_add_unless”†”asbuh1hhjoÓ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&]”uh1jPhjoÓ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þhjoÓ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)�”}”(hj|h]”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”…”�”}”(hjHÔ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”…”�”}”(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’ÓŒ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÷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&]”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Œ*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&]”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„)�”}”(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)�”}”(hj2Õh]”hŒs64 a”…”�”}”(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 add”h]”hŒs64 value to add”…”�”}”(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 u`` s64 value to compare with ”h]”(j¯)�”}”(hŒ ``s64 u``”h]”jS)�”}”(hjkÕh]”hŒs64 u”…”�”}”(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 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È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** != **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.”…”�”}”(hj7Ö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Œ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À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)�”}”(hj|h]”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”…”�”}”(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úÖŒc.raw_atomic64_add_unless”†”asbuh1hhj-×ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR×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”…”�”}”(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úÖŒc.raw_atomic64_add_unless”†”asbuh1hhjt×ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™×h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjt×ubj)�”}”(hj÷lh]”hŒu”…”�”}”(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Œ*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)�”}”(hjJØh]”hŒs64 a”…”�”}”(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 add”h]”hŒs64 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Ö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³Œ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”…”�”}”(hjœØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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** != **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”…”�”}”(hj6Ù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.”…”�”}”(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´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³Œ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”…”�”}”(hjzÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvÙubhŒ if ”…”�”}”(hjvÙh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŒÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvÙubhŒ was updated, ”…”�”}”(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³Œ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Œ ”…”�”}”(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)�”}”(hj|h]”hŒv”…”�”}”(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Œ/atomic increment unless zero with full ordering”h]”hŒ/atomic increment unless zero 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´MëhjwÚ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”…”�”}”(hj8Û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”…”�”}”(hjJÛ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.”…”�”}”(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”…”�”}”(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Œ ”…”�”}”(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)�”}”(hj|h]”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Œ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”…”�”}”(hjLÝ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´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.”…”�”}”(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ªÜubjM)�”}”(hŒ **Return**”h]”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Œ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”…”�”}”(hj>Þh²hh³Nh´Nubah}”(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_unless_positive”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjyÞh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3Þ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 (”…”�”}”(hj4ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj<ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ßubhŒ <= 0), atomically updates ”…”�”}”(hj4ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjNßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ßubhŒ to (”…”�”}”(hj4ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj`ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ßubhŒ% - 1) with full ordering. Otherwise, ”…”�”}”(hj4ßh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjrßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ßubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj4ß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Œ ”…”�”}”(hj8àh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàh²hh³j7àh´M8ubhÿ)�”}”(hŒraw_atomic64_dec_if_positive”h]”j)�”}”(hj4àh]”hŒraw_atomic64_dec_if_positive”…”�”}”(hjJàh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFàubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjàh²hh³j7àh´M8ubj4)�”}”(hŒ(atomic64_t *v)”h]”j:)�”}”(hŒ atomic64_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic64_t”h]”hŒ atomic64_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}]”j2àŒc.raw_atomic64_dec_if_positive”†”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)�”}”(hj|h]”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³j7àh´M8ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj àh²hh³j7àh´M8ubah}”(h]”jàah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j7à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³j7à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Ž)�”}”(hjFáh]”hŒ Description”…”�”}”(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æà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”…”�”}”(hjdá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”…”�”}”(hjvá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Œ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Œ ”…”�”}”(hj<â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”…”�”}”(hjNâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJâ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”…”�”}”(hjjâh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjfâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwâh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfâ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€)�”}”jsjPâsbŒc.raw_atomic_long_read”†”asbuh1hhjfâubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨âh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjfâubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¶âh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjfâubj)�”}”(hj|h]”hŒv”…”�”}”(hjÃâh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjfâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjbâ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”…”�”}”(hjFãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jBãh´KhjCãubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj'ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jBãh´Khj$ã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³Œ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 ”…”�”}”(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³Œ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”…”�”}”(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Œ 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€)�”}”jsj*äsbŒc.raw_atomic_long_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)�”}”(hj|h]”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´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Ž)�”}”(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´K0hjâäubjM)�”}”(hŒ:Atomically loads the value of **v** with acquire ordering.”h]”(hŒAtomically loads the 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Œ with acquire 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´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.”…”�”}”(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´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Œ ”…”�”}”(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)�”}”(hj|h]”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”…”�”}”(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Œi”…”�”}”(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´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)�”}”(hj3çh]”hŒlong i”…”�”}”(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´KChj-ç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´KChjIçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj-çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jHçh´KChjñæ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³Œ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 ”…”�”}”(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³Œ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”…”�”}”(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€)�”}”jsj0èsbŒc.raw_atomic_long_set_release”†”asbuh1hhjFèubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmèh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjFèubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj{èh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjFèubj)�”}”(hj|h]”hŒv”…”�”}”(hjˆèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjBè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”ˆjjuh1j9hjBè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”…”�”}”(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Œ ``long i`` long value to assign ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj_éh]”hŒlong i”…”�”}”(hjaé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´KXhjYéubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjxéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jtéh´KXhjuéubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjYéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jté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”…”�”}”(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´KkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHêh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5êh²hh³jGêh´Kkubhÿ)�”}”(hŒraw_atomic_long_add”h]”j)�”}”(hŒraw_atomic_long_add”h]”hŒraw_atomic_long_add”…”�”}”(hjZêh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVêubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj5êh²hh³jGêh´Kkubj4)�”}”(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Œ ”…”�”}”(hj„êh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjrêubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj’ê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.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)�”}”(hj|h]”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&]”jjuh1j3hj5êh²hh³jGêh´Kkubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj1êh²hh³jGêh´Kkubah}”(h]”j,êah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jGê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³jGê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Ž)�”}”(hj3ëh]”hŒ Parameters”…”�”}”(hj5ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1ë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)�”}”(hjRëh]”hŒlong i”…”�”}”(hjTëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjPë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´KlhjLëubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to add”h]”hŒlong value to add”…”�”}”(hjkëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jgëh´Klhjhëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjLëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jgëh´KlhjIë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´Kmhj…ë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Èhj…ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j ëh´KmhjIë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Ž)�”}”(hj2ìh]”hŒReturn”…”�”}”(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´Krhj-ëubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(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´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”…”�”}”(hjwìh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjsì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&]”uh1jPhjsìh²hh³j…ì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þhjsì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_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)�”}”(hj|h]”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&]”jjuh1j3hjsìh²hh³j…ìh´K€ubeh}”(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]”jM)�”}”(hŒatomic add with full ordering”h]”hŒatomic add with full ordering”…”�”}”(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´K€hjLíh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjlìh²hh³j…ìh´K€ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjgíjHjgí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Ž)�”}”(hjqíh]”hŒ Parameters”…”�”}”(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´K„hjkí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£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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K„hjkí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”…”�”}”(hj4î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 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ƒhjkí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.”…”�”}”(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…hjkí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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K‡hjkí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ˆhjkí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&]”uh1jhj8ï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_acquire”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjvïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ï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”…”�”}”(hj2ð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Ž)�”}”(hjTðh]”hŒ Description”…”�”}”(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™hj»ïubjM)�”}”(hŒBAtomically updates **v** to (**v** + **i**) with acquire 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 acquire ordering.”…”�”}”(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˜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”…”�”}”(hj8ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ñ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”…”�”}”(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)�”}”(hjªÑh]”hŒi”…”�”}”(hjpñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjLñ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”†”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Œv”…”�”}”(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´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)�”}”(hj0òh]”hŒlong i”…”�”}”(hj2ò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”…”�”}”(hjIòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jEòh´K«hjFòubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj*òubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jEòh´K«hj'òubj©)�”}”(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´K¬hjcò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Èhjcò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Œ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”…”�”}”(hjgóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjcó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Œ ”…”�”}”(hjvóh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjcóh²hh³juó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&]”uh1jhj„óubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjcóh²hh³juó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)�”}”(hj|h]”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´K¿ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj_óh²hh³juóh´K¿ubah}”(h]”jZóah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³juó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³Œ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³juóh´K¿ubeh}”(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 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Ž)�”}”(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´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Àhjzô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Èhjzôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j•ôh´KÀhjwô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Á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³Œ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 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”…”�”}”(hj6õ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Âhj[ô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.”…”�”}”(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´KÄ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³Œ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 ”…”�”}”(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³Œ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 (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Œ ”…”�”}”(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)�”}”(hj|h]”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´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Ž)�”}”(hjD÷h]”hŒ Description”…”�”}”(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Œ?Atomically updates **v** to (**v** + **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hjZ÷h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjb÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ÷ubhŒ to (”…”�”}”(hjZ÷h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjt÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ÷ubhŒ + ”…”�”}”(hjZ÷h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj†÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ÷ubhŒ) with full ordering.”…”�”}”(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«ö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”…”�”}”(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Œ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&]”uh1jhjxø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_acquire”†”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Œv”…”�”}”(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´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”…”�”}”(hj9ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j5ùh´Kêhj6ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j5ùh´Kêhjùubj©)�”}”(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´KëhjSù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´Këhjoùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjSùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jnù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”…”�”}”(hjWúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjSú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Œ ”…”�”}”(hjfúh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjSúh²hh³jeú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”…”�”}”(hjxúh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtúubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjSúh²hh³jeú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€)�”}”jsjzú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)�”}”(hj|h]”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&]”jjuh1j3hjSúh²hh³jeúh´Kþubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjOúh²hh³jeúh´Kþubah}”(h]”jJúah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jeúh´KþhjLú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&]”uh1j3hjLúh²hh³jeúh´Kþubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjGûjHjGû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Ž)�”}”(hjQûh]”hŒ Parameters”…”�”}”(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´MhjKûubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value to add ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjpûh]”hŒlong i”…”�”}”(hjrûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjnû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ÿhjjû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Èhjjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…ûh´Kÿhjgû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´Mhjgû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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjKû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´MhjKû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.”…”�”}”(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´MhjKû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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjKû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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjKû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Œ*”…”�”}”(hjIýh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjýubj)�”}”(hj|h]”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 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´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** ``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Ž)�”}”(hj4þh]”hŒ Description”…”�”}”(hj6þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2þ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 ”…”�”}”(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 relaxed ordering.”…”�”}”(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´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”…”�”}”(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_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_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.raw_atomic_long_sub”†”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)�”}”(hj|h]”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´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”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j%h´M)hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j%h´M)hjubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjIh]”hŒatomic_long_t *v”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjGubah}”(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Œpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j^h´M*hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjCubeh}”(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³Œ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.”…”�”}”(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´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”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj1h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M=ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1h²hh³jCh´M=ubhÿ)�”}”(hŒraw_atomic_long_sub_return”h]”j)�”}”(hŒraw_atomic_long_sub_return”h]”hŒraw_atomic_long_sub_return”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj1h²hh³jCh´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”…”�”}”(hjŽh²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€)�”}”jsjXsbŒ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)�”}”(hj|h]”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&]”jjuh1j3hj1h²hh³jCh´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj-h²hh³jCh´M=ubah}”(h]”j(ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jCh´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³Œ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³jCh´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. 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”…”�”}”(hj1h²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´MAhj)ubj¤)�”}”(hhh]”(j©)�”}”(hŒ"``long i`` long value to subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjNh]”hŒlong i”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjLubah}”(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>hjHubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jch´M>hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jch´M>hjEubj©)�”}”(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?hjEubeh}”(h]”h ]”h"]”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´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”…”�”}”(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³Œ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_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´MBhj)ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj.h]”hŒReturn”…”�”}”(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´MDhj)ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated value of ”…”�”}”(hjDh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjLh²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´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_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”…”�”}”(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´MRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�h²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þhj�h²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Œ ”…”�”}”(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Œv”…”�”}”(hj4h²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´MRubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj}h²hh³j“h´MRubah}”(h]”jxah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j“h´MRhjzh²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´MRhjZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjzh²hh³j“h´MRubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjujHjujI‰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Ž)�”}”(hjh]”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´MVhjyubj¤)�”}”(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£hjyubjM)�”}”(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´MVhjyubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) 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”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(ubhŒ - ”…”�”}”(hj(h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjTh²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´MUhjyubjM)�”}”(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.”…”�”}”(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´MWhjyubjM)�”}”(hŒ **Return**”h]”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´MYhjyubjM)�”}”(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´MZhjyubeh}”(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Œ ”…”�”}”(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 ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jKŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjøsbŒ$c.raw_atomic_long_sub_return_release”†”asbuh1hhjBubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjBubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjBubj)�”}”(hj|h]”hŒv”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubeh}”(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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´Mhhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jh´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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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Ž)�”}”(hjbh]”hŒ Description”…”�”}”(hjdh²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ÉubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hjxh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxubhŒ to (”…”�”}”(hjxh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxubhŒ - ”…”�”}”(hjxh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxubhŒ) with release ordering.”…”�”}”(hjxh²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”…”�”}”(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Œ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj!h²hh³j3h´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”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjBubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj!h²hh³j3h´M|ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj^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”ˆjjuh1j9hjZubj:)�”}”(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€)�”}”jsjHsbŒ$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)�”}”(hj|h]”hŒv”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj!h²hh³j3h´M|ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh²hh³j3h´M|ubah}”(h]”jah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j3h´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³j3h´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)�”}”(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}hj8 ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(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Œ.``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”…”�”}”(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 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 ”…”�”}”(hj4 h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4 ubhŒ.”…”�”}”(hj4 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”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjq 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&]”uh1jPhjq h²hh³jƒ 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þhjq 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”†”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Œ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&]”jjuh1j3hjq h²hh³jƒ h´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjm h²hh³jƒ h´M‘ubah}”(h]”jh ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jƒ h´M‘hjj h²hubj4)�”}”(hhh]”jM)�”}”(hŒ"atomic subtract with full ordering”h]”hŒ"atomic subtract with full ordering”…”�”}”(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‘hjJ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjj 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** ``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Ž)�”}”(hjo h]”hŒ Parameters”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm 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•hji 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“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£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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M•hji 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”…”�”}”(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 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”hji 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.”…”�”}”(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–hji 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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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_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”…”�”}”(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_long_fetch_sub_acquire”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2 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)�”}”(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´M¨hjubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj0h²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Ž)�”}”(hjRh]”hŒ Description”…”�”}”(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ªhj¹ ubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ to (”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ - ”…”�”}”(hjhh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubhŒ) with acquire ordering.”…”�”}”(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©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”…”�”}”(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_fetch_sub_release”h]”j)�”}”(hŒ!raw_atomic_long_fetch_sub_release”h]”hŒ!raw_atomic_long_fetch_sub_release”…”�”}”(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.raw_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)�”}”(hj|h]”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 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³j#h´M»ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰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�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”…”�”}”(hj0h²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”…”�”}”(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³Œ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€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³Œ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�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_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”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjah²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÐubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjah²hh³jsh´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”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjah²hh³jsh´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Œ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÒubj)�”}”(hj|h]”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&]”jjuh1j3hjah²hh³jsh´MÐubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj]h²hh³jsh´MÐubah}”(h]”jXah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jsh´MÐhjZh²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&]”uh1j3hjZh²hh³jsh´MÐubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjUjHjUjI‰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Ž)�”}”(hj_h]”hŒ Parameters”…”�”}”(hjah²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ÔhjYubj¤)�”}”(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ÑhjxubjÉ)�”}”(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Èhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j“h´MÑhjuubj©)�”}”(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Òhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjYubjM)�”}”(hŒ**Description**”h]”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ÔhjYubjM)�”}”(hŒBAtomically updates **v** to (**v** - **i**) 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Œ - ”…”�”}”(hjh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubhŒ) 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´MÓhjYubjM)�”}”(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.”…”�”}”(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ÕhjYubjM)�”}”(hŒ **Return**”h]”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×hjYubjM)�”}”(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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éŒ 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Œ ”…”�”}”(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Œv”…”�”}”(hj0h²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”…”�”}”(hjYh²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åhjVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjªh²hh³jÃh´Måubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjqjHjqjI‰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Ž)�”}”(hj{h]”hŒ Parameters”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyubah}”(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éhjuubj¤)�”}”(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£hjuubjM)�”}”(hŒ**Description**”h]”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èhjuubjM)�”}”(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”…”�”}”(hjh²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çhjuubjM)�”}”(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éhjuubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj/h]”hŒReturn”…”�”}”(hj1h²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ëhjuubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(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ìhjuubeh}”(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”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjph²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&]”uh1jPhjph²hh³j‚h´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þhjph²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_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)�”}”(hj|h]”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&]”jjuh1j3hjph²hh³j‚h´Mùubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjlh²hh³j‚h´Mùubah}”(h]”jgah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‚h´Mùhjih²hubj4)�”}”(hhh]”jM)�”}”(hŒ#atomic increment with full ordering”h]”hŒ#atomic increment 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ùhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjih²hh³j‚h´Mùubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj0jHj0jI‰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”…”�”}”(hj<h²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´Mýhj4ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjYh]”hŒatomic_long_t *v”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjWubah}”(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úhjSubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jnh´Múhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jnh´MúhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj4ubjM)�”}”(hŒ**Description**”h]”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ühj4ubjM)�”}”(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ûhj4ubjM)�”}”(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ýhj4ubjM)�”}”(hŒ **Return**”h]”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ÿhj4ubjM)�”}”(hŒThe updated value of **v**.”h]”(hŒThe updated 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´Mhj4ubeh}”(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”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjAh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjAh²hh³jSh´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”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjbubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjAh²hh³jSh´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€)�”}”jsjhsbŒ$c.raw_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)�”}”(hj|h]”hŒv”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjzubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjAh²hh³jSh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj=h²hh³jSh´M ubah}”(h]”j8ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jSh´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³jSh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰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”…”�”}”(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´Mhjubj¤)�”}”(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”…”�”}”(hjCh²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£hjubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjeh]”hŒ Description”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjubjM)�”}”(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´MhjubjM)�”}”(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´MhjubjM)�”}”(hŒ **Return**”h]”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´MhjubjM)�”}”(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´Mhjubeh}”(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”…”�”}”(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_inc_return_release”h]”j)�”}”(hŒ"raw_atomic_long_inc_return_release”h]”hŒ"raw_atomic_long_inc_return_release”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²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”…”�”•}”(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€)�”}”jsj9sbŒ$c.raw_atomic_long_inc_return_release”†”asbuh1hhjOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²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)�”}”(hj|h]”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³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!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³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_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Ž)�”}”(hj6h]”hŒ Description”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubah}”(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 ”…”�”}”(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”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLubhŒ + 1) 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´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.”…”�”}”(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ÖubjM)�”}”(hŒ **Return**”h]”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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(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”…”�”}”(hj'h²hh³Nh´Nubah}”(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_relaxed”†”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)�”}”(hj|h]”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´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”…”�”}”(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´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Ž)�”}”(hjh]”hŒ Description”…”�”}”(hj h²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´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”…”�”}”(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 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.”…”�”}”(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´M9hj§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³Œ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 ”…”�”}”(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³Œ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Œ ”…”�”}”(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Œv”…”�”}”(hj3h²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”…”�”}”(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´MIhjYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj­h²hh³jÆh´MIubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjtjHjtjI‰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Ž)�”}”(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´MMhjxubj¤)�”}”(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£hjxubjM)�”}”(hŒ**Description**”h]”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´MLhjxubjM)�”}”(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”…”�”}”(hjh²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´MKhjxubjM)�”}”(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.”…”�”}”(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´MMhjxubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj2h]”hŒReturn”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MOhjxubjM)�”}”(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´MPhjxubeh}”(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û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_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þ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_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)�”}”(hj|h]”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 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³j—h´M]ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjEjHjEjI‰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Ž)�”}”(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´MahjIubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjnh]”hŒatomic_long_t *v”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjlubah}”(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^hjhubjÉ)�”}”(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Èhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jƒh´M^hjeubah}”(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 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_hjIubjM)�”}”(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´MahjIubjM)�”}”(hŒ **Return**”h]”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´MchjIubjM)�”}”(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´MdhjIubeh}”(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”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjV h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjV h²hh³jh 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”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjw ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjV h²hh³jh 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€)�”}”jsj} 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)�”}”(hj|h]”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´Mqubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjR h²hh³jh h´Mqubah}”(h]”jM ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh h´MqhjO 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&]”uh1j3hjO h²hh³jh 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)�”}”(hj?!h]”hŒatomic_long_t *v”…”�”}”(hjA!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´Mrhj9!ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjX!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jT!h´MrhjU!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jT!h´Mrhj6!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³Œ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³j9"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”…”�”}”(hjL"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjH"ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj'"h²hh³j9"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”…”�”}”(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.raw_atomic_long_fetch_inc_relaxed”†”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)�”}”(hj|h]”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´M…ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj#"h²hh³j9"h´M…ubah}”(h]”j"ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j9"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³j9"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Ž)�”}”(hjK#h]”hŒ Description”…”�”}”(hjM#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjI#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 ”…”�”}”(hja#h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hji#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 relaxed ordering.”…”�”}”(hja#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”…”�”}”(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_atomic_long_dec”†”asbuh1hhj5$ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\$h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5$ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjj$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj5$ubj)�”}”(hj|h]”hŒv”…”�”}”(hjw$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj1$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 ”…”�”}”(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Œ - 1) with relaxed 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Œ@Safe to use in noinstr code; prefer atomic_long_dec() elsewhere.”h]”hŒ@Safe to use in noinstr code; prefer atomic_long_dec() elsewhere.”…”�”}”(hje%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Ž)�”}”(hjv%h]”hŒReturn”…”�”}”(hjx%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt%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)�”}”(hj|h]”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´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&]”jFjAjGjw&jHjw&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Ž)�”}”(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 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_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±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³Œ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 ”…”�”}”(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³Œ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_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)�”}”(hj|h]”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”…”�”}”(hj0(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&]”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 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Ž)�”}”(hjR(h]”hŒ Parameters”…”�”}”(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Å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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÄhjL(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ÃhjL(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Å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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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_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”…”�”}”(hj])h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjY)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Œ ”…”�”}”(hjl)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjY)h²hh³jk)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”…”�”}”(hj~)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz)ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjY)h²hh³jk)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_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Œ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&]”jjuh1j3hjY)h²hh³jk)h´MÕubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjU)h²hh³jk)h´MÕubah}”(h]”jP)ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jk)h´MÕhjR)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&]”uh1j3hjR)h²hh³jk)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)�”}”(hjB*h]”hŒatomic_long_t *v”…”�”}”(hjD*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³jW*h´MÖhjX*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj<*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jW*h´MÖhj9*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”…”�”}”(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Œ ”…”�”}”(hj=+h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*+h²hh³j<+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”…”�”}”(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Œ(atomic_long_t *v)”h]”j:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_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}]”j€)�”}”jsjQ+sbŒ$c.raw_atomic_long_dec_return_relaxed”†”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)�”}”(hj|h]”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 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„)�”}”(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Ž)�”}”(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´Mìhjî+ubjM)�”}”(hŒ>Atomically updates **v** to (**v** - 1) with relaxed 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Œ - 1) with relaxed ordering.”…”�”}”(hjd,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”…”�”}”(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_fetch_dec”†”asbuh1hhj8-ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_-h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj8-ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjm-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj8-ubj)�”}”(hj|h]”hŒv”…”�”}”(hjz-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj8-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj4-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$]”•Zh&]”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 ”…”�”}”(hj5.h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj=.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5.ubhŒ to (”…”�”}”(hj5.h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjO.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5.ubhŒ - 1) with full ordering.”…”�”}”(hj5.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.”…”�”}”(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´Mhj¿-ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjy.h]”hŒReturn”…”�”}”(hj{.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw.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_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Œ ”…”�”}”(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)�”}”(hj|h]”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´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”…”�”}”(hjt/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´Mhjq/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 ”…”�”}”(hj0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ubhŒ to (”…”�”}”(hj0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ubhŒ - 1) with acquire ordering.”…”�”}”(hj0h²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.”…”�”}”(hj90h²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Ž)�”}”(hjJ0h]”hŒReturn”…”�”}”(hjL0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjH0ubah}”(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`0h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjh0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj`0ubhŒ.”…”�”}”(hj`0h²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Œ ”…”�”}”(hj1h²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)�”}”(hj|h]”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”…”�”}”(hjE1h²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%hjB1h²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** ``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Ž)�”}”(hjg1h]”hŒ Parameters”…”�”}”(hji1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hje1ubah}”(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)hja1ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj†1h]”hŒatomic_long_t *v”…”�”}”(hjˆ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj„1ubah}”(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€1ubjÉ)�”}”(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Èhj€1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›1h´M&hj}1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hja1ubjM)�”}”(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(hja1ubjM)�”}”(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'hja1ubjM)�”}”(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 2h²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)hja1ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj2h]”hŒReturn”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ubah}”(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+hja1ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj12h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj92h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj12ubhŒ.”…”�”}”(hj12h²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,hja1ubeh}”(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”…”�”}”(hjr2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjn2h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjn2h²hh³j€2h´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þhjn2h²hh³j€2h´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)�”}”(hj|h]”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&]”jjuh1j3hjn2h²hh³j€2h´M9ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjj2h²hh³j€2h´M9ubah}”(h]”je2ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j€2h´M9hjg2h²hubj4)�”}”(hhh]”jM)�”}”(hŒ&atomic decrement with relaxed ordering”h]”hŒ&atomic decrement with relaxed ordering”…”�”}”(hj3h²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&]”uh1j3hjg2h²hh³j€2h´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Ž)�”}”(hj83h]”hŒ Parameters”…”�”}”(hj:3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj63ubah}”(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=hj23ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjW3h]”hŒatomic_long_t *v”…”�”}”(hjY3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjU3ubah}”(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:hjQ3ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjp3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jl3h´M:hjm3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jl3h´M:hjN3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hj23ubjM)�”}”(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<hj23ubjM)�”}”(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;hj23ubjM)�”}”(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=hj23ubjM)�”}”(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?hj23ubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj4h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubhŒ.”…”�”}”(hj4h²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@hj23ubeh}”(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”…”�”}”(hjC4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj?4h²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MMubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?4h²hh³jQ4h´MMubhÿ)�”}”(hŒraw_atomic_long_and”h]”j)�”}”(hŒraw_atomic_long_and”h]”hŒraw_atomic_long_and”…”�”}”(hjd4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj`4ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj?4h²hh³jQ4h´MMubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(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Œi”…”�”}”(hjœ4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjx4ubj:)�”}”(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€)�”}”jsjf4sbŒ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)�”}”(hj|h]”hŒv”…”�”}”(hjò4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj°4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjx4ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj?4h²hh³jQ4h´MMubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj;4h²hh³jQ4h´MMubah}”(h]”j64ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jQ4h´MMhj84h²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´MMhj5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj84h²hh³jQ4h´MMubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj35jHj35jI‰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Ž)�”}”(hj=5h]”hŒ Parameters”…”�”}”(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´MQhj75ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj\5h]”hŒlong i”…”�”}”(hj^5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjZ5ubah}”(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´MNhjV5ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hju5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jq5h´MNhjr5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjV5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jq5h´MNhjS5ubj©)�”}”(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´MOhjS5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj75ubjM)�”}”(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´MQhj75ubjM)�”}”(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”…”�”}”(hj6h²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´MPhj75ubjM)�”}”(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.”…”�”}”(hj+6h²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´MRhj75ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj<6h]”hŒReturn”…”�”}”(hj>6h²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´MThj75ubjM)�”}”(hŒNothing.”h]”hŒNothing.”…”�”}”(hjR6h²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´MUhj75ubeh}”(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”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj}6h²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&]”uh1jPhj}6h²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þhj}6h²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Œ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjî6ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj#7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjî6ubj)�”}”(hj|h]”hŒv”…”�”}”(hj07h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¶6ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj}6h²hh³j�6h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjy6h²hh³j�6h´Mbubah}”(h]”jt6ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�6h´Mbhjv6h²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic bitwise AND with full ordering”h]”hŒ%atomic bitwise AND with full ordering”…”�”}”(hjY7h²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´MbhjV7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjv6h²hh³j�6h´Mbubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjq7jHjq7jI‰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Ž)�”}”(hj{7h]”hŒ Parameters”…”�”}”(hj}7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjy7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mfhju7ubj¤)�”}”(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£hju7ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj8h]”hŒ Description”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj 8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mfhju7ubjM)�”}”(hŒ?Atomically updates **v** to (**v** & **i**) with full ordering.”h]”(hŒAtomically updates ”…”�”}”(hj$8h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj,8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$8ubhŒ to (”…”�”}”(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´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjP8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj$8ubhŒ) with full ordering.”…”�”}”(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´Mehju7ubjM)�”}”(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.”…”�”}”(hji8h²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´Mghju7ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjz8h]”hŒReturn”…”�”}”(hj|8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjx8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mihju7ubjM)�”}”(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´Mjhju7ubeh}”(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 9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj 9ubj)�”}”(hjªÑh]”hŒi”…”�”}”(hj*9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj 9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj9ubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(hjE9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jG9Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjô8sbŒ#c.raw_atomic_long_fetch_and_acquire”†”asbuh1hhj>9ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje9h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>9ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjs9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj>9ubj)�”}”(hj|h]”hŒv”…”�”}”(hj€9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj>9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj9ubeh}”(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:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÿ9h´Mxhj:ubah}”(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”…”�”}”(hj<:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j8:h´Myhj9:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j8:h´Myhjá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³Œ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 ”…”�”}”(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 acquire ordering.”…”�”}”(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´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Œ ”…”�”}”(hj0;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”…”�”}”(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Œ(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.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)�”}”(hj|h]”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 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”…”�”}”(hj<<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj8<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�hj4<ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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³Œ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 ”…”�”}”(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³Œ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”…”�”}”(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_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þhjm=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_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)�”}”(hj|h]”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´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 bitwise AND with relaxed ordering”h]”hŒ(atomic bitwise AND with relaxed ordering”…”�”}”(hjI>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¡hjF>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjf=h²hh³j=h´M¡ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGja>jHja>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Ž)�”}”(hjk>h]”hŒ Parameters”…”�”}”(hjm>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hji>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¥hje>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£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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¥hje>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¤hje>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.”…”�”}”(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¦hje>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¨hje>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©hje>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”…”�”}”(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.raw_atomic_long_andnot”†”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)�”}”(hj|h]”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 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”…”�”}”(hjAh²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¸hj AubjÉ)�”}”(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³j(Ah´M¸hj)Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j(Ah´M¸hjÑ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjµ@ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjNAh]”hŒ Description”…”�”}”(hjPAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLAubah}”(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 ”…”�”}”(hjdAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjlAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdAubhŒ to (”…”�”}”(hjdAh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj~Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdAubhŒ & ”…”�”}”(hjdAh²hh³Nh´NubjŽ)�”}”(hŒ**~i**”h]”hŒ~i”…”�”}”(hj�Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdAubhŒ) with relaxed ordering.”…”�”}”(hjdAh²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ŒPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jCPŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjðOsbŒ"c.raw_atomic_long_fetch_or_acquire”†”asbuh1hhj:PubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaPh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:Pubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjoPh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj:Pubj)�”}”(hj|h]”hŒv”…”�”}”(hj|Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:Pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjPubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjÉOh²hh³jÛOh´MIubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjÅOh²hh³jÛOh´MIubah}”(h]”jÀOah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÛOh´MIhjÂOh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with acquire ordering”h]”hŒ'atomic bitwise OR with acquire ordering”…”�”}”(hj¥Ph²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´MIhj¢Ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÂOh²hh³jÛOh´MIubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj½PjHj½PjI‰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_or_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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MMhjÁPubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hjæPh]”hŒlong i”…”�”}”(hjèPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjäPubah}”(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àPubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjÿPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jûPh´MJhjüPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjàPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jûPh´MJhjÝPubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjQh]”hŒatomic_long_t *v”…”�”}”(hj!Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjQubah}”(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´MKhjQubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj8Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4Qh´MKhj5Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4Qh´MKhjÝPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjÁPubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjZQh]”hŒ Description”…”�”}”(hj\Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXQubah}”(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ÁPubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjpQh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjxQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpQubhŒ to (”…”�”}”(hjpQh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŠQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpQubhŒ | ”…”�”}”(hjpQh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjœQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpQubhŒ) with acquire ordering.”…”�”}”(hjpQh²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´MLhjÁPubjM)�”}”(hŒMSafe to use in noinstr code; prefer atomic_long_fetch_or_acquire() elsewhere.”h]”hŒMSafe to use in noinstr code; prefer atomic_long_fetch_or_acquire() elsewhere.”…”�”}”(hjµQh²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´MNhjÁ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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MPhjÁ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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MQhjÁPubeh}”(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_or_release (C function)”Œ"c.raw_atomic_long_fetch_or_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@long raw_atomic_long_fetch_or_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ?long raw_atomic_long_fetch_or_release(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjRh²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,Rh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRh²hh³j+Rh´M^ubhÿ)�”}”(hŒ raw_atomic_long_fetch_or_release”h]”j)�”}”(hŒ raw_atomic_long_fetch_or_release”h]”hŒ raw_atomic_long_fetch_or_release”…”�”}”(hj>Rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:Rubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjRh²hh³j+Rh´M^ubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjZRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjVRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhRh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjVRubj)�”}”(hjªÑh]”hŒi”…”�”}”(hjvRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjVRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjRRubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_t”…”�”}”(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€)�”}”jsj@RsbŒ"c.raw_atomic_long_fetch_or_release”†”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)�”}”(hj|h]”hŒv”…”�”}”(hjÌRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjRRubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjRh²hh³j+Rh´M^ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjRh²hh³j+Rh´M^ubah}”(h]”jRah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j+Rh´M^hjRh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with release ordering”h]”hŒ'atomic bitwise OR with release ordering”…”�”}”(hjõRh²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òRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjRh²hh³j+Rh´M^ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj SjHj SjI‰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_or_release() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjSh]”hŒ Parameters”…”�”}”(hjSh²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´MbhjSubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj6Sh]”hŒlong i”…”�”}”(hj8Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4Subah}”(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_hj0SubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjOSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jKSh´M_hjLSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jKSh´M_hj-Subj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjoSh]”hŒatomic_long_t *v”…”�”}”(hjqSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjmSubah}”(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`hjiSubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjˆSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j„Sh´M`hj…Subah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjiSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„Sh´M`hj-Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjSubjM)�”}”(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MbhjSubjM)�”}”(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MahjSubjM)�”}”(hŒMSafe to use in noinstr code; prefer atomic_long_fetch_or_release() elsewhere.”h]”hŒMSafe to use in noinstr code; prefer atomic_long_fetch_or_release() elsewhere.”…”�”}”(hjTh²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´MchjSubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjTh]”hŒReturn”…”�”}”(hjTh²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´MehjSubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj,Th²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj4Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,TubhŒ.”…”�”}”(hj,Th²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´MfhjSubeh}”(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_or_relaxed (C function)”Œ"c.raw_atomic_long_fetch_or_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ@long raw_atomic_long_fetch_or_relaxed (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ?long raw_atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjmTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjiTh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MsubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjiTh²hh³j{Th´Msubhÿ)�”}”(hŒ raw_atomic_long_fetch_or_relaxed”h]”j)�”}”(hŒ raw_atomic_long_fetch_or_relaxed”h]”hŒ raw_atomic_long_fetch_or_relaxed”…”�”}”(hjŽTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠTubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjiTh²hh³j{Th´Msubj4)�”}”(hŒ(long i, atomic_long_t *v)”h]”(j:)�”}”(hŒlong i”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)�”}”(hjªÑh]”hŒi”…”�”}”(hjÆTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¦Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¢Tubj:)�”}”(hŒatomic_long_t *v”h]”(h)�”}”(hhh]”j)�”}”(hŒ atomic_long_t”h]”hŒ atomic_long_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€)�”}”jsj�TsbŒ"c.raw_atomic_long_fetch_or_relaxed”†”asbuh1hhjÚTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÚTubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÚTubj)�”}”(hj|h]”hŒv”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÚTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj¢Tubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjiTh²hh³j{Th´Msubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjeTh²hh³j{Th´Msubah}”(h]”j`Tah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j{Th´MshjbTh²hubj4)�”}”(hhh]”jM)�”}”(hŒ'atomic bitwise OR with relaxed ordering”h]”hŒ'atomic bitwise OR with relaxed ordering”…”�”}”(hjEUh²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´MshjBUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjbTh²hh³j{Th´Msubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj]UjHj]UjI‰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_or_relaxed() elsewhere. **Return** The original value of **v**.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjgUh]”hŒ Parameters”…”�”}”(hjiUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjeUubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MwhjaUubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj†Uh]”hŒlong i”…”�”}”(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´Mthj€UubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(hjŸUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j›Uh´MthjœUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj€Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›Uh´Mthj}Uubj©)�”}”(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´Muhj¹UubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjØUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÔUh´MuhjÕUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¹Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÔUh´Muhj}Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjaUubjM)�”}”(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MwhjaUubjM)�”}”(hŒBAtomically updates **v** to (**v** | **i**) with relaxed ordering.”h]”(hŒAtomically updates ”…”�”}”(hjVh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVubhŒ to (”…”�”}”(hjVh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj*Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVubhŒ | ”…”�”}”(hjVh²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hj[ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jY[h´M²hj@[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³Œ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³jY[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 acquire ordering. Safe to use in noinstr code; prefer atomic_long_fetch_xor_acquire() 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´M¶hj?\ubj¤)�”}”(hhh]”(j©)�”}”(hŒ``long i`` long value ”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´M³hj^\ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(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Œ.``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 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´Mµhj?\ubjM)�”}”(hŒNSafe to use in noinstr code; prefer atomic_long_fetch_xor_acquire() elsewhere.”h]”hŒNSafe to use in noinstr code; prefer atomic_long_fetch_xor_acquire() 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´M·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´M¹hj?\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´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_release (C function)”Œ#c.raw_atomic_long_fetch_xor_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒAlong raw_atomic_long_fetch_xor_release (long i, atomic_long_t *v)”h]”hù)�”}”(hŒ@long raw_atomic_long_fetch_xor_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_xor_release”h]”j)�”}”(hŒ!raw_atomic_long_fetch_xor_release”h]”hŒ!raw_atomic_long_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Œ(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_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)�”}”(hj|h]”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Œ(atomic bitwise XOR with release ordering”h]”hŒ(atomic bitwise XOR with release 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&]”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 ”…”�”}”(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³Œ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.”…”�”}”(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_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Œ ”…”�”}”(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_fetch_xor_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)�”}”(hj|h]”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 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)�”}”(hjah]”hŒlong i”…”�”}”(hjah²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Ýhjþ`ubjÉ)�”}”(hhh]”jM)�”}”(hŒ long value”h]”hŒ long value”…”�”}”(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û`ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj=ah]”hŒatomic_long_t *v”…”�”}”(hj?ah²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Þhj7aubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjVah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jRah´MÞhjSaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj7aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jRah´MÞhjû`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjß`ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjxah]”hŒ Description”…”�”}”(hjzah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvaubah}”(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”…”�”}”(hjbh²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ûhj7bh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJbh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7bh²hh³jIbh´Mñubhÿ)�”}”(hŒraw_atomic_long_xchg”h]”j)�”}”(hŒraw_atomic_long_xchg”h]”hŒraw_atomic_long_xchg”…”�”}”(hj\bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXbubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj7bh²hh³jIbh´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{bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjxbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j}bŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj^bsbŒc.raw_atomic_long_xchg”†”asbuh1hhjtbubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›bh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjtbubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj©bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjtbubj)�”}”(hj|h]”hŒv”…”�”}”(hj¶bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjpbubj:)�”}”(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”ˆjjuh1j9hjpbubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj7bh²hh³jIbh´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj3bh²hh³jIbh´Mñubah}”(h]”j.bah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jIbh´Mñhj0bh²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&]”uh1j3hj0bh²hh³jIbh´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Ž)�”}”(hj6ch]”hŒ Parameters”…”�”}”(hj8ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4cubah}”(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õhj0cubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjUch]”hŒatomic_long_t *v”…”�”}”(hjWch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjScubah}”(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òhjOcubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjnch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jjch´Mòhjkcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjOcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jjch´MòhjLcubj©)�”}”(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óhjLcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj0cubjM)�”}”(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õhj0cubjM)�”}”(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ôhj0cubjM)�”}”(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öhj0cubjM)�”}”(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Møhj0cubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hj9dh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjAdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9dubhŒ.”…”�”}”(hj9dh²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ùhj0cubeh}”(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”…”�”}”(hjzdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjvdh²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&]”uh1jPhjvdh²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þhjvdh²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)�”}”(hj|h]”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”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj eubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²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&]”jjuh1j3hjvdh²hh³jˆdh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjrdh²hh³jˆdh´Mubah}”(h]”jmdah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jˆdh´Mhjodh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with acquire ordering”h]”hŒ%atomic exchange with acquire ordering”…”�”}”(hjSeh²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´MhjPeh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjodh²hh³jˆdh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjkejHjkejI‰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Ž)�”}”(hjueh]”hŒ Parameters”…”�”}”(hjweh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjseubah}”(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 hjoeubj¤)�”}”(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´Mhj‹eubj©)�”}”(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´Mhj‹eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjoeubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjfh]”hŒ Description”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfubah}”(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 hjoeubjM)�”}”(hŒ:Atomically updates **v** to **new** with acquire ordering.”h]”(hŒAtomically updates ”…”�”}”(hjfh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj&fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfubhŒ to ”…”�”}”(hjfh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj8fh²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 hjoeubjM)�”}”(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.”…”�”}”(hjQfh²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 hjoeubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjbfh]”hŒReturn”…”�”}”(hjdfh²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 hjoeubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original value of ”…”�”}”(hjxfh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj€fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxfubhŒ.”…”�”}”(hjxfh²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´Mhjoeubeh}”(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Œ ”…”�”}”(hjgh²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)�”}”(hj|h]”hŒv”…”�”}”(hj4gh²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”…”�”}”(hjLgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjHgubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZgh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjHgubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjhgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjHgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjîfubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjµfh²hh³jÇfh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj±fh²hh³jÇfh´Mubah}”(h]”j¬fah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÇfh´Mhj®fh²hubj4)�”}”(hhh]”jM)�”}”(hŒ%atomic exchange with release ordering”h]”hŒ%atomic exchange with release ordering”…”�”}”(hj’gh²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�gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj®fh²hh³jÇfh´Mubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjªgjHjªgjI‰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. Safe to use in noinstr code; prefer atomic_long_xchg_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´Mhj®gubj¤)�”}”(hhh]”(j©)�”}”(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´MhjÍ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´Mhjégubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÍgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jègh´MhjÊgubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj hh]”hŒlong new”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj hubah}”(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´MhjhubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hj%hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j!hh´Mhj"hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j!hh´MhjÊgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj®gubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjGhh]”hŒ Description”…”�”}”(hjIhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEhubah}”(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®gubjM)�”}”(hŒ:Atomically updates **v** to **new** with release ordering.”h]”(hŒAtomically updates ”…”�”}”(hj]hh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjehh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj]hubhŒ to ”…”�”}”(hj]hh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjwhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj]hubhŒ with release ordering.”…”�”}”(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´Mhj®gubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_long_xchg_release() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_long_xchg_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éŒ)raw_atomic_long_xchg_relaxed (C function)”Œc.raw_atomic_long_xchg_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ>long 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Œ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôhh²hh³jih´M0ubhÿ)�”}”(hŒraw_atomic_long_xchg_relaxed”h]”j)�”}”(hŒraw_atomic_long_xchg_relaxed”h]”hŒraw_atomic_long_xchg_relaxed”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjiubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjôhh²hh³jih´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”…”�”}”(hj8ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5iubah}”(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”†”asbuh1hhj1iubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj1iubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjfih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj1iubj)�”}”(hj|h]”hŒv”…”�”}”(hjsih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj1iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-iubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj‹ih²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³jih´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjðhh²hh³jih´M0ubah}”(h]”jëhah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jih´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³jih´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´M1hj jubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj+jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j'jh´M1hj(jubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j'jh´M1hj jubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hjKjh]”hŒlong new”…”�”}”(hjMjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjIjubah}”(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´M2hjEjubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjdjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`jh´M2hjajubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjEjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`jh´M2hj jubeh}”(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³Œ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”…”�”}”(hj7kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj3kh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3kh²hh³jEkh´MEubhÿ)�”}”(hŒraw_atomic_long_cmpxchg”h]”j)�”}”(hŒraw_atomic_long_cmpxchg”h]”hŒraw_atomic_long_cmpxchg”…”�”}”(hjXkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjTkubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj3kh²hh³jEkh´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”…”�”}”(hjwkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jykŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjZksbŒc.raw_atomic_long_cmpxchg”†”asbuh1hhjpkubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjpkubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¥kh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjpkubj)�”}”(hj|h]”hŒv”…”�”}”(hj²kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjpkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjlkubj:)�”}”(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”ˆjjuh1j9hjlkubj:)�”}”(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Œ ”…”�”}”(hj lh²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”ˆjjuh1j9hjlkubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj3kh²hh³jEkh´MEubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj/kh²hh³jEkh´MEubah}”(h]”j*kah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jEkh´MEhj,kh²hubj4)�”}”(hhh]”jM)�”}”(hŒ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hjElh²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´MEhjBlh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj,kh²hh³jEkh´MEubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj]ljHj]ljI‰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Ž)�”}”(hjglh]”hŒ Parameters”…”�”}”(hjilh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjelubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MIhjalubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hj†lh]”hŒatomic_long_t *v”…”�”}”(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´MFhj€lubjÉ)�”}”(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Èhj€lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j›lh´MFhj}lubj©)�”}”(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´MGhj}lubj©)�”}”(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³j mh´MHhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjòlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j mh´MHhj}lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjalubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj3mh]”hŒ Description”…”�”}”(hj5mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1mubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MJhjalubjM)�”}”(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 (”…”�”}”(hjImh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjQmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjImubhŒ == ”…”�”}”(hjImh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjcmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjImubhŒ), atomically updates ”…”�”}”(hjImh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjumh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjImubhŒ to ”…”�”}”(hjImh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj‡mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjImubhŒ with full ordering. Otherwise, ”…”�”}”(hjImh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj™mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjImubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjImh²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´MIhjalubjM)�”}”(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´MLhjalubjM)�”}”(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´MNhjalubjM)�”}”(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´MOhjalubeh}”(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ûhjnh²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)nh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjnh²hh³j(nh´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&]”uh1jhj7nubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjnh²hh³j(nh´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”…”�”}”(hjZnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j\nŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj=nsbŒ!c.raw_atomic_long_cmpxchg_acquire”†”asbuh1hhjSnubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjznh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjSnubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjˆnh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjSnubj)�”}”(hj|h]”hŒv”…”�”}”(hj•nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjSnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjOnubj:)�”}”(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”ˆjjuh1j9hjOnubj:)�”}”(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”ˆjjuh1j9hjOnubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjnh²hh³j(nh´M\ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjnh²hh³j(nh´M\ubah}”(h]”j nah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j(nh´M\hjnh²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(hj(oh²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%oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjnh²hh³j(nh´M\ubeh}”(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 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Ž)�”}”(hjJoh]”hŒ Parameters”…”�”}”(hjLoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHoubah}”(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`hjDoubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjioh]”hŒatomic_long_t *v”…”�”}”(hjkoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjgoubah}”(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]hjcoubjÉ)�”}”(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´M]hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjcoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~oh´M]hj`oubj©)�”}”(hŒ(``long old`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long old``”h]”jS)�”}”(hj¢oh]”hŒlong old”…”�”}”(hj¤oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj oubah}”(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œoubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hj»oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j·o•h´M^hj¸oubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjœoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j·oh´M^hj`oubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hjÛoh]”hŒlong new”…”�”}”(hjÝoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjÙoubah}”(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ÕoubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(hjôoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jðoh´M_hjñoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÕoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jðoh´M_hj`oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjDoubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjph]”hŒ Description”…”�”}”(hjph²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´MahjDoubjM)�”}”(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,ph²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj4ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,pubhŒ == ”…”�”}”(hj,ph²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjFph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,pubhŒ), atomically updates ”…”�”}”(hj,ph²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjXph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,pubhŒ to ”…”�”}”(hj,ph²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,pubhŒ# with acquire ordering. Otherwise, ”…”�”}”(hj,ph²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj|ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,pubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hj,ph²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`hjDoubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic_long_cmpxchg_acquire() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic_long_cmpxchg_acquire() elsewhere.”…”�”}”(hj•ph²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´MchjDoubjM)�”}”(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MehjDoubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original 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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MfhjDoubeh}”(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_release (C function)”Œ!c.raw_atomic_long_cmpxchg_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒKlong raw_atomic_long_cmpxchg_release (atomic_long_t *v, long old, long new)”h]”hù)�”}”(hŒJlong raw_atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjýph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjùph²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MsubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjùph²hh³j qh´Msubhÿ)�”}”(hŒraw_atomic_long_cmpxchg_release”h]”j)�”}”(hŒraw_atomic_long_cmpxchg_release”h]”hŒraw_atomic_long_cmpxchg_release”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjùph²hh³j qh´Msubj4)�”}”(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=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.raw_atomic_long_cmpxchg_release”†”asbuh1hhj6qubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]qh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj6qubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjkqh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj6qubj)�”}”(hj|h]”hŒv”…”�”}”(hjxqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj2qubj:)�”}”(hŒlong old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj�qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjŒqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžqh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjŒqubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj¬qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŒqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj2qubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÅqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjÁqubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓqh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÁqubj)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjáqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÁqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj2qubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjùph²hh³j qh´Msubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjõph²hh³j qh´Msubah}”(h]”jðpah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j qh´Mshjòph²hubj4)�”}”(hhh]”jM)�”}”(hŒ1atomic compare and exchange with release ordering”h]”hŒ1atomic compare and exchange with release ordering”…”�”}”(hj rh²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´Mshjrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjòph²hh³j qh´Msubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj#rjHj#rjI‰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. Safe to use in noinstr code; prefer atomic_long_cmpxchg_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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mwhj'rubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjLrh]”hŒatomic_long_t *v”…”�”}”(hjNrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjJrubah}”(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´MthjFrubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjerh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jarh´Mthjbrubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjFrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jarh´MthjCrubj©)�”}”(hŒ(``long old`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long old``”h]”jS)�”}”(hj…rh]”hŒlong old”…”�”}”(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´MuhjrubjÉ)�”}”(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Èhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jšrh´MuhjCrubj©)�”}”(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´MvhjCrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj'rubjM)�”}”(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´Mxhj'rubjM)�”}”(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”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsubhŒ == ”…”�”}”(hjsh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj)sh²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”…”�”}”(hjMsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsubhŒ# with release ordering. Otherwise, ”…”�”}”(hjsh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj_sh²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´Mwhj'rubjM)�”}”(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.”…”�”}”(hjxsh²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´Mzhj'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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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_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”…”�”}”(hjth²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”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j"tŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjtsbŒ!c.raw_atomic_long_cmpxchg_relaxed”†”asbuh1hhjtubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjtubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjNth²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjtubj)�”}”(hj|h]”hŒv”…”�”}”(hj[th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjtubj:)�”}”(hŒlong old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjsth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjotubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjotubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjotubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjtubj:)�”}”(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”ˆjjuh1j9hjtubeh}”(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&]”jFjAjGjujHjujI‰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 uubj¤)�”}”(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”…”�”}”(hj1uh²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‹hj)uubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hjHuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jDuh´M‹hjEuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj)uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jDuh´M‹hj&uubj©)�”}”(hŒ(``long old`` long value to compare with ”h]”(j¯)�”}”(hŒ ``long old``”h]”jS)�”}”(hjhuh]”hŒlong old”…”�”}”(hjjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjfuubah}”(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ŒhjbuubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to compare with”h]”hŒlong value to compare with”…”�”}”(hj�uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j}uh´MŒhj~uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjbuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j}uh´MŒhj&uubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj¡uh]”hŒlong new”…”�”}”(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�hj›uubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(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Ž)�”}”(hjÜuh]”hŒ Description”…”�”}”(hjÞuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚuubah}”(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 uubjM)�”}”(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ò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Œ**old**”h]”hŒold”…”�”}”(hj vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòuubhŒ), atomically updates ”…”�”}”(hjòuh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòuubhŒ to ”…”�”}”(hjòuh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj0vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòuubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hjòuh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjBvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòuubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjòuh²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 uubjM)�”}”(hŒLSafe to use in noinstr code; prefer atomic_long_cmpxchg_relaxed() elsewhere.”h]”hŒLSafe to use in noinstr code; prefer atomic_long_cmpxchg_relaxed() elsewhere.”…”�”}”(hj[vh²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 uubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjlvh]”hŒReturn”…”�”}”(hjnvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjjvubah}”(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 uubjM)�”}”(hŒThe original value of **v**.”h]”(hŒThe original 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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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_long_try_cmpxchg (C function)”Œc.raw_atomic_long_try_cmpxchg”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒHbool raw_atomic_long_try_cmpxchg (atomic_long_t *v, long *old, long new)”h]”hù)�”}”(hŒGbool raw_atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjÃvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj¿vh²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Ñvh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¿vh²hh³jÐvh´M¡ubhÿ)�”}”(hŒraw_atomic_long_try_cmpxchg”h]”j)�”}”(hŒraw_atomic_long_try_cmpxchg”h]”hŒraw_atomic_long_try_cmpxchg”…”�”}”(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Œ'(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”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jwŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjåvsbŒc.raw_atomic_long_try_cmpxchg”†”asbuh1hhjûvubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"wh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûvubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj0wh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjûvubj)�”}”(hj|h]”hŒv”…”�”}”(hj=wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjûvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj÷vubj:)�”}”(hŒ long *old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjUwh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjQwubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcwh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQwubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjqwh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjQwubj)�”}”(hŒold”h]”hŒold”…”�”}”(hj~wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj÷vubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(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Œnew”h]”hŒnew”…”�”}”(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Œ.atomic compare and exchange with full ordering”h]”hŒ.atomic compare and exchange with full ordering”…”�”}”(hjÝwh²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Ú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„)�”}”(hX**Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long *old`` pointer to 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, **old** is updated to the current value of **v**, and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_try_cmpxchg() elsewhere. **Return** **true** if the exchange occurred, **false** otherwise.”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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¥hjùwubj¤)�”}”(hhh]”(j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjxh]”hŒatomic_long_t *v”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjxubah}”(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¢hjxubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(hj7xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j3xh´M¢hj4xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j3xh´M¢hjxubj©)�”}”(hŒ4``long *old`` pointer to long value to compare with ”h]”(j¯)�”}”(hŒ ``long *old``”h]”jS)�”}”(hjWxh]”hŒ long *old”…”�”}”(hjYxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjUxubah}”(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£hjQxubjÉ)�”}”(hhh]”jM)�”}”(hŒ%pointer to long value to compare with”h]”hŒ%pointer to long value to compare with”…”�”}”(hjpxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jlxh´M£hjmxubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjQxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jlxh´M£hjxubj©)�”}”(hŒ"``long new`` long value to assign ”h]”(j¯)�”}”(hŒ ``long new``”h]”jS)�”}”(hj�xh]”hŒlong new”…”�”}”(hj’xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjŽxubah}”(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ŠxubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to assign”h]”hŒlong value to assign”…”�”}”(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¤hjxubeh}”(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M¦hjùwubjM)�”}”(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á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Œ**old**”h]”hŒold”…”�”}”(hjûxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjáxubhŒ), atomically updates ”…”�”}”(hjáxh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjáxubhŒ to ”…”�”}”(hjáxh²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjáxubhŒ with full ordering. Otherwise, ”…”�”}”(hjáxh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj1yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjáxubhŒ is not modified, ”…”�”}”(hjáxh²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hjCyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjáxubhŒ$ is updated to the current value of ”…”�”}”(hjáxh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjUyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjáxubhŒ#, and relaxed ordering is provided.”…”�”}”(hjáxh²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ùwubjM)�”}”(hŒHSafe to use in noinstr code; prefer atomic_long_try_cmpxchg() elsewhere.”h]”hŒHSafe to use in noinstr code; prefer atomic_long_try_cmpxchg() elsewhere.”…”�”}”(hjnyh²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ùwubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjyh]”hŒReturn”…”�”}”(hj�yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj}yubah}”(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ùwubjM)�”}”(hŒ7**true** if the exchange occurred, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj™yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•yubhŒ if the exchange occurred, ”…”�”}”(hj•yh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj«yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•yubhŒ otherwise.”…”�”}”(hj•yh²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ùwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhjºh²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ0raw_atomic_long_try_cmpxchg_acquire (C function)”Œ%c.raw_atomic_long_try_cmpxchg_acquire”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPbool raw_atomic_long_try_cmpxchg_acquire (atomic_long_t *v, long *old, long new)”h]”hù)�”}”(hŒObool raw_atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)”h]”(jü)�”}”(hjÿh]”hŒbool”…”�”}”(hjäyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjàyh²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òyh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjàyh²hh³jñyh´M¹ubhÿ)�”}”(hŒ#raw_atomic_long_try_cmpxchg_acquire”h]”j)�”}”(hŒ#raw_atomic_long_try_cmpxchg_acquire”h]”hŒ#raw_atomic_long_try_cmpxchg_acquire”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjàyh²hh³jñyh´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#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€)�”}”jsjzsbŒ%c.raw_atomic_long_try_cmpxchg_acquire”†”asbuh1hhjzubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCzh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjzubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjQzh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjzubj)�”}”(hj|h]”hŒv”…”�”}”(hj^zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjzubj:)�”}”(hŒ long *old”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjvzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjrzubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„zh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjrzubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj’zh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjrzubj)�”}”(hŒold”h]”hŒold”…”�”}”(hjŸzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjzubj:)�”}”(hŒlong new”h]”(jü)�”}”(hŒlong”h]”hŒlong”…”�”}”(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Œnew”h]”hŒnew”…”�”}”(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Œ1atomic compare and exchange with acquire ordering”h]”hŒ1atomic compare and exchange with acquire ordering”…”�”}”(hjþzh²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ûzh²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²hhjºh³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long *old`` pointer to 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, **old** is updated to the current value of **v**, and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_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³Œ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”…”�”}”(hjA{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ºhj9{ubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_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{ubj©)�”}”(hŒ4``long *old`` pointer to long value to compare with ”h]”(j¯)�”}”(hŒ ``long *old``”h]”jS)�”}”(hjx{h]”hŒ long *old”…”�”}”(hjz{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjv{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»hjr{ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%pointer to long value to compare with”h]”hŒ%pointer to 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Èhjr{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j�{h´M»hj6{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³Œ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 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¼hj6{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ŒÇ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”…”�”}”(hjR|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”…”�”}”(hjd|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”…”�”}”(hjv|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³Œ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_try_cmpxchg_acquire() elsewhere.”h]”hŒPSafe to use in noinstr code; prefer atomic_long_try_cmpxchg_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Œ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³Œ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_try_cmpxchg_release (C function)”Œ%c.raw_atomic_long_try_cmpxchg_release”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPbool raw_atomic_long_try_cmpxchg_release (atomic_long_t *v, long *old, long new)”h]”hù)�”}”(hŒObool raw_atomic_long_try_cmpxchg_release(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³Œ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_try_cmpxchg_release”h]”j)�”}”(hŒ#raw_atomic_long_try_cmpxchg_release”h]”hŒ#raw_atomic_long_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´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”…”�”}”(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.raw_atomic_long_try_cmpxchg_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)�”}”(hj|h]”hŒv”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj9}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”)�”}”(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”ˆjjuh1j9hj9}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”ˆ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Œ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³Œ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&]”jFjAjGj7~jHj7~jI‰jJ‰jK‰uh1híh²hhjºh³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long *old`` pointer to 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, **old** is updated to the current value of **v**, and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_try_cmpxchg_release() elsewhere. **Return** **true** if the exchange occurred, **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´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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MÒhjZ~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ÈhjZ~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³ju~h´MÒhjW~ubj©)�”}”(hŒ4``long *old`` pointer to 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³Œ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 long value to compare with”h]”hŒ%pointer to 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ÓhjW~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³Œ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 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ÔhjW~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj;~ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj h]”hŒ Description”…”�”}”(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´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”…”�”}”(hjOh²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 release ordering. Otherwise, ”…”�”}”(hj#h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjsh²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³Œ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_try_cmpxchg_release() elsewhere.”h]”hŒPSafe to use in noinstr code; prefer atomic_long_try_cmpxchg_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Œ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³Œ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_try_cmpxchg_relaxed (C function)”Œ%c.raw_atomic_long_try_cmpxchg_relaxed”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒPbool raw_atomic_long_try_cmpxchg_relaxed (atomic_long_t *v, long *old, long new)”h]”hù)�”}”(hŒObool raw_atomic_long_try_cmpxchg_relaxed(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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MéubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4€h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"€h²hh³j3€h´Méubhÿ)�”}”(hŒ#raw_atomic_long_try_cmpxchg_relaxed”h]”j)�”}”(hŒ#raw_atomic_long_try_cmpxchg_relaxed”h]”hŒ#raw_atomic_long_try_cmpxchg_relaxed”…”�”}”(hjF€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB€ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj"€h²hh³j3€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”…”�”}”(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€)�”}”jsjH€sbŒ%c.raw_atomic_long_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)�”}”(hj|h]”hŒv”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj^€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjZ€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”)�”}”(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”ˆjjuh1j9hjZ€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”ˆjjuh1j9hjZ€ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj"€h²hh³j3€h´Méubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj€h²hh³j3€h´Méubah}”(h]”j€ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j3€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³Œ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³j3€h´Méubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjX�jHjX�jI‰jJ‰jK‰uh1híh²hhjºh³Nh´Nubj„)�”}”(hX **Parameters** ``atomic_long_t *v`` pointer to atomic_long_t ``long *old`` pointer to 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, **old** is updated to the current value of **v**, and relaxed ordering is provided. Safe to use in noinstr code; prefer atomic_long_try_cmpxchg_relaxed() elsewhere. **Return** **true** if the exchange occurred, **false** 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³Œ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êhjx�ubj©)�”}”(hŒ4``long *old`` pointer to 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³Œ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 long value to compare with”h]”hŒ%pointer to 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ëhjx�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³Œ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 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ìhjx�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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.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 (”…”�”}”(hjD‚h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjL‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD‚ubhŒ == ”…”�”}”(hjD‚h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj^‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD‚ubhŒ), atomically updates ”…”�”}”(hjD‚h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjp‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD‚ubhŒ to ”…”�”}”(hjD‚h²hh³Nh´NubjŽ)�”}”(hŒ**new**”h]”hŒnew”…”�”}”(hj‚‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD‚ubhŒ# with relaxed ordering. Otherwise, ”…”�”}”(hjD‚h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj”‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD‚ubhŒ is not modified, ”…”�”}”(hjD‚h²hh³Nh´NubjŽ)�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj¦‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD‚ubhŒ$ is updated to the current value of ”…”�”}”(hjD‚h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¸‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjD‚ubhŒ#, and relaxed ordering is provided.”…”�”}”(hjD‚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_try_cmpxchg_relaxed() elsewhere.”h]”hŒPSafe to use in noinstr code; prefer atomic_long_try_cmpxchg_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Œ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³Œ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_sub_and_test (C function)”Œc.raw_atomic_long_sub_and_test”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ„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 subtract ”h]”(j¯)�”}”(hŒ ``long i``”h]”jS)�”}”(hj_„h]”hŒlong i”…”�”}”(hja„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´MhjY„ubjÉ)�”}”(hhh]”jM)�”}”(hŒlong value to subtract”h]”hŒlong value to subtract”…”�”}”(hjx„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jt„h´Mhju„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjY„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jt„h´MhjV„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´MhjV„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Œ?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´Mhj:„ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_long_sub_and_test() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_long_sub_and_test() 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”…”�”}”(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´Mhj:„ubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjY…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjU…ubhŒ if the resulting value of ”…”�”}”(hjU…h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjk…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjU…ubhŒ is zero, ”…”�”}”(hjU…h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj}…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjU…ubhŒ otherwise.”…”�”}”(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:„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_and_test (C function)”Œc.raw_atomic_long_dec_and_test”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4bool raw_atomic_long_dec_and_test (atomic_long_t *v)”h]”hù)�”}”(hŒ3bool raw_atomic_long_dec_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³Œ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_dec_and_test”h]”j)�”}”(hŒraw_atomic_long_dec_and_test”h]”hŒraw_atomic_long_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´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_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Œ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Œ4atomic decrement and test if zero with full ordering”h]”hŒ4atomic decrement and test if zero with full ordering”…”�”}”(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´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„)�”}”(hX,**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_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�hjy†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´Mhju†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£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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhju†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´Mhju†ubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_long_dec_and_test() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_long_dec_and_test() 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´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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mhju†ubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hjI‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjE‡ubhŒ if the resulting value of ”…”�”}”(hjE‡h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj[‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjE‡ubhŒ is zero, ”…”�”}”(hjE‡h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjm‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjE‡ubhŒ otherwise.”…”�”}”(hjE‡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´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_long_inc_and_test (C function)”Œc.raw_atomic_long_inc_and_test”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ4bool raw_atomic_long_inc_and_test (atomic_long_t *v)”h]”hù)�”}”(hŒ3bool raw_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³Œ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_and_test”h]”j)�”}”(hŒraw_atomic_long_inc_and_test”h]”hŒraw_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.raw_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)�”}”(hj|h]”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”…”�”}”(hjIˆ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*hjFˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj›‡h²hh³j³‡h´M*ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjaˆjHjaˆ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. Safe to use in noinstr code; prefer atomic_long_inc_and_test() elsewhere. **Return** **true** if the resulting value of **v** is zero, **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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M.hjeˆ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£hjeˆubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjňh]”hŒ Description”…”�”}”(hjLjh²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-hjeˆ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,hjeˆubjM)�”}”(hŒISafe to use in noinstr code; prefer atomic_long_inc_and_test() elsewhere.”h]”hŒISafe to use in noinstr code; prefer atomic_long_inc_and_test() 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.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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M0hjeˆubjM)�”}”(hŒF**true** if the resulting value of **v** is zero, **false** otherwise.”h]”(jŽ)�”}”(hŒ**true**”h]”hŒtrue”…”�”}”(hj9‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5‰ubhŒ if the resulting value of ”…”�”}”(hj5‰h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjK‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5‰ubhŒ is zero, ”…”�”}”(hj5‰h²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj]‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5‰ubhŒ otherwise.”…”�”}”(hj5‰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´M1hjeˆ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_negative (C function)”Œc.raw_atomic_long_add_negative”hNt”auh1hÜhjºh²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒ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”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Œ*”…”�”}”(hj7Šh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjŠubj)�”}”(hj|h]”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Œ2atomic add and test if negative with full ordering”h]”hŒ2atomic add and test if negative with full ordering”…”�”}”(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>hjjŠ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„)�”}”(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 ”…”�”}”(hj8‹h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj@‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8‹ubhŒ to (”…”�”}”(hj8‹h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjR‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8‹ubhŒ + ”…”�”}”(hj8‹h²hh³Nh´NubjŽ)�”}”(hŒ**i**”h]”hŒi”…”�”}”(hjd‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8‹ubhŒ) with full ordering.”…”�”}”(hj8‹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.”…”�”}”(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´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”…”�”}”(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_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_negative_acquire”†”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)�”}”(hj|h]”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´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”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j2�h´MThj3�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j2�h´MThj�ubj©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjV�h]”hŒatomic_long_t *v”…”�”}”(hjX�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjT�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´MUhjP�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´MUhjl�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjP�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jk�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”…”�”}”(hjtŽh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjpŽh²hh³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Žh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjpŽh²hh³j�Ž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þhjpŽh²hh³j�Ž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)�”}”(hj|h]”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³j�Žh´Mhubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjlŽh²hh³j�Žh´Mhubah}”(h]”jgŽah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j�Žh´MhhjiŽ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”…”�”}”(hjK�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´MhhjH�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjiŽh²hh³j�Žh´Mhubeh}”(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 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Ž)�”}”(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´Mlhjg�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´Mihj†�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Èhj†�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¡�h´Mihjƒ�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´Mjhjƒ�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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mlhjg�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”…”�”}”(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 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´Mkhjg�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.”…”�”}”(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´Mmhjg�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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´Mohjg�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´Mphjg�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”…”�”}”(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_add_negative_relaxed”†”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)�”}”(hj|h]”hŒv”…”�”}”(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Œ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)�”}”(hj4’h]”hŒatomic_long_t *v”…”�”}”(hj6’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj2’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”…”�”}”(hjM’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jI’h´MhjJ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj.’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jI’h´Mhjò‘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³Œ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Œ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”…”�”}”(hjR“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjN“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Œ ”…”�”}”(hja“h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjN“h²hh³j`“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”…”�”}”(hjs“h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjo“ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjN“h²hh³j`“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€)�”}”jsju“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)�”}”(hj|h]”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”…”�”}”(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&]”jjuh1j3hjN“h²hh³j`“h´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjJ“h²hh³j`“h´M’ubah}”(h]”jE“ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j`“h´M’hjG“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³Œ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&]”uh1j3hjG“h²hh³j`“h´M’ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjv”jHjv”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Ž)�”}”(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–hjz”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£hjz”ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjL•h]”hŒ Description”…”�”}”(hjN•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJ•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—hjz”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 (”…”�”}”(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´NubjŽ)�”}”(hŒ**u**”h]”hŒu”…”�”}”(hj|•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjb•ubhŒ), atomically updates ”…”�”}”(hjb•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjŽ•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Œ**a**”h]”hŒa”…”�”}”(hj²•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjb•ubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjb•h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjÄ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjb•ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(hjb•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–hjz”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™hjz”ubjM)�”}”(hŒ **Return**”h]”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›hjz”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œhjz”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”…”�”}”(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Œ ”…”�”}”(hjS–h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjA–h²hh³jR–h´M©ubhÿ)�”}”(hŒraw_atomic_long_add_unless”h]”j)�”}”(hŒraw_atomic_long_add_unless”h]”hŒraw_atomic_long_add_unless”…”�”}”(hje–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhja–ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjA–h²hh³jR–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€)�”}”jsjg–sbŒc.raw_atomic_long_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)�”}”(hj|h]”hŒv”…”�”}”(hj¿–h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjy–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”ˆjjuh1j9hjy–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”ˆjjuh1j9hjy–ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjA–h²hh³jR–h´M©ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj=–h²hh³jR–h´M©ubah}”(h]”j8–ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jR–h´M©hj:–h²hubj4)�”}”(hhh]”jM)�”}”(hŒ*atomic add unless value with full ordering”h]”hŒ*atomic add unless value with full ordering”…”�”}”(hjP—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©hjM—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj:–h²hh³jR–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 ``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Ž)�”}”(hjr—h]”hŒ Parameters”…”�”}”(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­hjl—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£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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M®hjl—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 (”…”�”}”(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Œ**u**”h]”hŒu”…”�”}”(hjn˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjT˜ubhŒ), 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Œ**a**”h]”hŒa”…”�”}”(hj¤˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjT˜ubhŒ!) with full ordering. Otherwise, ”…”�”}”(hjT˜h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hj¶˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjT˜ubhŒ2 is not modified and relaxed ordering is provided.”…”�”}”(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­hjl—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°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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´M²hjl—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³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_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”…”�”}”(hjW™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjS™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Œ ”…”�”}”(hje™h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjS™h²hh³jd™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”…”�”}”(hjw™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjs™ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjS™h²hh³jd™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€)�”}”jsjy™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)�”}”(hj|h]”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³jd™h´MÀubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjO™h²hh³jd™h´MÀubah}”(h]”jJ™ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jd™h´MÀhjL™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&]”uh1j3hjL™h²hh³jd™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”…”�”}”(hj=šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj9š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Áhj5šubjÉ)�”}”(hhh]”jM)�”}”(hŒpointer to atomic_long_t”h]”hŒpointer to atomic_long_t”…”�”}”(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šubah}”(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³Œ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”…”�”}”(hj2›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”…”�”}”(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_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þ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€)�”}”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)�”}”(hj|h]”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Œ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&]”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„)�”}”(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Ž)�”}”(hj0œh]”hŒ Parameters”…”�”}”(hj2œ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)�”}”(hjOœh]”hŒatomic_long_t *v”…”�”}”(hjQœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjMœ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ÖhjIœ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ÈhjIœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jdœh´MÖhjFœ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”…”�”}”(hj4�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�ubhŒ was updated, ”…”�”}”(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³Œ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”…”�”}”(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_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þ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_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)�”}”(hj|h]”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Œ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&]”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„)�”}”(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Ž)�”}”(hjDžh]”hŒ Parameters”…”�”}”(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´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ë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³Œ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_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ï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”…”�”}”(hj6Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ŸubhŒ if ”…”�”}”(hj2Ÿh²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hjHŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ŸubhŒ was updated, ”…”�”}”(hj2Ÿh²hh³Nh´NubjŽ)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hjZŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2ŸubhŒ otherwise.”…”�”}”(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>ž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)�”}”(hj|h]”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 if positive with full ordering”h]”hŒ/atomic decrement if positive with full ordering”…”�”}”(hj7 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ÿhj4 h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjˆŸh²hh³j¡Ÿh´Mÿubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjO jHjO 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Ž)�”}”(hjY h]”hŒ Parameters”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW 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´MhjS ubj¤)�”}”(hhh]”j©)�”}”(hŒ.``atomic_long_t *v`` pointer to atomic_long_t ”h]”(j¯)�”}”(hŒ``atomic_long_t *v``”h]”jS)�”}”(hjx h]”hŒatomic_long_t *v”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjv 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´Mhjr 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Èhjr ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j� h´Mhjo 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³Œe/var/lib/git/docbuild/linux/Documentation/driver-api/basics:105: ./include/linux/atomic/atomic-long.h”h´MhjS 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´MhjS 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´MhjS ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj1¡h]”hŒReturn”…”�”}”(hj3¡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´MhjS ubjM)�”}”(hŒFThe old value of (**v** - 1), regardless of whether **v** was updated.”h]”(hŒThe old 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Œ - 1), regardless of whether ”…”�”}”(hjG¡h²hh³Nh´NubjŽ)�”}”(hŒ**v**”h]”hŒv”…”�”}”(hja¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjG¡ubhŒ was updated.”…”�”}”(hjG¡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´MhjS 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”…”�”}”(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.kobject_get_path”†”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Œkobj”h]”hŒkobj”…”�”}”(hjq¢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}]”jR¢Œc.kobject_get_path”†”asbuh1hhj†¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†¢ubj)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(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Œ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)�”}”(hj6£h]”hŒconst struct kobject *kobj”…”�”}”(hj8£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj4£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´K“hj0£ubjÉ)�”}”(hhh]”jM)�”}”(hŒ1kobject in question, with which to build the path”h]”hŒ1kobject in question, with which to build the path”…”�”}”(hjO£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jK£h´K“hjL£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj0£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jK£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)�”}”(hjo£h]”hŒgfp_t gfp_mask”…”�”}”(hjq£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjm£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´K”hji£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³j„£h´K”hj…£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhji£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j„£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Œ ”…”�”}”(hj9¤h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj(¤ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(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.kobject_set_name”†”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”…”�”}”(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Œ ”…”�”}”(hjǤh²hh³Nh´Nubah}”(h]”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&]”jFjAjGj<¥jHj<¥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Ž)�”}”(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´M0hj@¥ubj¤)�”}”(hhh]”(j©)�”}”(hŒ;``struct kobject *kobj`` struct kobject to set the name of ”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´M-hj_¥ubjÉ)�”}”(hhh]”jM)�”}”(hŒ!struct kobject to set the name of”h]”hŒ!struct kobject to set the name of”…”�”}”(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Œ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.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Œ£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/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 (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”…”�”}”(hjW¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjS¦h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MBubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf¦h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjS¦h²hh³je¦h´MBubhÿ)�”}”(hŒ kobject_init”h]”j)�”}”(hŒ kobject_init”h]”hŒ kobject_init”…”�”}”(hjx¦h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjt¦ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjS¦h²hh³je¦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€)�”}”jsjz¦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”…”�”}”(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.kobject_init”†”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Œktype”h]”hŒktype”…”�”}”(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&]”jjuh1j3hjS¦h²hh³je¦h´MBubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjO¦h²hh³je¦h´MBubah}”(h]”jJ¦ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³je¦h´MBhjL¦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&]”uh1j3hjL¦h²hh³je¦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.”…”�”}”(hj5¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j1¨h´MDhj2¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j1¨h´MDhjÚ§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³Œ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.”…”�”}”(hjm¨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.”…”�”}”(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´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Œ*”…”�”}”(hj4©h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjä¨ubj)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjA©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”…”�”}”(hjZ©h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjV©ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg©h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjV©ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(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.kobject_add”†”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)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj±©h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjV©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.”…”�”}”(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´MzhjMªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj ¨h²hh³j¹¨h´Mzubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjhªjHjhª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Ž)�”}”(hjrªh]”hŒ Parameters”…”�”}”(hjtªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpªubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M~hjlª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)�”}”(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´Khj6«ubjÉ)�”}”(hhh]”jM)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjU«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ«h´KhjR«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQ«h´Khjˆªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjlª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³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´Khjlª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~hjlª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�hjlª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‡hjlª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�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³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M”hjlª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.”…”�”}”(hjB¬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�hjlª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”…”�”}”(hjq¬h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjm¬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&]”uh1jPhjm¬h²hh³j¬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þhjm¬h²hh³j¬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Œ ”…”�”}”(hjH­h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj­ubh)�”}”(hhh]”j)�”}”(hŒ kobj_type”h]”hŒ kobj_type”…”�”}”(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.kobject_init_and_add”†”asbuh1hhj­ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw­h²hh³Nh´Nubah}”(h]”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”…”�”}”(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”…”�”}”(hj6®h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj®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)�”}”(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Œ...”…”�”}”(hjx®h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjt®ubah}”(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Œ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&]”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„)�”}”(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.”…”�”}”(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ŒB``struct kobject *parent`` pointer to the parent of this kobject. ”h]”(j¯)�”}”(hŒ``struct kobject *parent``”h]”jS)�”}”(hjT¯h]”hŒstruct kobject *parent”…”�”}”(hjV¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjR¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M¶hjN¯ubjÉ)�”}”(hhh]”jM)�”}”(hŒ&pointer to the parent of this kobject.”h]”hŒ&pointer to the parent of this kobject.”…”�”}”(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Ù®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”…”�”•}”(hjU°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjQ°h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÑubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd°h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQ°h²hh³jc°h´MÑubhÿ)�”}”(hŒkobject_rename”h]”j)�”}”(hŒkobject_rename”h]”hŒkobject_rename”…”�”}”(hjv°h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr°ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjQ°h²hh³jc°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€)�”}”jsjx°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”…”�”}”(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&]”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ŒChange the name of an object.”h]”hŒChange the name of an object.”…”�”}”(hjr±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Ñhjo±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²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.”…”�”}”(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_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”…”�”}”(hjl²h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{²h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjh²h²hh³jz²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þhjh²h²hh³jz²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”…”�”}”(hjDzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjIJubah}”(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”…”�”}”(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㲌c.kobject_move”†”asbuh1hhj³ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW³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Œ new_parent”h]”hŒ new_parent”…”�”}”(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&]”jjuh1j3hjh²h²hh³jz²h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjd²h²hh³jz²h´Mubah}”(h]”j_²ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jz²h´Mhja²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&]”uh1j3hja²h²hh³jz²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”…”�”}”(hjp´h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjl´h²hh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MeubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjl´h²hh³j~´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þhjl´h²hh³j~´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&]”jjuh1j3hjl´h²hh³j~´h´Meubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjh´h²hh³j~´h´Meubah}”(h]”jc´ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j~´h´Mehje´h²hubj4)�”}”(hhh]”jM)�”}”(hŒUnlink kobject from hierarchy.”h]”hŒUnlink kobject from hierarchy.”…”�”}”(hj0µ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&]”uh1j3hje´h²hh³j~´h´Meubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjHµjHjHµ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Ž)�”}”(hjRµh]”hŒ Parameters”…”�”}”(hjTµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPµubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MihjLµubj¤)�”}”(hhh]”j©)�”}”(hŒ!``struct kobject *kobj`` object. ”h]”(j¯)�”}”(hŒ``struct kobject *kobj``”h]”jS)�”}”(hjqµh]”hŒstruct kobject *kobj”…”�”}”(hjsµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjoµubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MfhjkµubjÉ)�”}”(hhh]”jM)�”}”(hŒobject.”h]”hŒobject.”…”�”}”(hjеh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j†µh´Mfhj‡µubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjkµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j†µh´Mfhjhµ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³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MhhjLµ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´MghjLµ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Œ ”…”�”}”(hj1¶h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjíµh²hh³jþµh´Myubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj?¶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”…”�”}”(hjP¶h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjL¶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”…”�”}”(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Œ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_get”†”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)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(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´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.”…”�”}”(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´MzhjC·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj'·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jB·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û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_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þhjƒ·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&]”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ŒDecrement refcount for object.”h]”hŒDecrement refcount for object.”…”�”}”(hjG¸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Õ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„)�”}”(hŒ~**Parameters** ``struct kobject *kobj`` object. **Description** Decrement the refcount, and if 0, call kobject_cleanup().”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³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MÙhjc¸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´MÖhj‚¸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Èhj‚¸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³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MØhjc¸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×hjc¸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Œ ”…”�”}”(hjH¹h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¹h²hh³j¹h´M ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjV¹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)�”}”(hjE¹h]”hŒkobject_create_and_add”…”�”}”(hjg¹h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjc¹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”…”�”}”(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Œname”h]”hŒname”…”�”}”(hjƹh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj~¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjz¹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}]”jC¹Œ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”…”�”}”(hj6ºh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÛ¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjz¹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.”…”�”}”(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&]”jFjAjGjxºjHjxº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Ž)�”}”(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 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£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´Mhj|º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 hj|º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´Mhj|º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”…”�”}”(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´MWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx»h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhje»h²hh³jw»h´MWubhÿ)�”}”(hŒ kset_register”h]”j)�”}”(hŒ kset_register”h]”hŒ kset_register”…”�”}”(hjŠ»h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†»ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhje»h²hh³jw»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&]”jjuh1j3hje»h²hh³jw»h´MWubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hja»h²hh³jw»h´MWubah}”(h]”j\»ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jw»h´MWhj^»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&]”uh1j3hj^»h²hh³jw»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. **NOTE** On error, the kset.kobj.name allocated by() kobj_set_name() is freed, it can not be used any more.”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³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´M[hjD¼ubj¤)�”}”(hhh]”j©)�”}”(hŒ``struct kset *k`` kset. ”h]”(j¯)�”}”(hŒ``struct kset *k``”h]”jS)�”}”(hji¼h]”hŒstruct kset *k”…”�”}”(hjk¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjg¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MXhjc¼ubjÉ)�”}”(hhh]”jM)�”}”(hŒkset.”h]”hŒkset.”…”�”}”(hj‚¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~¼h´MXhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjc¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j~¼h´MXhj`¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjD¼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´MZhjD¼ubjM)�”}”(hŒbOn error, the kset.kobj.name allocated by() kobj_set_name() is freed, it can not be used any more.”h]”hŒbOn error, the kset.kobj.name allocated by() kobj_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´MZhjD¼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Œ ”…”�”}”(hj3½h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj"½ubh)�”}”(hhh]”j)�”}”(hŒkset”h]”hŒkset”…”�”}”(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.kset_unregister”†”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)�”}”(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³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”…”�”}”(hjC¾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Œ ”…”�”}”(hjQ¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?¾h²hh³jP¾h´M„ubh)�”}”(hhh]”j)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(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Œ kset_find_obj”sbŒc.kset_find_obj”†”asbuh1hhj?¾h²hh³jP¾h´M„ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ¾h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj?¾h²hh³jP¾h´M„ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‘¾h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj?¾h²hh³jP¾h´M„ubhÿ)�”}”(hŒ kset_find_obj”h]”j)�”}”(hj€¾h]”hŒ kset_find_obj”…”�”}”(hj¢¾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Œ%(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}]”j~¾Œ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”…”�”}”(hjH¿h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj)¿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Œname”h]”hŒname”…”�”}”(hjq¿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´M„ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj;¾h²hh³jP¾h´M„ubah}”(h]”j6¾ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jP¾h´M„hj8¾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&]”uh1j3hj8¾h²hh³jP¾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Ž)�”}”(hjPÀh]”hŒ Description”…”�”}”(hjRÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNÀ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 ”…”�”}”(hjfÀh²hh³Nh´NubjŽ)�”}”(hŒ**kset->subsys**”h]”hŒ kset->subsys”…”�”}”(hjnÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfÀubhŒ, and iterate over ”…”�”}”(hjfÀh²hh³Nh´NubjŽ)�”}”(hŒ**kset->list**”h]”hŒ kset->list”…”�”}”(hj€Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfÀubhŒe, looking for a matching kobject. If matching object is found take a reference and return the object.”…”�”}”(hjfÀ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”…”�”}”(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/Áubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjNÁ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Œname”h]”hŒname”…”�”}”(hjwÁ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”…”�”}”(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ôÀŒc.kset_create_and_add”†”asbuh1hhjÂubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWÂ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Œ parent_kobj”h]”hŒ parent_kobj”…”�”}”(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´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)�”}”(hjOÃh]”hŒstruct kobject *parent_kobj”…”�”}”(hjQÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjMÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒP/var/lib/git/docbuild/linux/Documentation/driver-api/basics:111: ./lib/kobject.c”h´MähjIÃubjÉ)�”}”(hhh]”jM)�”}”(hŒ(the parent kobject of this kset, if any.”h]”hŒ(the parent kobject of this kset, if any.”…”�”}”(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ä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”…”�”}”(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.kobject_uevent_env”†”asbuh1hhjÄubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYÄ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Œkobj”h]”hŒkobj”…”�”}”(hjtÄ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}]”jUÄŒ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”)�”}”(hjkŽh]”hŒ[”…”�”}”(hj'Åh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjìÄubj”)�”}”(hjyŽh]”hŒ]”…”�”}”(hj4Å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”…”�”}”(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ÓhjZÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÓÃh²hh³jìÃh´MÓubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjuÅjHjuÅ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Ž)�”}”(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×hjyÅ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£hjyÅ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³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/basics:114: ./lib/kobject_uevent.c”h´MÙhjyÅ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.”…”�”}”(hjaÆ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ØhjyÅ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”…”�”}”(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_action”h]”hŒkobject_action”…”�”}”(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_uevent”†”asbu•Lh1hhj;Ç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ÅÆ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Œ%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&]”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 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``”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”…”�”}”(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³Œ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.”…”�”}”(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´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Œ*”…”�”}”(hj6Éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjæÈubj)�”}”(hŒenv”h]”hŒenv”…”�”}”(hjCÉ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”…”�”}”(hj\Éh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjXÉubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÉh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjXÉubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjwÉ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Œ*”…”�”}”(hj“Éh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjXÉubj)�”}”(hŒformat”h]”hŒformat”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXÉ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”…”�”}”(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Êubj©)�”}”(hŒ<``const char *format`` printf format for the key=value pair ”h]”(j¯)�”}”(hŒ``const char *format``”h]”jS)�”}”(hj\Êh]”hŒconst char *format”…”�”}”(hj^Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjZÊ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šhjVÊubjÉ)�”}”(hhh]”jM)�”}”(hŒ$printf format for the key=value pair”h]”hŒ$printf format for the key=value pair”…”�”}”(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š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”…”�”}”(hj2Ë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³jEËh´Kubah}”(h]”j!Ëah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jEËh´Khj#Ëh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hj#Ëh²hh³jEËh´Kubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGj^ËjHj^ËjI‰jJ‰jK‰uh1híh²hhjËh³Nh´NubjM)�”}”(hŒ``ARRAY_SIZE (arr)``”h]”jS)�”}”(hjdËh]”hŒARRAY_SIZE (arr)”…”�”}”(hjfËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbË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 ”…”�”}”(hj~Ëh²hh³Nh´NubjŽ)�”}”(hŒ**arr**”h]”hŒarr”…”�”}”(hj†Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/basics:120: ./include/linux/array_size.h”h´KhjzË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³j7Ìh´Kubah}”(h]”jÌah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j7Ìh´KhjÌh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÌh²hh³j7Ìh´Kubeh}”(h]”h ]”(jAŒmacro”eh"]”h$]”h&]”jFjAjGjPÌjHjPÌjI‰jJ‰jK‰uh1híh²hhjËh³Nh´NubjM)�”}”(hŒ``ARRAY_END (arr)``”h]”jS)�”}”(hjVÌh]”hŒARRAY_END (arr)”…”�”}”(hjXÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjTÌ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ŒÜ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.”…”�”}”(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´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)�”}”(hjÜh]”hŒ for_each_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´K ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj}Üh²hh³jœÜh´K ubah}”(h]”jxÜah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jœÜh´K hjzÜh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjzÜ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Ž)�”}”(hjJÝh]”hŒ Description”…”�”}”(hjLÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHÝ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:”…”�”}”(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êÜ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)”…”�”}”hjoÝ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.”…”�”}”(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êÜ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)�”}”(hj7Þh]”hŒx”…”�”}”(hj9Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5Þubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´Khj1ÞubjÉ)�”}”(hhh]”jM)�”}”(hŒThe reference value.”h]”hŒThe reference value.”…”�”}”(hjPÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jLÞh´KhjMÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jLÞ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)�”}”(hjpÞh]”hŒa”…”�”}”(hjrÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjnÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KhjjÞ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´Khj†Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…Þ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"hj8ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j7ß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)�”}”(hjvßh]”hŒfind_closest_descending”…”�”}”(hj€ßh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj|ßubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjxß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'hjtßh²hh³j“ßh´K8ubah}”(h]”joßah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j“ßh´K8hjqßh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjqß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)”…”�”}”(hj1á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 ”…”�”}”(hjIáh²hh³Nh´NubjŽ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hjQáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIáubhŒ if ”…”�”}”(hjIáh²hh³Nh´NubjŽ)�”}”(hŒ**cond**”h]”hŒcond”…”�”}”(hjcáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIáubhŒ is true, or to NULL otherwise.”…”�”}”(hjIá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´KVhjEáubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³j{á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�hj†áubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KZhj‚á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£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´KZhj‚á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 ”…”�”}”(hjCâh²hh³Nh´NubjŽ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hjKâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCâubhŒG if CONFIG_FOO is set to ‘y’ or ‘m’, or to NULL otherwise. The ”…”�”}”(hjCâh²hh³Nh´NubjŽ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hj]âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCâubhŒ argument must be a pointer.”…”�”}”(hjCâ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´KYhj‚á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.”…”�”}”(hjvâ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‚áubjM)�”}”(hŒ&For instance, consider the following::”h]”hŒ%For instance, consider 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´K^hj‚á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`hj‚á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´Kmhj‚á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´Krhj‚á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´Kyhj‚á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{hj‚á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„hj‚á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&]”jFjAjGj>ãjHj>ãjI‰jJ‰jK‰uh1híh²hhjËh³Nh´NubjM)�”}”(hŒ``u64_to_user_ptr (x)``”h]”jS)�”}”(hjDãh]”hŒu64_to_user_ptr (x)”…”�”}”(hjFãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBã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 *”…”�”}”(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‹hjZãubah}”(h]”h ]”h"]”h$]”h&]”uh1jhh³jlã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Ž)�”}”(hjyãh]”hŒ Parameters”…”�”}”(hj{ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwãubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´K�hjsã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£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³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/basics:133: ./include/linux/util_macros.h”h´KŽhjsã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�hjsã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&]”jFjAjGjHäjHjHäjI‰jJ‰jK‰uh1híh²hhjËh³Nh´NubjM)�”}”(hŒ``is_insidevar (ptr, var)``”h]”jS)�”}”(hjNäh]”hŒis_insidevar (ptr, var)”…”�”}”(hjPäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjLä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”…”�”}”(hj<åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8å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 ”…”�”}”(hjPåh²hh³Nh´NubjŽ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hjXåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPåubhŒ+ lies within the memory range allocated to ”…”�”}”(hjPåh²hh³Nh´NubjŽ)�”}”(hŒ**var**”h]”hŒvar”…”�”}”(hjjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjPåubhŒ.”…”�”}”(hjPå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”…”�”}”(hjFæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jBæh´KhjCæubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj'æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jBæh´Khj$æ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³Œ[/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.”…”�”}”(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´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)�”}”(hj7çh]”hŒn”…”�”}”(hj9çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5çubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/basics:136: ./include/linux/wordpart.h”h´Khj1çubjÉ)�”}”(hhh]”jM)�”}”(hŒthe number we're accessing”h]”hŒthe number we’re accessing”…”�”}”(hjPç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´KhjMçubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jLç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]”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_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”…”�”}”(hj4è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´Khj1èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j0è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)�”}”(hjoèh]”hŒ lower_16_bits”…”�”}”(hjyèh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuèubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjqè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'hjmèh²hh³jŒèh´Kubah}”(h]”jhèah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jŒèh´Khjjèh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjjè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)�”}”(hjSéh]”hŒ REPEAT_BYTE”…”�”}”(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:136: ./include/linux/wordpart.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Ë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Ž)�”}”(hj0êh]”hŒNOTE”…”�”}”(hj2ê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”…”�”}”(hjJêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFêubhŒ> is not checked for > 0xff; larger values produce odd results.”…”�”}”(hjFê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)�”}”(hj}êh]”hŒREPEAT_BYTE_U32”…”�”}”(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´K+ubah}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj{êh²hh³jšêh´K+ubah}”(h]”jvêah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jšêh´K+hjxêh²hubj4)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j3hjxê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”…”�”}”(hj8ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4ëh´K,hj5ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4ëh´K,hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjúêubjM)�”}”(hŒ**NOTE**”h]”jŽ)�”}”(hjZëh]”hŒNOTE”…”�”}”(hj\ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjXë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”…”�”}”(hjtëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjpëubhŒ> is not checked for > 0xff; larger values produce odd results.”…”�”}”(hjpë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Ž)�”}”(hj6ìh]”hŒ Parameters”…”�”}”(hj8ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´K÷hj0ìubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h•g]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hjUìh]”hŒvoid”…”�”}”(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:139: ./kernel/printk/printk.c”h´KhjOìubjÉ)�”}”(hhh]”jM)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjnìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jjìh´Khjkìubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjOìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jjìh´KhjLì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³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´Khj0ì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ôhj0ì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&]”uh1jPhjÑì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”…”�”}”(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 hj9íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÊìh²hh³jãìh´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjTíjHjTí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Ž)�”}”(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´MhjXí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”…”�”}”(hj–íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j’íh´Khj“íubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjwíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’íh´Khjtíubah}”(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³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjXí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 hjXí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ûhj6îubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj2î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”…”�”}”(hjdî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´Mhjaî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** ``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Ž)�”}”(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´Mhj€î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Ž)�”}”(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Œ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´Mhj€î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´Mhj€î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´Mhj€îubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj.ïh]”hŒReturn”…”�”}”(hj0ï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´Mhj€îubjM)�”}”(hŒ/A cookie to pass to console_srcu_read_unlock().”h]”hŒ/A cookie to pass to console_srcu_read_unlock().”…”�”}”(hjDï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´Mhj€î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”…”�”}”(hjsïh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjoï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&]”uh1jPhjoïh²hh³j�ï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þhjoïh²hh³j�ï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&]”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Œ=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&]”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„)�”}”(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)�”}”(hj7ðh]”hŒ int cookie”…”�”}”(hj9ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj5ð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*hj1ðubjÉ)�”}”(hhh]”jM)�”}”(hŒ-cookie returned from console_srcu_read_lock()”h]”hŒ-cookie returned from console_srcu_read_lock()”…”�”}”(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.ð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³Œ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”…”�”}”(hj8ñ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”…”�”}”(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ü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjlñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjMñubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzñ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Œname”h]”hŒname”…”�”}”(hj•ñh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjMñ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Ž)�”}”(hj1òh]”hŒ Parameters”…”�”}”(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´Mš hj+òubj¤)�”}”(hhh]”(j©)�”}”(hŒ6``const char *devname`` DEVNAME:0.0 style device name ”h]”(j¯)�”}”(hŒ``const char *devname``”h]”jS)�”}”(hjPòh]”hŒconst char *devname”…”�”}”(hjRòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjNò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˜ hjJòubjÉ)�”}”(hhh]”jM)�”}”(hŒDEVNAME:0.0 style device name”h]”hŒDEVNAME:0.0 style device name”…”�”}”(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Œ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™ hjƒò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Èhjƒòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jžòh´M™ hjGò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š 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³Œ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.”…”�”}”(hj4ó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Ž)�”}”(hjEóh]”hŒReturn”…”�”}”(hjGóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCó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.”…”�”}”(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éŒ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ûhj†óh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MA ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™óh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†óh²hh³j˜óh´MA 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þhj†óh²hh³j˜óh´MA 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´MA ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj‚óh²hh³j˜óh´MA ubah}”(h]”j}óah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j˜óh´MA hjó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´MA hjîóh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjóh²hh³j˜óh´MA 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´ME hj ôubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hj2ôh]”hŒvoid”…”�”}”(hj4ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj0ô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”…”�”}”(hjKôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jGôh´KhjHôubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj,ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jGôh´Khj)ô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³Œ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.”…”�”}”(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´MB 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´ME 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´MW ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐôh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj½ôh²hh³jÏôh´MW 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´MW 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´MW ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj¹ôh²hh³jÏôh´MW ubah}”(h]”j´ôah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jÏôh´MW 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´MW hj%õh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj¶ôh²hh³jÏôh´MW 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** 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Ž)�”}”(hjJõh]”hŒ Parameters”…”�”}”(hjLõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjHõubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M[ hjDõ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”…”�”}”(hj‚õ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£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³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjDõ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´MX hjDõ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[ hjDõ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´MK ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjôõh²hh³jöh´MK 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´MK ubj4)�”}”(hŒ(void)”h]”j:)�”}”(hŒvoid”h]”jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj5öh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj1öubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj-öubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjôõh²hh³jöh´MK ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjðõh²hh³jöh´MK ubah}”(h]”jëõah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jöh´MK hjíõh²hubj4)�”}”(hhh]”jM)�”}”(hŒ2unblock the legacy console subsystem from printing”h]”hŒ2unblock the legacy 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´MK hj\öh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjíõh²hh³jöh´MK ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjwöjHjwö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Ž)�”}”(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´MO 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Ž)�”}”(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Œ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´ML hj{ö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´MO hj{ö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´MS hj{ö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”…”�”}”(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Œ ”…”�”}”(hjM÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:÷h²hh³jL÷h´Mõubhÿ)�”}”(hŒconsole_force_preferred_locked”h]”j)�”}”(hŒconsole_force_preferred_locked”h]”hŒconsole_force_preferred_locked”…”�”}”(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Œ(struct console *con)”h]”j:)�”}”(hŒstruct console *con”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hj{÷h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjw÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjw÷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€)�”}”jsja÷sbŒ c.console_force_preferred_locked”†”asbuh1hhjw÷ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹÷h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjw÷ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjÇ÷h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjw÷ubj)�”}”(hŒcon”h]”hŒcon”…”�”}”(hjÔ÷h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjw÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjs÷ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj:÷h²hh³jL÷h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj6÷h²hh³jL÷h´Mõubah}”(h]”j1÷ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jL÷h´Mõhj3÷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&]”uh1j3hj3÷h²hh³jL÷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)�”}”(hj?øh]”hŒstruct console *con”…”�”}”(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:139: ./kernel/printk/printk.c”h´Möhj9øubjÉ)�”}”(hhh]”jM)�”}”(hŒ*The registered console to force preferred.”h]”hŒ*The registered console to force preferred.”…”�”}”(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³Œ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Œ*”…”�”}”(hj3ùh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj÷øubj)�”}”(hŒcaller_jiffies”h]”hŒcaller_jiffies”…”�”}”(hj@ù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”…”�”}”(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Œint”h]”hŒint”…”�”}”(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)�”}”(hŒinterval_msecs”h]”hŒinterval_msecs”…”�”}”(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Œ%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)�”}”(hj5úh]”hŒunsigned int interval_msecs”…”�”}”(hj7úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj3ú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”…”�”}”(hjNúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJúh´MŽhjKúubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj/úubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jJúh´MŽ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³Œ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 ”…”�”}”(hj†úh²hh³Nh´NubjŽ)�”}”(hŒ**interval_msecs**”h]”hŒinterval_msecs”…”�”}”(hjŽúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†úubhŒV milliseconds have elapsed since the last time printk_timed_ratelimit() returned true.”…”�”}”(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_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Œ ”…”�”}”(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)�”}”(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³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¥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 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”…”�”}”(hj3ü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”…”�”}”(hjlüh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjhü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&]”uh1jPhjhüh²hh³jzü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þhjhüh²hh³jzü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&]”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Œ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&]”uh1j3hjaüh²hh³jzüh´MÃubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjDýjHjDý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Ž)�”}”(hjNýh]”hŒ Parameters”…”�”}”(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ÇhjHýubj¤)�”}”(hhh]”j©)�”}”(hŒD``struct kmsg_dumper *dumper`` pointer to the kmsg_dumper structure ”h]”(j¯)�”}”(hŒ``struct kmsg_dumper *dumper``”h]”jS)�”}”(hjmýh]”hŒstruct kmsg_dumper *dumper”…”�”}”(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:139: ./kernel/printk/printk.c”h´MÄhjgý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Èhjgýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j‚ýh´MÄhjdýubah}”(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³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MÆhjHý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ÅhjHý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´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj þh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjûýh²hh³j þh´Mubhÿ)�”}”(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´Mubj4)�”}”(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>hj7þubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7þubh)�”}”(hhh]”j)�”}”(hŒkmsg_dump_iter”h]”hŒkmsg_dump_iter”…”�”}”(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.kmsg_dump_get_line”†”asbuh1hhj7þubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyþh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7þubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‡þh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj7þubj)�”}”(hŒiter”h]”hŒiter”…”�”}”(hj”þh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3þ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”ˆjjuh1j9hj3þ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”ˆjjuh1j9hj3þ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}]”juþŒc.kmsg_dump_get_line”†”asbuh1hhjÿubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDÿh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÿubj)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjRÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3þubj:)�”}”(hŒ size_t *len”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_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}]”juþŒc.kmsg_dump_get_line”†”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)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj§ÿh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjgÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj3þ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Œ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´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„)�”}”(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´Mhjíÿ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´Mhj 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´Mhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j'h´Mhj ubj©)�”}”(hŒ+``bool syslog`` include the "<4>" prefixes ”h]”(j¯)�”}”(hŒ``bool syslog``”h]”jS)�”}”(hjKh]”hŒ bool syslog”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MhjEubjÉ)�”}”(hhh]”jM)�”}”(hŒinclude the "<4>" prefixes”h]”hŒinclude the “<4>â€� prefixes”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`h´Mhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`h´Mhj ubj©)�”}”(hŒ*``char *line`` buffer to copy the line to ”h]”(j¯)�”}”(hŒ``char *line``”h]”jS)�”}”(hj„h]”hŒ char *line”…”�”}”(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´Mhj~ubjÉ)�”}”(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´Mhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j™h´Mhj 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´Mhj·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´MhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÒh´Mhj 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´Mhjð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´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Ž)�”}”(hj1h]”hŒ Description”…”�”}”(hj3h²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´Mhjíÿ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.”…”�”}”(hjGh²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´Mhjíÿ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.”…”�”}”(hjVh²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´Mhjíÿ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.”…”�”}”(hjeh²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´MNubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�h²hh³j¡h´MNubhÿ)�”}”(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´MNubj4)�”}”(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”…”�”}”(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”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj>ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²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 *buf”h]”(jü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjrubjQ)�”}”(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)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjrubeh}”(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”…”�”}”(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.kmsg_dump_get_buffer”†”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_out”h]”hŒlen_out”…”�”}”(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Œcopy kmsg log lines”h]”hŒcopy kmsg log lines”…”�”}”(hjfh²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´MNhjch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj‰h²hh³j¡h´MNubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj~jHj~jI‰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�hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MRhj‚ubj¤)�”}”(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´MOhj¡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´MOhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¼h´MOhjž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´MPhjÚ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´MPhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jõh´MPhjžubj©)�”}”(hŒ)``char *buf`` buffer to copy the line to ”h]”(j¯)�”}”(hŒ ``char *buf``”h]”jS)�”}”(hjh]”hŒ char *buf”…”�”}”(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´MQhjubjÉ)�”}”(hhh]”jM)�”}”(hŒbuffer to copy the line to”h]”hŒbuffer to copy the line to”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j.h´MQhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j.h´MQhjžubj©)�”}”(hŒ+``size_t size`` maximum size of the buffer ”h]”(j¯)�”}”(hŒ``size_t size``”h]”jS)�”}”(hjRh]”hŒ size_t size”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MRhjLubjÉ)�”}”(hhh]”jM)�”}”(hŒmaximum size of the buffer”h]”hŒmaximum size of the buffer”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jgh´MRhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jgh´MRhjžubj©)�”}”(hŒ6``size_t *len_out`` length of line placed into buffer ”h]”(j¯)�”}”(hŒ``size_t *len_out``”h]”jS)�”}”(hj‹h]”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´MShj…ubjÉ)�”}”(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´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Ž)�”}”(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´MUhj‚ubjM)�”}”(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´MThj‚ubjM)�”}”(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´MYhj‚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.”…”�”}”(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éŒ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ûhj7h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M¢ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj7h²hh³jIh´M¢ubhÿ)�”}”(hŒkmsg_dump_rewind”h]”j)�”}”(hŒkmsg_dump_rewind”h]”hŒkmsg_dump_rewind”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjXubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj7h²hh³jIh´M¢ubj4)�”}”(hŒ(struct kmsg_dump_iter *iter)”h]”j:)�”}”(hŒstruct kmsg_dump_iter *iter”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjtubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjtubh)�”}”(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_rewind”†”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Œiter”h]”hŒiter”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjpubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj7h²hh³jIh´M¢ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj3h²hh³jIh´M¢ubah}”(h]”j.ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jIh´M¢hj0h²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&]”uh1j3hj0h²hh³jIh´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¦hjubj¤)�”}”(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´M£hj6ubjÉ)�”}”(hhh]”jM)�”}”(hŒkmsg dump iterator”h]”hŒkmsg dump iterator”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQh´M£hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jQh´M£hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£hjubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjwh]”hŒ Description”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´M¥hjubjM)�”}”(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¤hjubeh}”(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.”…”�”}”(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ŒB**Parameters** ``void`` no arguments **Context** Any context.”h]”(jM)�”}”(hŒ**Parameters**”h]”jŽ)�”}”(hjEh]”hŒ Parameters”…”�”}”(hjGh²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:139: ./kernel/printk/printk.c”h´MÚhj?ubj¤)�”}”(hhh]”j©)�”}”(hŒ``void`` no arguments ”h]”(j¯)�”}”(hŒ``void``”h]”jS)�”}”(hjdh]”hŒvoid”…”�”}”(hjfh²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: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³jyh´Khjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jyh´Khj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j£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´Khj?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´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_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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubah}”(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ûhjubah}”(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Œ6Try to acquire the printk cpu-reentrant spinning lock.”h]”hŒ6Try to acquire the printk cpu-reentrant spinning lock.”…”�”}”(hjKh²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ähjHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÙh²hh³jòh´Mäubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjcjHjcjI‰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Ž)�”}”(hjmh]”hŒ Parameters”…”�”}”(hjoh²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:139: ./kernel/printk/printk.c”h´Mèhjgubj¤)�”}”(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£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³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´KhjgubjM)�”}”(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åhjgubjM)�”}”(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éhjgubjM)�”}”(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ëhjgubjM)�”}”(hŒ **Return**”h]”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íhjgubjM)�”}”(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ìhjgubeh}”(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”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjV h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/basics:139: ./kernel/printk/printk.c”h´MubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjV h²hh³jh h´Mubhÿ)�”}”(hŒ__printk_cpu_sync_put”h]”j)�”}”(hŒ__printk_cpu_sync_put”h]”hŒ__printk_cpu_sync_put”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjw ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjV h²hh³jh 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&]”jjuh1j3hjV h²hh³jh h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjR h²hh³jh h´Mubah}”(h]”jM ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jh h´MhjO 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´Mhj¾ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjO h²hh³jh h´Mubeh}”(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Ž)�”}”(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Œ4The calling processor must be the owner of the lock.”h]”hŒ4The calling processor must be the owner of the lock.”…”�”}”(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´MhjÝ ubjM)�”}”(hŒ **Context**”h]”jŽ)�”}”(hjd h]”hŒContext”…”�”}”(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´MhjÝ ubjM)�”}”(hŒ/Any context. Expects interrupts to be disabled.”h]”hŒ/Any context. Expects interrupts to be disabled.”…”�”}”(hjz 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´M;ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj¥ h²hh³j· h´M;ubhÿ)�”}”(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´M;ubj4)�”}”(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”…”�”}”(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.vpanic”†”asbuh1hhj? ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj? ubj)�”}”(hŒargs”h]”hŒargs”…”�”}”(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&]”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Œ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´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** ``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´M?hjº 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´M<hjÙ 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´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``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´M=hj ubjÉ)�”}”(hhh]”jM)�”}”(hŒArguments for the format string”h]”hŒArguments for the format string”…”�”}”(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³ŒQ/var/lib/git/docbuild/linux/Documentation/driver-api/basics:143: ./kernel/panic.c”h´M?hjº ubjM)�”}”(hŒFDisplay a message, then perform cleanups. This function never returns.”h]”hŒFDisplay a message, then perform cleanups. This function never returns.”…”�”}”(hji 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>hjº 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Œ ”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj ubj)�”}”(hŒ lockdep_ok”h]”hŒ lockdep_ok”…”�”}”(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´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.”…”�”}”(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´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 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 **lockdebug_ok** = false, but for some notewortht-but-not-corrupting cases, it can be set 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³Œ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Ž)�”}”(hj5h]”hŒ Description”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3ubah}”(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 **lockdebug_ok** = false, but for some notewortht-but-not-corrupting cases, it can be set to true.”h]”(hŒ/If something bad has gone wrong, you’ll want ”…”�”}”(hjKh²hh³Nh´NubjŽ)�”}”(hŒ**lockdebug_ok**”h]”hŒ lockdebug_ok”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjKubhŒR = false, but for some notewortht-but-not-corrupting cases, it can be set to true.”…”�”}”(hjKh²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”…”�”}”(hj~h²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éŒ __devres_alloc_node (C function)”Œc.__devres_alloc_node”hNt”auh1hÜhj{h²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”…”�”}”(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&]”uh1jhj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j>Œmodname”NŒ classname”Njwjz)�”}”j}]”jŒc.__devres_alloc_node”†”asbuh1hhj5ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj5ubj)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5ubeh}”(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_alloc_node”†”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ç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”…”�”}”(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”)�”}”(hj—h]”hŒ*”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjúubj)�”}”(hŒname”h]”hŒname”…”�”}”(hjBh²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”…”�”}”(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&]”jFjAjGj„jHj„jI‰jJ‰jK‰uh1híh²hhj{h³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”…”�”}”(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´K­hjubjÉ)�”}”(hhh]”jM)�”}”(hŒAllocation flags”h]”hŒAllocation flags”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4h´K­hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4h´K­hj¤ubj©)�”}”(hŒ``int nid`` NUMA node ”h]”(j¯)�”}”(hŒ ``int nid``”h]”jS)�”}”(hjXh]”hŒint nid”…”�”}”(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´K®hjRubjÉ)�”}”(hhh]”jM)�”}”(hŒ NUMA node”h]”hŒ NUMA node”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jmh´K®hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmh´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¯hj‹ubjÉ)�”}”(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È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³Œ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Ž)�”}”(hjh]”hŒReturn”…”�”}”(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´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ƒhj{h²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Ühj{h²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”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjXh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÆubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjXh²hh³jjh´KÆubhÿ)�”}”(hŒdevres_for_each_res”h]”j)�”}”(hŒdevres_for_each_res”h]”hŒdevres_for_each_res”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjXh²hh³jjh´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€)�”}”jsjsbŒ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”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(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”…”�”}”(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ÓŒc.devres_for_each_res”†”asbuh1hhjOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjOubj)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOubeh}”(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Œ*”…”�”}”(hjh²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Œ)”…”�”}”(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Œ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjÙubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(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ÓŒc.devres_for_each_res”†”asbuh1hhjÙubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjwh²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”)�”}”(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”…”�”}”(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Œ*”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj‘ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hjXh²hh³jjh´KÆubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjTh²hh³jjh´KÆubah}”(h]”jOah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jjh´KÆhjQh²hubj4)�”}”(hhh]”jM)�”}”(hŒResource iterator”h]”hŒResource iterator”…”�”}”(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ÆhjXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjQh²hh³jjh´KÆubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjsjHjsjI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hj}h]”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´KÊhjwubj¤)�”}”(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&]”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ŒMatch function (optional)”h]”hŒMatch function (optional)”…”�”}”(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“ubj©)�”}”(hŒ1``void *match_data`` Data for the match function ”h]”(j¯)�”}”(hŒ``void *match_data``”h]”jS)�”}”(hjGh]”hŒvoid *match_data”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´KÊhjAubjÉ)�”}”(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´KÊhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j\h´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)�”}”(hj€h]”hŒ+void (*fn)(struct device *, void *, 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´KËhjzubjÉ)�”}”(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Èhjzubeh}”(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£hjwubjM)�”}”(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´KÎhjwubjM)�”}”(hŒnCall **fn** for each devres of **dev** which is associated with **release** and for which **match** returns 1.”h]”(hŒCall ”…”�”}”(hj*h²hh³Nh´NubjŽ)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*ubhŒ for each devres of ”…”�”}”(hj*h²hh³Nh´NubjŽ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*ubhŒ which is associated with ”…”�”}”(hj*h²hh³Nh´NubjŽ)�”}”(hŒ **release**”h]”hŒrelease”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*ubhŒ and for which ”…”�”}”(hj*h²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*ubhŒ returns 1.”…”�”}”(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ÍhjwubjM)�”}”(hŒ **Return**”h]”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ÐhjwubjM)�”}”(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Ñhjwubeh}”(h]”h ]”Œ kernelindent”a•h"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_free (C function)”Œ c.devres_free”hNt”auh1hÜhj{h²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”…”�”}”(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Œ*”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjubj)�”}”(hŒres”h]”hŒres”…”�”}”(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´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”…”�”}”(hjXh²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õhjUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj½h²hh³jÖh´Kõubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjpjHjpjI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hjzh]”hŒ Parameters”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´Kùhjtubj¤)�”}”(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£hjtubjM)�”}”(hŒ**Description**”h]”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øhjtubjM)�”}”(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÷hjtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_add (C function)”Œ c.devres_add”hNt”auh1hÜhj{h²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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjh²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&]”uh1jPhjh²hh³j'h´M ubhÿ)�”}”(hŒ devres_add”h]”j)�”}”(hŒ devres_add”h]”hŒ devres_add”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjh²hh³j'h´M ubj4)�”}”(hŒ(struct device *dev, void *res)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjRubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjRubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jvŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj<sbŒ c.devres_add”†”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)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjNubj:)�”}”(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”ˆ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Œ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 hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjh²hh³j'h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj3jHj3jI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(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´Mhj7ubj¤)�”}”(hhh]”(j©)�”}”(hŒ1``struct device *dev`` Device to add resource 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&]”uh1jRhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MhjVubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to add resource to”h]”hŒDevice to add resource to”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jqh´Mhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jqh´MhjSubj©)�”}”(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´MhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj7ubjM)�”}”(hŒ**Description**”h]”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´Mhj7ubjM)�”}”(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”…”�”}”(hjh²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´Mhj7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_find (C function)”Œ c.devres_find”hNt”auh1hÜhj{h²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”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjGh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGh²hh³jYh´M2ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjGh²hh³jYh´M2ubhÿ)�”}”(hŒ devres_find”h]”j)�”}”(hŒ devres_find”h]”hŒ devres_find”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjGh²hh³jYh´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€)�”}”jsj{sbŒ 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&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”jÏŒ c.devres_find”†”asbuh1hhjubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubeh}”(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”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jTŒmodname”NŒ classname”Njwjz)�”}”j}]”jÏŒ c.devres_find”†”asbuh1hhjKubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjKubj)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKubeh}”(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&]”jjuh1j3hjGh²hh³jYh´M2ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjCh²hh³jYh´M2ubah}”(h]”j>ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jYh´M2hj@h²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&]”uh1j3hj@h²hh³jYh´M2ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjjHjjI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hj h]”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´M6hjubj¤)�”}”(hhh]”(j©)�”}”(hŒ6``struct device *dev`` Device to lookup 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´M3hj%ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to lookup resource from”h]”hŒDevice to lookup resource from”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@h´M3hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j@h´M3hj"ubj©)�”}”(hŒR``dr_release_t release`` Look for resources associated with this release function ”h]”(j¯)�”}”(hŒ``dr_release_t release``”h]”jS)�”}”(hjdh]”hŒdr_release_t release”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M4hj^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³jyh´M4hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jyh´M4hj"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´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´M5hj"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´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´M6hj"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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M8hjubjM)�”}”(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 ”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ which is associated with ”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ **release**”h]”hŒrelease”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ and for which ”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ returns 1. If ”…”�”}”(hj'h²hh³Nh´NubjŽ)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'ubhŒ) is NULL, it’s considered to match all.”…”�”}”(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´M7hjubjM)�”}”(hŒ **Return**”h]”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;hjubjM)�”}”(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<hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_get (C function)”Œ c.devres_get”hNt”auh1hÜhj{h²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&]”uh1jhj*ubah}”(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Œ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”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”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubj:)�”}”(hŒ void *new_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Œnew_res”h]”hŒnew_res”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjubj:)�”}”(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}]”jIŒ 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”ˆjjuh1j9hjubj:)�”}”(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”…”�”}”(hj4 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´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”…”�”}”(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´MNhj[ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjºh²hh³jÓh´MNubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjv jHjv jI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(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´MRhjz 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)�”}”(hjJ!h]”hŒvoid *match_data”…”�”}”(hjL!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjH!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MRhjD!ubjÉ)�”}”(hhh]”jM)�”}”(hŒData for the match function”h]”hŒData for the match function”…”�”}”(hjc!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j_!h´MRhj`!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjD!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j_!h´MRhj– 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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MThjz ubjM)�”}”(hŒÃ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.”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Œ( which has the same release function as ”…”�”}”(hj›!h²hh³Nh´NubjŽ)�”}”(hŒ **new_res**”h]”hŒnew_res”…”�”}”(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Œ return 1. If found, ”…”�”}”(hj›!h²hh³Nh´NubjŽ)�”}”(hŒ **new_res**”h]”hŒnew_res”…”�”}”(hjÙ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›!ubhŒ is freed; otherwise, ”…”�”}”(hj›!h²hh³Nh´NubjŽ)�”}”(hŒ **new_res**”h]”hŒnew_res”…”�”}”(hjë!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj›!ubhŒ is added atomically.”…”�”}”(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´MShjz ubjM)�”}”(hŒ **Return**”h]”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´MWhjz ubjM)�”}”(hŒ!Pointer to found or added devres.”h]”hŒ!Pointer to found or added devres.”…”�”}”(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´MXhjz ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_remove (C function)”Œc.devres_remove”hNt”auh1hÜhj{h²hh³Nh´Nubhî)�”}”(hhh]”(hó)�”}”(hŒcvoid * devres_remove (struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”hù)�”}”(hŒavoid *devres_remove(struct device *dev, dr_release_t release, dr_match_t match, void *match_data)”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjK"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjG"h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.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”)�”}”(hj—h]”hŒ*”…”�”}”(hjh"h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjG"h²hh³jY"h´M�ubhÿ)�”}”(hŒ devres_remove”h]”j)�”}”(hŒ devres_remove”h]”hŒ devres_remove”…”�”}”(hjy"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhju"ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjG"h²hh³jY"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_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”…”�”}”(hj6#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”…”�”}”(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.devres_remove”†”asbuh1hhjK#ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp#h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjK#ubj)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hj~#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK#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&]”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Œ$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&]”uh1j3hj@"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** ``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”…”�”}”(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ŒR``dr_release_t release`` Look for resources associated with this release function ”h]”(j¯)�”}”(hŒ``dr_release_t release``”h]”jS)�”}”(hjd$h]”hŒdr_release_t release”…”�”}”(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Œ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³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Œ/``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”…”�”}”(hjA%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”…”�”}”(hjS%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”…”�”}”(hje%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Ž)�”}”(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Œ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ƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_destroy (C function)”Œc.devres_destroy”hNt”auh1hÜhj{h²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Œ ”…”�”}”(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Œdr_release_t release”h]”(h)�”}”(hhh]”j)�”}”(hŒ dr_release_t”h]”hŒ dr_release_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.devres_destroy”†”asbuh1hhjp&ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•&h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjp&ubj)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hj£&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjp&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}]”j<&Œ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”…”�”}”(hjW'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¡hjT'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjº%h²hh³jÓ%h´M¡ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjo'jHjo'jI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hjy'h]”hŒ Parameters”…”�”}”(hj{'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¥hjs'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)�”}”(hjC(h]”hŒvoid *match_data”…”�”}”(hjE(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjA(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³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£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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M§hjs'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¦hjs'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ª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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M®hjs'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¯hjs'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_release (C function)”Œc.devres_release”hNt”auh1hÜhj{h²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”…”�”}”(hjA)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Œ ”…”�”}”(hjP)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj=)h²hh³jO)h´MÂubhÿ)�”}”(hŒdevres_release”h]”j)�”}”(hŒdevres_release”h]”hŒdevres_release”…”�”}”(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Œ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>hjz)ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹)h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjz)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€)�”}”jsjd)sbŒc.devres_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)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj×)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjz)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjv)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”ˆjjuh1j9hjv)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&]”uh1jhj8*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j=*Œmodname”NŒ classname”Njwjz)�”}”j}]”j¸)Œc.devres_release”†”asbuh1hhj4*ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY*h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj4*ubj)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hjg*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjv)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”ˆjjuh1j9hjv)ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj=)h²hh³jO)h´MÂubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj9)h²hh³jO)h´MÂubah}”(h]”j4)ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jO)h´MÂhj6)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&]”uh1j3hj6)h²hh³jO)h´MÂubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjë*jHjë*jI‰jJ‰jK‰uh1híh²hhj{h³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)�”}”(hjM+h]”hŒdr_release_t release”…”�”}”(hjO+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjK+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ÄhjG+ubjÉ)�”}”(hhh]”jM)�”}”(hŒ8Look for resources associated with this release function”h]”hŒ8Look for resources associated with this release function”…”�”}”(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 +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, 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”…”�”}”(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”…”�”}”(hjN,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Ž)�”}”(hji,h]”hŒReturn”…”�”}”(hjk,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjg,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.”…”�”}”(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ƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_open_group (C function)”Œc.devres_open_group”hNt”auh1hÜhj{h²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Œ ”…”�”}”(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Œdev”h]”hŒdev”…”�”}”(hjQ-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”…”�”}”(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Œ*”…”�”}”(hj†-h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjf-ubj)�”}”(hŒid”h]”hŒid”…”�”}”(hj“-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjf-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}]”j2-Œ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²hhj{h³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.”•Rh]”(jM)�”}”(hŒ**Parameters**”h]”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)�”}”(hjF.h]”hŒstruct device *dev”…”�”}”(hjH.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjD.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MMhj@.ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to open devres group for”h]”hŒDevice to open devres group for”…”�”}”(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Œ``void *id`` Separator ID ”h]”(j¯)�”}”(hŒ ``void *id``”h]”jS)�”}”(hj.h]”hŒvoid *id”…”�”}”(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´MNhjy.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Èhjy.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j”.h´MNhj=.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´MOhj=.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”…”�”}”(hj5/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”…”�”}”(hjG/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Ž)�”}”(hjb/h]”hŒReturn”…”�”}”(hjd/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´MThj!.ubjM)�”}”(hŒ%ID of the new group, NULL on failure.”h]”hŒ%ID of the new group, NULL on failure.”…”�”}”(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´MUhj!.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevres_close_group (C function)”Œc.devres_close_group”hNt”auh1hÜhj{h²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”…”�”}”(hj0h²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€)�”}”jsjÊ/sbŒc.devres_close_group”†”asbuh1hhjà/ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjà/ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj00h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjà/ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj=0h²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”…”�”}”(hjV0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjR0ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd0h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjR0ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjr0h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjR0ubj)�”}”(hŒid”h]”hŒid”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjR0ubeh}”(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²hhj{h³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”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÿ0h´MŠhj1ubah}”(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)�”}”(hj#1h]”hŒvoid *id”…”�”}”(hj%1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj!1ubah}”(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”…”�”}”(hj<1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j81h´M‹hj91ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j81h´M‹hjá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³Œ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 ”…”�”}”(hjt1h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj|1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt1ubhŒ. If ”…”�”}”(hjt1h²hh³Nh´NubjŽ)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjŽ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjt1ubhŒ, is NULL, the latest open group is selected.”…”�”}”(hjt1h²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ƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ devres_remove_group (C function)”Œc.devres_remove_group”hNt”auh1hÜhj{h²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”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj2ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj"2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j$2Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjê1sbŒc.devres_remove_group”†”asbuh1hhj2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj2ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjP2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj2ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj]2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjü1ubj:)�”}”(hŒvoid *id”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjv2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjr2ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„2h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjr2ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj’2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjr2ubj)�”}”(hŒid”h]”hŒid”…”�”}”(hjŸ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr2ubeh}”(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²hhj{h³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 3h]”hŒstruct device *dev”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MŸhj3ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to remove group for”h]”hŒDevice to remove group for”…”�”}”(hj#3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j3h´MŸhj 3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j3h´MŸhj3ubj©)�”}”(hŒ-``void *id`` ID of target group, can be NULL ”h]”(j¯)�”}”(hŒ ``void *id``”h]”jS)�”}”(hjC3h]”hŒvoid *id”…”�”}”(hjE3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjA3ubah}”(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=3ubjÉ)�”}”(hhh]”jM)�”}”(hŒID of target group, can be NULL”h]”hŒID of target group, can be NULL”…”�”}”(hj\3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jX3h´M hjY3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj=3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jX3h´M hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjå2ubjM)�”}”(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³Œ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ƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ!devres_release_group (C function)”Œc.devres_release_group”hNt”auh1hÜhj{h²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”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj4ubah}”(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”…”�”}”(hj$4h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj 4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj14h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj 4ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjB4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj?4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jD4Œmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsj 4sbŒc.devres_release_group”†”asbuh1hhj 4ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb4h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj 4ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjp4h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj 4ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj}4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj 4ubeh}”(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&]”jFjAjGj5jHj5jI‰jJ‰jK‰uh1híh²hhj{h³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 5h]”hŒ Parameters”…”�”}”(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Àhj5ubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``struct device *dev`` Device to release group for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj*5h]”hŒstruct device *dev”…”�”}”(hj,5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj(5ubah}”(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$5ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to release group for”h]”hŒDevice to release group for”…”�”}”(hjC5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j?5h´M½hj@5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj$5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j?5h´M½hj!5ubj©)�”}”(hŒ-``void *id`` ID of target group, can be NULL ”h]”(j¯)�”}”(hŒ ``void *id``”h]”jS)�”}”(hjc5h]”hŒvoid *id”…”�”}”(hje5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhja5ubah}”(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]5ubjÉ)�”}”(hhh]”jM)�”}”(hŒID of target group, can be NULL”h]”hŒID of target group, can be NULL”…”�”}”(hj|5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jx5h´M¾hjy5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj]5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jx5h´M¾hj!5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj5ubjM)�”}”(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Àhj5ubjM)�”}”(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¿hj5ubjM)�”}”(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Ãhj5ubjM)�”}”(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Ähj5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ__devm_add_action (C function)”Œc.__devm_add_action”hNt”auh1hÜhj{h²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ûhj*6h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj*6h²hh³j<6h´M ubhÿ)�”}”(hŒ__devm_add_action”h]”j)�”}”(hŒ__devm_add_action”h]”hŒ__devm_add_action”…”�”}”(hjO6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjK6ubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj*6h²hh³j<6h´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”…”�”}”(hjk6h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjg6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjg6ubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(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€)�”}”jsjQ6sbŒc.__devm_add_action”†”asbuh1hhjg6ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©6h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjg6ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj·6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjg6ubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÄ6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjg6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjc6ubj:)�”}”(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Œ*”…”�”}”(hj7h²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Œ)”…”�”}”(hj!7h²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Œ*”…”�”}”(hjI7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÙ6ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjV7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjÙ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjc6ubj:)�”}”(hŒ void *data”h]”(jü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjn7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjj7ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|7h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjj7ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjŠ7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjj7ubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj—7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjj7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjc6ubj:)�”}”(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”ˆjjuh1j9hjc6ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj*6h²hh³j<6h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj&6h²hh³j<6h´M ubah}”(h]”j!6ah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j<6h´M hj#6h²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&]”uh1j3hj#6h²hh³j<6h´M ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj68jHj68jI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hj@8h]”hŒ Parameters”…”�”}”(hjB8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>8ubah}”(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)�”}”(hj_8h]”hŒstruct device *dev”…”�”}”(hja8h²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´MhjY8ubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice that owns the action”h]”hŒDevice that owns the action”…”�”}”(hjx8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jt8h´Mhju8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjY8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jt8h´MhjV8ubj©)�”}”(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´MhjV8ubj©)�”}”(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´MhjV8ubj©)�”}”(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´Mhj9ubjÉ)�”}”(hhh]”jM)�”}”(hŒ-Name of the resource (for debugging purposes)”h]”hŒ-Name of the resource (for debugging purposes)”…”�”}”(hj59h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j19h´Mhj29ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j19h´MhjV8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj:8ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjW9h]”hŒ Description”…”�”}”(hjY9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjU9ubah}”(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.”…”�”}”(hjm9h²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ƒhj{h²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Ühj{h²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”…”�”}”(hj2: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”…”�”}”(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”)�”}”(hjsh]”hŒ(”…”�”}”(hjg:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjG:ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjt:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjG:ubj)�”}”(hŒaction”h]”hŒaction”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjG:ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjG:ubj”)�”}”(hjsh]”hŒ(”…”�”}”(hjœ:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjG:ubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj©:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjG:ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj·:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjG:ubj”)�”}”(hjÁh]”hŒ)”…”�”}”(hjÄ:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjG: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&]”jFjAjGjG;jHjG;jI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hjQ;h]”hŒ Parameters”…”�”}”(hjS;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjO;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M^hjK;ubj¤)�”}”(hhh]”(j©)�”}”(hŒ3``struct device *dev`` Device that owns the action ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjp;h]”hŒstruct device *dev”…”�”}”(hjr;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjn;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[hjj;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´M[hj†;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j…;h´M[hjg;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\hjg;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]hjg;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjK;ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj/<h]”hŒ Description”…”�”}”(hj1<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_hjK;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 ”…”�”}”(hjE<h²hh³Nh´NubjŽ)�”}”(hŒ **action**”h]”hŒaction”…”�”}”(hjM<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjE<ubhŒf previously added by devm_add_action(). Both action and data should match one of the existing entries.”…”�”}”(hjE<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^hjK;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.”…”�”}”(hjf<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´MahjK;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.”…”�”}”(hju<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´MdhjK;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.”…”�”}”(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´MghjK;ubjM)�”}”(hŒ **Return**”h]”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´MjhjK;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´MkhjK;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ devm_release_action (C function)”Œc.devm_release_action”hNt”auh1hÜhj{h²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”…”�”}”(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.devm_release_action”†”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)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjp=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û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Œaction”h]”hŒaction”…”�”}”(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…=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Œ*”…”�”}”(hj6>h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj>ubj)�”}”(hŒdata”h]”hŒdata”…”�”}”(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Œ&release previously added custom action”h]”hŒ&release previously added custom action”…”�”}”(hjm>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~hjj>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** ``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 ”…”�”}”(hj9?h²hh³Nh´NubjŽ)�”}”(hŒ **action**”h]”hŒaction”…”�”}”(hjA?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9?ubhŒ implementation”…”�”}”(hj9?h²hh³Nh´Nubeh}”(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Ž)�”}”(hjm?h]”hŒ Description”…”�”}”(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ƒ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 ”…”�”}”(hjƒ?h²hh³Nh´NubjŽ)�”}”(hŒ **action**”h]”hŒaction”…”�”}”(hj‹?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒ?ubhŒg previously added by devm_add_action(). Both action and data should match one of the existing entries.”…”�”}”(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ƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kmalloc (C function)”Œc.devm_kmalloc”hNt”auh1hÜhj{h²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Œ ”…”�”}”(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Œdev”h]”hŒdev”…”�”}”(hjg@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}]”jH@Œc.devm_kmalloc”†”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Œ 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}]”jH@Œ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”…”�”}”(hj!Ah²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&]”jFjAjGj9AjHj9AjI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hjCAh]”hŒ Parameters”…”�”}”(hjEAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAAubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M§hj=Aubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device to allocate memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjbAh]”hŒstruct device *dev”…”�”}”(hjdAh²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ŒDevice to allocate memory for”h]”hŒDevice to allocate memory for”…”�”}”(hj{Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jwAh´M¤hjxAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj\Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jwAh´M¤hjYAubj©)�”}”(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¥hjYAubj©)�”}”(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¦hjYAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj=AubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjBh]”hŒ Description”…”�”}”(hjBh²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¨hj=AubjM)�”}”(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.”…”�”}”(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§hj=AubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj6Bh]”hŒReturn”…”�”}”(hj8Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M«hj=AubjM)�”}”(hŒ8Pointer to allocated memory on success, NULL on failure.”h]”hŒ8Pointer to allocated memory on success, NULL on failure.”…”�”}”(hjLBh²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=Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_krealloc (C function)”Œc.devm_krealloc”hNt”auh1hÜhj{h²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”…”�”}”(hj{Bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjwBh²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&]”uh1jPhjwBh²hh³j‰Bh´MÆubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj˜Bh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjwBh²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þhjwBh²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Œ ”…”�”}”(hjCh²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”…”�”}”(hj7Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj3CubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjECh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj3Cubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjSCh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj3Cubj)�”}”(hŒptr”h]”hŒptr”…”�”}”(hj`Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj½Bubj:)�”}”(hŒsize_t new_size”h]”(h)�”}”(hhh]”j)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj|Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjyCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j~CŒmodname”NŒ classname”Njwjz)�”}”j}]”jÿBŒc.devm_krealloc”†”asbuh1hhjuCubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšCh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjuCubj)�”}”(hŒnew_size”h]”hŒnew_size”…”�”}”(hj¨Ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuCubeh}”(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&]”jjuh1j3hjwBh²hh³j‰Bh´MÆubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjsBh²hh³j‰Bh´MÆubah}”(h]”jnBah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j‰Bh´MÆhjpBh²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ÆhjDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjpBh²hh³j‰Bh´MÆubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj2DjHj2DjI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hjDh²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Êhj6Dubj¤)�”}”(hhh]”(j©)�”}”(hŒ8``struct device *dev`` Device to re-allocate memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hj[Dh]”hŒstruct device *dev”…”�”}”(hj]Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjYDubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÇhjUDubjÉ)�”}”(hhh]”jM)�”}”(hŒ Device to re-allocate memory for”h]”hŒ Device to re-allocate memory for”…”�”}”(hjtDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jpDh´MÇhjqDubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjUDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jpDh´MÇhjRDubj©)�”}”(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ÈhjRDubj©)�”}”(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ÉhjRDubj©)�”}”(hŒ#``gfp_t gfp`` Allocation gfp flags ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjEh]”hŒ gfp_t gfp”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÊhjEubjÉ)�”}”(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ÈhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jEh´MÊhjRDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj6DubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjAEh]”hŒ Description”…”�”}”(hjCEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj?Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÌhj6DubjM)�”}”(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 ”…”�”}”(hjWEh²hh³Nh´NubjŽ)�”}”(hŒ**ptr**”h]”hŒptr”…”�”}”(hj_Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjWEubhX½ 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.”…”�”}”(hjWEh²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Ëhj6Dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kstrdup (C function)”Œc.devm_kstrdup”hNt”auh1hÜhj{h²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”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjýEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jFŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÈEsbŒc.devm_kstrdup”†”asbuh1hhjÞEubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Fh²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”…”�”}”(hjTFh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjPFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaFh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPFubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjoFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjPFubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Fh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjPFubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj‹Fh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjPFubj)�”}”(hŒs”h]”hŒs”…”�”}”(hj˜Fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjPFubeh}”(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]”j‹Eah ]”(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 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´M,hjGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj�Eh²hh³j¦Eh´M,ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj"GjHj"GjI‰jJ‰jK‰uh1híh²hhj{h³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�hj*Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M0hj&Gubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device to allocate memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hjKGh]”hŒstruct device *dev”…”�”}”(hjMGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjIGubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M.hjEGubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to allocate memory for”h]”hŒDevice to allocate memory for”…”�”}”(hjdGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`Gh´M.hjaGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjEGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j`Gh´M.hjBGubj©)�”}”(hŒ*``const char *s`` the string to duplicate ”h]”(j¯)�”}”(hŒ``const char *s``”h]”jS)�”}”(hj„Gh]”hŒ const char *s”…”�”}”(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´M/hj~GubjÉ)�”}”(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Èhj~Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j™Gh´M/hjBGubj©)�”}”(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´M1hjBGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj&GubjM)�”}”(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´M3hj&GubjM)�”}”(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´M2hj&Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kstrdup_const (C function)”Œc.devm_kstrdup_const”hNt”auh1hÜhj{h²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”…”�”}”(hj>Hh²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Œ ”…”�”}”(hjLHh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:Hh²hh³jKHh´M?ubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjZHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj:Hh²hh³jKHh´M?ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhHh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj:Hh²hh³jKHh´M?ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjvHh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj:Hh²hh³jKHh´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&]”uh1jhjƒHubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj:Hh²hh³jKHh´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”…”�”}”(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Œchar”h]”hŒchar”…”�”}”(hj0Ih²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Œ*”…”�”}”(hjLIh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjIubj)�”}”(hjšFh]”hŒs”…”�”}”(hjYIh²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”…”�”}”(hjtIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jvIŒmodname”NŒ classname”Njwjz)�”}”j}]”jÝHŒc.devm_kstrdup_const”†”asbuh1hhjmIubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Ih²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmIubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj›Hubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj:Hh²hh³jKHh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj6Hh²hh³jKHh´M?ubah}”(h]”j1Hah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jKHh´M?hj3Hh²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&]”uh1j3hj3Hh²hh³jKHh´M?ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjâIjHjâIjI‰jJ‰jK‰uh1híh²hhj{h³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 Jh]”hŒstruct device *dev”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M@hjJubjÉ)�”}”(hhh]”jM)�”}”(hŒ(device for which to duplicate the string”h]”hŒ(device for which to duplicate the string”…”�”}”(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@hjJubj©)�”}”(hŒ*``const char *s`` the string to duplicate ”h]”(j¯)�”}”(hŒ``const char *s``”h]”jS)�”}”(hjDJh]”hŒ const char *s”…”�”}”(hjFJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjBJubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MAhj>JubjÉ)�”}”(hhh]”jM)�”}”(hŒthe string to duplicate”h]”hŒthe string to duplicate”…”�”}”(hj]Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jYJh´MAhjZJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj>Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jYJh´MAhjJubj©)�”}”(hŒM``gfp_t gfp`` the GFP mask used in the kmalloc() call when allocating memory ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hj}Jh]”hŒ gfp_t gfp”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj{Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MBhjwJubjÉ)�”}”(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ÈhjwJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j’Jh´MBhjJubeh}”(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ƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kvasprintf (C function)”Œc.devm_kvasprintf”hNt”auh1hÜhj{h²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”…”�”}”(hj$Kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj Kh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MUubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj Kh²hh³j2Kh´MUubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjAKh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hj Kh²hh³j2Kh´MUubhÿ)�”}”(hŒdevm_kvasprintf”h]”j)�”}”(hŒdevm_kvasprintf”h]”hŒdevm_kvasprintf”…”�”}”(hjRKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjNKubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj Kh²hh³j2Kh´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”…”�”}”(hjnKh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjjKubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjjKubh)�”}”(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€)�”}”jsjTKsbŒc.devm_kvasprintf”†”asbuh1hhjjKubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Kh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjjKubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjºKh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjjKubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÇKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjjKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjfKubj:)�”}”(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Œ ”…”�”}”(hjLh²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”ˆjjuh1j9hjfKubj:)�”}”(hŒconst char *fmt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hj(Lh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj$LubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Lh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj$Lubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjCLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj$LubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQLh²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)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hjlLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjfKubj:)�”}”(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&]”uh1jhj…Lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jŠLŒmodname”NŒ classname”Njwjz)�”}”j}]”j¨KŒc.devm_kvasprintf”†”asbuh1hhj�LubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Lh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj�Lubj)�”}”(hŒap”h]”hŒap”…”�”}”(hj´Lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj�Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjfKubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj Kh²hh³j2Kh´MUubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjKh²hh³j2Kh´MUubah}”(h]”jKah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³j2Kh´MUhjKh²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&]”uh1j3hjKh²hh³j2Kh´MUubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjöLjHjöLjI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hjMh]”hŒ Parameters”…”�”}”(hjMh²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”…”�”}”(hj!Mh²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´MWhjMubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice to allocate memory for”h]”hŒDevice to allocate memory for”…”�”}”(hj8Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4Mh´MWhj5Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j4Mh´MWhjMubj©)�”}”(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)�”}”(hjXMh]”hŒ gfp_t gfp”…”�”}”(hjZMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjVMubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MYhjRMubjÉ)�”}”(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”…”�”}”(hjqMh²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´MXhjnMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjRMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jmMh´MYhjMubj©)�”}”(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´MZhjMubj©)�”}”(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[hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjúLubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjNh]”hŒReturn”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNubah}”(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ƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kasprintf (C function)”Œc.devm_kasprintf”hNt”auh1hÜhj{h²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”…”�”}”(hjKNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjGNh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MuubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZNh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjGNh²hh³jYNh´Muubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjhNh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjGNh²hh³jYNh´Muubhÿ)�”}”(hŒdevm_kasprintf”h]”j)�”}”(hŒdevm_kasprintf”h]”hŒdevm_kasprintf”…”�”}”(hjyNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjuNubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjGNh²hh³jYNh´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€)�”}”jsj{NsbŒ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 Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j OŒmodname”NŒ classname”Njwjz)�”}”j}]”jÏNŒc.devm_kasprintf”†”asbuh1hhjOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Oh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjOubj)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj6Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hj�Nubj:)�”}”(hŒconst char *fmt”h]”(j?)�”}”(hjë h]”hŒconst”…”�”}”(hjOOh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjKOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Oh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjKOubjü)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjjOh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjKOubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxOh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjKOubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj†Oh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjKOubj)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj“Oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjKOubeh}”(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&]”jjuh1j3hjGNh²hh³jYNh´Muubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjCNh²hh³jYNh´Muubah}”(h]”j>Nah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jYNh´Muhj@Nh²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&]”uh1j3hj@Nh²hh³jYNh´Muubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjíOjHjíOjI‰jJ‰jK‰uh1híh²hhj{h³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)�”}”(hjPh]”hŒstruct device *dev”…”�”}”(hjPh²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³j+Ph´Mwhj,Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j+Ph´Mwhj Pubj©)�”}”(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)�”}”(hjOPh]”hŒ gfp_t gfp”…”�”}”(hjQPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjMPubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MyhjIPubjÉ)�”}”(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”…”�”}”(hjhPh²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´MxhjePubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjIPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jdPh´Myhj Pubj©)�”}”(hŒ5``const char *fmt`` The printf()-style format string ”h]”(j¯)�”}”(hŒ``const char *fmt``”h]”jS)�”}”(hj‰Ph]”hŒconst char *fmt”…”�”}”(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´MzhjƒPubjÉ)�”}”(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ÈhjƒPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jžPh´Mzhj Pubj©)�”}”(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{hj Pubeh}”(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ƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kfree (C function)”Œ c.devm_kfree”hNt”auh1hÜhj{h²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”…”�”}”(hjBQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj>Qh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M�ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQQh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj>Qh²hh³jPQh´M�ubhÿ)�”}”(hŒ devm_kfree”h]”j)�”}”(hŒ devm_kfree”h]”hŒ devm_kfree”…”�”}”(hjcQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj_Qubah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhj>Qh²hh³jPQh´M�ubj4)�”}”(hŒ#(struct device *dev, const void *p)”h]”(j:)�”}”(hŒstruct device *dev”h]”(j?)�”}”(hjBh]”hŒstruct”…”�”}”(hjQh²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{Qubh)�”}”(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€)�”}”jsjeQsbŒ c.devm_kfree”†”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)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjØQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj{Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjwQubj:)�”}”(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”…”�”}”(hj Rh²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Œ*”…”�”}”(hj(Rh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjíQubj)�”}”(hj h]”hŒp”…”�”}”(hj5Rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjíQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j9hjwQubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j3hj>Qh²hh³jPQh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hj:Qh²hh³jPQh´M�ubah}”(h]”j5Qah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jPQh´M�hj7Qh²hubj4)�”}”(hhh]”jM)�”}”(hŒResource-managed kfree”h]”hŒResource-managed kfree”…”�”}”(hj^Rh²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[Rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj7Qh²hh³jPQh´M�ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjvRjHjvRjI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hj€Rh]”hŒ Parameters”…”�”}”(hj‚Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M‘hjzRubj¤)�”}”(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£hjzRubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjSh]”hŒ Description”…”�”}”(hjSh²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‘hjzRubjM)�”}”(hŒ*Free memory allocated with devm_kmalloc().”h]”hŒ*Free memory allocated with devm_kmalloc().”…”�”}”(hj)Sh²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�hjzRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kmemdup (C function)”Œc.devm_kmemdup”hNt”auh1hÜhj{h²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”…”�”}”(hjXSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjTSh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¥ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgSh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjTSh²hh³jfSh´M¥ubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjuSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjTSh²hh³jfSh´M¥ubhÿ)�”}”(hŒ devm_kmemdup”h]”j)�”}”(hŒ devm_kmemdup”h]”hŒ devm_kmemdup”…”�”}”(hj†Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚Subah}”(h]”h ]”(jjeh"]”h$]”h&]”jjuh1hþhjTSh²hh³jfSh´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Œ ”…”�”}”(hj!Th²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Œ ”…”�”}”(hj=Th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjTubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjKTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjTubj)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjXTh²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”…”�”}”(hjtTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjqTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jvTŒmodname”NŒ classname”Njwjz)�”}”j}]”jÜSŒc.devm_kmemdup”†”asbuh1hhjmTubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Th²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjmTubj)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjmTubeh}”(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&]”jjuh1j3hjTSh²hh³jfSh´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”jjj%ˆuh1høj&j'hjPSh²hh³jfSh´M¥ubah}”(h]”jKSah ]”(j+j,eh"]”h$]”h&]”j0ˆj1)j2huh1hòh³jfSh´M¥hjMSh²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&]”uh1j3hjMSh²hh³jfSh´M¥ubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGj*UjHj*UjI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hj4Uh]”hŒ Parameters”…”�”}”(hj6Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2Uubah}”(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)�”}”(hjSUh]”hŒstruct device *dev”…”�”}”(hjUUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjQUubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¦hjMUubjÉ)�”}”(hhh]”jM)�”}”(hŒDevice this memory belongs to”h]”hŒDevice this memory belongs to”…”�”}”(hjlUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jhUh´M¦hjiUubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjMUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jhUh´M¦hjJUubj©)�”}”(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§hj†UubjÉ)�”}”(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Èhj†Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³j¡Uh´M§hjJUubj©)�”}”(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¨hjJUubj©)�”}”(hŒ``gfp_t gfp`` GFP mask to use ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hjþUh]”hŒ gfp_t gfp”…”�”}”(hjVh²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”…”�”}”(hjVh²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©hjJUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj.UubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hj9Vh]”hŒ Description”…”�”}”(hj;Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7Vubah}”(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”…”�”}”(hjOVh²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ƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_kmemdup_const (C function)”Œc.devm_kmemdup_const”hNt”auh1hÜhj{h²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”…”�”}”(hj~Vh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjzVh²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&]”uh1jPhjzVh²hh³j‹Vh´Mºubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjšVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjzVh²hh³j‹Vh´MºubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Vh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjzVh²hh³j‹Vh´Mºubj”)�”}”(hj—h]”hŒ*”…”�”}”(hj¶Vh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjzVh²hh³j‹Vh´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þhjzVh²hh³j‹Vh´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”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”jWŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjÉVsbŒc.devm_kmemdup_const”†”asbuh1hhjßVubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Wh²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”…”�”}”(hjhjQWubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbWh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjQWubjü)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjpWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhjQWubjQ)�”}”(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)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj™Wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQWubeh}”(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”…”�”}”(hj)Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjöWubeh}”(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Œ5conditionally duplicate and manage a region of memory”h]”hŒ5conditionally duplicate and manage a region of memory”…”�”}”(hjSXh²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ºhjPXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hjsVh²hh³j‹Vh´Mºubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjkXjHjkXjI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hjuXh]”hŒ Parameters”…”�”}”(hjwXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsXubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¾hjoXubj¤)�”}”(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¼hj‹Xubj©)�”}”(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½hj‹Xubj©)�”}”(hŒ%``size_t len`` memory region length, ”h]”(j¯)�”}”(hŒ``size_t len``”h]”jS)�”}”(hjYh]”hŒ size_t len”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¾hjYubjÉ)�”}”(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ÈhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jYh´M¾hj‹Xubj©)�”}”(hŒ``gfp_t gfp`` GFP mask to use ”h]”(j¯)�”}”(hŒ ``gfp_t gfp``”h]”jS)�”}”(hj?Yh]”hŒ gfp_t gfp”…”�”}”(hjAYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhj=Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M¿hj9YubjÉ)�”}”(hhh]”jM)�”}”(hŒGFP mask to use”h]”hŒGFP mask to use”…”�”}”(hjXYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jTYh´M¿hjUYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj9Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jTYh´M¿hj‹Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hjoXubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hjzYh]”hŒReturn”…”�”}”(hj|Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjxYubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MÁhjoXubjM)�”}”(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ÁhjoXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²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Ühj{h²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”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Zh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZubh)�”}”(hhh]”j)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj6Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3Zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jAŒreftype”jsŒ reftarget”j8ZŒmodname”NŒ classname”Njwjz)�”}”j}]”j€)�”}”jsjþYsbŒc.devm_get_free_pages”†”asbuh1hhjZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVZh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhjZubj”)�”}”(hj—h]”hŒ*”…”�”}”(hjdZh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1j“hjZubj)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjqZh²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}]”jRZŒc.devm_get_free_pages”†”asbuh1hhj†ZubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Zh²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj†Zubj)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(hj¹Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj†Zubeh}”(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 [h²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”…”�”}”(hj4[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ãhj1[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j3hj´Yh²hh³jÍYh´Mãubeh}”(h]”h ]”(jAŒfunction”eh"]”h$]”h&]”jFjAjGjL[jHjL[jI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(hjV[h]”hŒ Parameters”…”�”}”(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´MçhjP[ubj¤)�”}”(hhh]”(j©)�”}”(hŒ5``struct device *dev`` Device to allocate memory for ”h]”(j¯)�”}”(hŒ``struct device *dev``”h]”jS)�”}”(hju[h]”hŒstruct device *dev”…”�”}”(hjw[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jRhjs[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ähjo[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Èhjo[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jŠ[h´Mähjl[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åh•XljÄ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhj¨[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jÃ[h´Måhjl[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æ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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MèhjP[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.”…”�”}”(hj8\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çhjP[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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´MêhjP[ubjM)�”}”(hŒ5Address of allocated memory on success, 0 on failure.”h]”hŒ5Address of allocated memory on success, 0 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´MëhjP[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒdevm_free_pages (C function)”Œc.devm_free_pages”hNt”auh1hÜhj{h²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”…”�”}”(hj=]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj9]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9]ubjü)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjY]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jûhj9]ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg]h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhj9]ubj)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hju]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9]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 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&]”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 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”…”�”}”(hj2^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³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Ž)�”}”(hjT^h]”hŒ Description”…”�”}”(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´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 ”…”�”}”(hjj^h²hh³Nh´NubjŽ)�”}”(hŒ **order**”h]”hŒorder”…”�”}”(hjr^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjj^ubhŒ.”…”�”}”(hjj^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ƒhj{h²hh³Nh´NubhÝ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(héŒ __devm_alloc_percpu (C function)”Œc.__devm_alloc_percpu”hNt”auh1hÜhj{h²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Œ ”…”�”}”(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Œ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”…”�”}”(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}]”jA_Œc.__devm_alloc_percpu”†”asbuh1hhju_ubjQ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš_h²hh³Nh´Nubah}”(h]”h ]”j]ah"]”h$]”h&]”uh1jPhju_ubj)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj¨_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhju_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}]”jA_Œ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&]”jFjAjGj2`jHj2`jI‰jJ‰jK‰uh1híh²hhj{h³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Ž)�”}”(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'hj6`ubj¤)�”}”(hhh]”(j©)�”}”(hŒ=``struct device *dev`` Device to allocate per-cpu memory 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&]”uh1jRhjY`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$hjU`ubjÉ)�”}”(hhh]”jM)�”}”(hŒ%Device to allocate per-cpu memory for”h]”hŒ%Device to allocate per-cpu memory for”…”�”}”(hjt`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jp`h´M$hjq`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÈhjU`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¨h³jp`h´M$hjR`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%hjR`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&hjR`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j£hj6`ubjM)�”}”(hŒ**Description**”h]”jŽ)�”}”(hjah]”hŒ Description”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/basics:149: ./drivers/base/devres.c”h´M(hj6`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'hj6`ubjM)�”}”(hŒ **Return**”h]”jŽ)�”}”(hj/ah]”hŒReturn”…”�”}”(hj1ah²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*hj6`ubjM)�”}”(hŒ8Pointer to allocated memory on success, NULL on failure.”h]”hŒ8Pointer to allocated memory on success, NULL on failure.”…”�”}”(hjEah²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+hj6`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jƒhj{h²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”}”(jhajeajmjjj†jƒjPHjMHj¢ÑjŸÑjMjJj†DjƒDjêËjçËj·j´j†¡jƒ¡jËjþÊjxjuj`aj]auŒ nametypes”}”(jha‰jm‰j†‰jPH‰j¢Ñ‰jM‰j†D‰jêˉj·‰j†¡‰jˉjx‰j`a‰uh}”(jeah·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ÎjJj¥Ñ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ájƒDjPjmjrj‡jŒjjj¥jªj5 j: j½ j jE jJ jÏjÔjÉjÎjrjwjjjðjõjÒj×jZj_jñjöj{j€j"j"jí#jò#jÆ%jË%j®'j³'j–)j›)j?+jD+jW-j\-j0j0j 2j2jÞ3jã3j 6j6jü7j8j':j,:j=j =j¿?jÄ?jcBjhBjçËj‰Dj¦Dj«Dj(Hj-HjfKjkKjDMjIMjPjPjIRjNRj6Tj;TjUVjZVjVYj[Yj”[j™[j]j]jw^j|^jœ`j¡`jžaj£ajcj cjåejêej¸gj½gjýijjj¸lj½lj*pj/pjËqjÐqjôtjùtjXwj]wj(yj-yji{jn{j»|jÀ|jAjFjs‚jx‚jX„j]„j-†j2†jô‡jù‡j›‹j ‹j�j�jÈ�jÍ�jï�jô�j%’j*’j†“j‹“j•j•jÆ–jË–j ™j™jX�j]�j†Ÿj‹Ÿj-£j2£j¿¤jĤj`¦je¦j"¨j'¨j¢©j§©j¬j ¬jw­j|­jv°j{°jß³jä³jƒ¶jˆ¶j¸j¸j3»j8»jƼj˼j\ÀjaÀj¬Âj±Âj…ÄjŠÄjÆjÆjºÇj¿ÇjÉjÉjpÊjuÊj´jíËj ÌjÌj·Íj¼Íj§Ïj¬ÏjCÑjHÑjZÓj_ÓjÕj„Õjo×jt×j ÙjÙj²Új·Új5Üj:ÜjKÞjPÞjåßjêßjYáj^ájãjãj¿äjÄäjçjçj*éj/éjÚëjßëj‹íj�íj·ïj¼ïjYñj^ñjºój¿ójõj„õj÷j÷jåø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½jäjéj"j'jrjwj jÇ j#j#jb%jg%j²'j·'j*j*jR,jW,j¢.j§.jà0jå0j03j53j€5j…5jÐ7jÕ7j :j%:jp<ju<jÀ>jÅ>jAjAj`CjeCjEj$EjðFjõFjÁHjÆHj’Jj—JjcLjhLj4Nj9NjPj PjÖQjÛQj§Sj¬SjfUjkUj7WjþjCþj´j¹j*j/j j¥j_jdjC jH j' j, j j jïjôjÓjØj·j¼j›j jj„j>jCj"j'jj jêjïjÎjÓj²!j·!j–#j›#jz%j%j^'jc'j¯)j´)j%,j*,j›.j .j1j1j‡3jŒ3jØ5jÝ5jN8jS8jÄ:jÉ:j:=j?=j°?jµ?jBjBjwDj|DjíFjòFjcIjhIjÙKjÞKj*Nj/Nj Pj¥PjSjSjŒUj‘UjXjXjgZjlZjÌ\jÑ\j1_j6_j–aj›aj²dj·djÎgjÓgjêjjïjjnj njMqjRqj”tj™tjÛwjàwj"{j'{j¤}j©}j”j™j„�j‰�j„j „jˆ†j�†j ‰j‰jŒ‹j‘‹j¸Žj½Žjð‘jõ‘j”j ”j–j–j,˜j1˜jFšjKšj œj%œjú�jÿ�j& j+ jR¢jW¢j�¤j•¤jà¦jå¦j0©j5©j€«j…«jЭjÕ­j °j%°jp²ju²jÀ´jÅ´j·j·jN¹jS¹jž»j£»jî½jó½j>ÀjCÀjŽÂj“ÂjÞÄjãÄj.Çj3Çj~ÉjƒÉjÎËjÓËj�Íj’Íj^ÏjcÏj/Ñj4ÑjÓjÓjÑÔjÖÔj¢Öj§ÖjsØjxØjDÚjIÚjÜjÜjÔÝjÙÝj¥ßjªßjváj{ájGãjLãjåjåjéæjîæjºèj¿èj‹êj�êj\ìjaìjšîjŸîjêðjïðj:ój?ójŠõj�õjÚ÷jß÷jújújhüjmüj¸þj½þjj jXj]j–j›jæjëj6 j; j† j‹ jÖjÛjjjdjij´j¹jj jTjYj“j˜jÒj×j!j!jP#jU#j3&j8&j)j)jù+jþ+jÜ.já.jý1j2j5j#5j?8jD8j`;je;jÏ=jÔ=j¿?jÄ?j¯Aj´AjDj#Dj�Fj’FjüHjIjkKjpKj^NjcNjpQjuQj„Sj‰Sj˜Uj�Uj¬Wj±Wj³Yj¸Yj�[j’[jg]jl]j“_j˜_j¿ajÄajýcjdjMfjRfj�hj¢hjíjjòjj=mjBmj�oj’ojÝqjâqj-tj2tj}vj‚vj»xjÀxj {j{j[}j`}j«j°jû�j‚jK„jP„j›†j †jëˆjðˆj;‹j@‹júŒjÿŒjËŽjÐŽjœ�j¡�jm’jr’j>”jC”j–j–jà—jå—j±™j¶™j‚›j‡›jA�jF�jŸjŸjã jè j´¢j¹¢j…¤jФjV¦j[¦j'¨j,¨jø©jý©jÉ«jΫj®j ®jW°j\°j§²j¬²j÷´jü´jG·jL·j…¹jйjÕ»jÚ»j%¾j*¾juÀjzÀjÅÂjÊÂjÅjÅjSÇjXÇj£Éj¨ÉjóËjøËjCÎjHÎj�Ðj†ÐjÑÒjÖÒj!Õj&Õjq×jv×jÁÙjÆÙjÜjÜj?ÞjDÞj~àjƒàj½âjÂâj åj¥åjƒèjˆèjfëjkëjIîjNîjjñjoñj‹ôj�ôj¬÷j±÷jÍújÒúj<ýjAýj,ÿj1ÿjj!j‹j�jújÿjijnjØ jÝ jË jÐ jÝjâjñjöjj jjj j%j jjújÿj9j>jx!j}!jÉ#jÎ#j?&jD&jµ(jº(j++j0+j¡-j¦-j0j0j�2j’2j5j5jy7j~7jÊ9jÏ9j@<jE<j¶>j»>j,Aj1Aj¢Cj§CjFjFjŽHj“HjKj KjzMjMj9Oj>OjQj"QjSjSjåTjêTjÉVjÎVj­Xj²Xj‘Zj–Zju\jz\jY^j^^j`j`jüajbjàcjåcjÄejÉej¨gj­gjŒij‘ijpkjukjTmjYmj8oj=oj‰qjŽqjÿsjtjuvjzvjëxjðxja{jf{j²}j·}j(€j-€jž‚j£‚j…j…jЇj�‡jÛ‰jà‰jQŒjVŒjÇŽjÌŽj=‘jB‘j³“j¸“j–j –jz˜j˜jðšjõšjf�jk�jÜŸjáŸjA¢jF¢j¦¤j«¤j §j§jp©ju©jŒ¬j‘¬j¨¯j­¯jIJjɲjàµjåµj'¹j,¹jn¼js¼jµ¿jº¿jüÂjÃj~ÅjƒÅjnÇjsÇj^ÉjcÉjàËjåËjbÎjgÎjäÐjéÐjfÓjkÓj’Öj—ÖjÊÙjÏÙjÞÛjãÛjòÝj÷Ýjàj àj âj%âjúãjÿãjÔåjÙåjèjèj,êj1êjjìjoìjºîj¿îj ñjñjZój_ójªõj¯õjú÷jÿ÷jJújOújšüjŸüjêþjïþj(j-jxj}jÈjÍjjjh jm j¸ j½ jj jXj]j¨j­jgjlj8j=j jjÚjßj«j°j|j�jM jR j"j#"jï#jô#j®%j³%j'j„'jP)jU)j!+j&+jò,j÷,jÃ.jÈ.j”0j™0je2jj2j64j;4jt6jy6jÄ8jÉ8j;j;jd=ji=j´?j¹?jòAj÷AjBDjGDj’Fj—FjâHjçHj2Kj7KjpMjuMjÀOjÅOjRjRj`TjeTj°VjµVjîXjóXj>[jC[jŽ]j“]jÞ_jã_j.bj3bjmdjrdj¬fj±fjëhjðhj*kj/kj njnjðpjõpjÓsjØsj¶vj»vj×yjÜyjø|jý|j€j€j:ƒj?ƒj©…j®…j™‡jž‡j‰‰jމjø‹jý‹jgŽjlŽjÖ�jÛ�jE“jJ“j8–j=–jJ™jO™j^›jc›jr�jw�j†Ÿj‹ŸjþÊj‰¡j¦¡j«¡jâ£jç£jJ¦jO¦jž¨j£¨jd¬ji¬jH°jM°j_²jd²jc´jh´jäµjéµjz·j·jû¸j¹j\»ja»jܼjá¼j6¾j;¾j¬Àj±ÀjÑÃjÖÃjƒÆjˆÆj Èj¥ÈjujËj!Ëj&ËjÌjÌjÍj Íj“Îj˜ÎjÐjÐj,Ñj1ÑjIÒjNÒjŒÓj‘ÓjÕj Õj„Öj‰ÖjÇ×jÌ×jµÚjºÚjxÜj}Üj Ýj¥Ýjoßjtßjìàjñàjãjãj äjäj–åj›åj æj¥æj„çj‰çjhèjmèjLéjQéjvêj{êj ëj¥ëjÈìjÍìjðíjõíjfïjkïjªðj¯ðj}ój‚ój´ôj¹ôjëõjðõj1÷j6÷j²øj·øjºúj¿új_üjdüjòýj÷ýj‡jŒj.j3j¯j´j×jÜjM jR jœ j¡ j‹ j� j]aj{j˜j�jOjTj»jÀj jj>jCj¸j½j>"jC"j¸%j½%j4)j9)j¡,j¦,jš/jŸ/jº1j¿1jÚ3jß3j!6j&6j�9j”9jÍ<jÒ<j·?j¼?jnBjsBj‹Ej�Ej1Hj6HjKjKj>NjCNj5Qj:QjKSjPSjqVjvVj²Yj·Yj�\j†\jž^j£^uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”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.