€•´ Œ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”Œ8/translations/zh_CN/RCU/Design/Requirements/Requirements”Œmodname”NŒ classname”NŒrefexplicit”ˆuŒtagname”hhhubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/zh_TW/RCU/Design/Requirements/Requirements”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/it_IT/RCU/Design/Requirements/Requirements”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/ja_JP/RCU/Design/Requirements/Requirements”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/ko_KR/RCU/Design/Requirements/Requirements”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/pt_BR/RCU/Design/Requirements/Requirements”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ8/translations/sp_SP/RCU/Design/Requirements/Requirements”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h
hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ!A Tour Through RCU's Requirements”h]”hŒ#A Tour Through RCU’s Requirements”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/RCU/Design/Requirements/Requirements.rst”h´KubhŒ paragraph”“”)�”}”(hŒCopyright IBM Corporation, 2015”h]”hŒCopyright IBM Corporation, 2015”…”�”}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)�”}”(hŒAuthor: Paul E. McKenney”h]”hŒAuthor: Paul E. McKenney”…”�”}”(hhÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)�”}”(hŒïThe initial version of this document appeared in the
`LWN `_ on those articles:
`part 1 `_,
`part 2 `_, and
`part 3 `_.”h]”(hŒ5The initial version of this document appeared in the
”…”�”}”(hhéh²hh³Nh´NubhŒ reference”“”)�”}”(hŒ`LWN `_”h]”hŒLWN”…”�”}”(hhóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒLWN”Œrefuri”Œhttps://lwn.net/”uh1hñhhéubhŒtarget”“”)�”}”(hŒ ”h]”h}”(h]”Œlwn”ah ]”h"]”Œlwn”ah$]”h&]”Œrefuri”j uh1j Œ
referenced”KhhéubhŒ on those articles:
”…”�”}”(hhéh²hh³Nh´Nubhò)�”}”(hŒ,`part 1 `_”h]”hŒpart 1”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œpart 1”j Œ https://lwn.net/Articles/652156/”uh1hñhhéubj )�”}”(hŒ# ”h]”h}”(h]”Œpart-1”ah ]”h"]”Œpart 1”ah$]”h&]”Œrefuri”j) uh1j j KhhéubhŒ,
”…”�”}”(hhéh²hh³Nh´Nubhò)�”}”(hŒ,`part 2 `_”h]”hŒpart 2”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œpart 2”j Œ https://lwn.net/Articles/652677/”uh1hñhhéubj )�”}”(hŒ# ”h]”h}”(h]”Œpart-2”ah ]”h"]”Œpart 2”ah$]”h&]”Œrefuri”jK uh1j j KhhéubhŒ, and
”…”�”}”(hhéh²hh³Nh´Nubhò)�”}”(hŒ,`part 3 `_”h]”hŒpart 3”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œpart 3”j Œ https://lwn.net/Articles/653326/”uh1hñhhéubj )�”}”(hŒ# ”h]”h}”(h]”Œpart-3”ah ]”h"]”Œpart 3”ah$]”h&]”Œrefuri”jm uh1j j KhhéubhŒ.”…”�”}”(hhéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒIntroduction”h]”hŒIntroduction”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj… h²hh³hÊh´KubhÌ)�”}”(hX Read-copy update (RCU) is a synchronization mechanism that is often used
as a replacement for reader-writer locking. RCU is unusual in that
updaters do not block readers, which means that RCU's read-side
primitives can be exceedingly fast and scalable. In addition, updaters
can make useful forward progress concurrently with readers. However, all
this concurrency between RCU readers and updaters does raise the
question of exactly what RCU readers are doing, which in turn raises the
question of exactly what RCU's requirements are.”h]”hX Read-copy update (RCU) is a synchronization mechanism that is often used
as a replacement for reader-writer locking. RCU is unusual in that
updaters do not block readers, which means that RCU’s read-side
primitives can be exceedingly fast and scalable. In addition, updaters
can make useful forward progress concurrently with readers. However, all
this concurrency between RCU readers and updaters does raise the
question of exactly what RCU readers are doing, which in turn raises the
question of exactly what RCU’s requirements are.”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj… h²hubhÌ)�”}”(hX This document therefore summarizes RCU's requirements, and can be
thought of as an informal, high-level specification for RCU. It is
important to understand that RCU's specification is primarily empirical
in nature; in fact, I learned about many of these requirements the hard
way. This situation might cause some consternation, however, not only
has this learning process been a lot of fun, but it has also been a
great privilege to work with so many people willing to apply
technologies in interesting new ways.”h]”hX This document therefore summarizes RCU’s requirements, and can be
thought of as an informal, high-level specification for RCU. It is
important to understand that RCU’s specification is primarily empirical
in nature; in fact, I learned about many of these requirements the hard
way. This situation might cause some consternation, however, not only
has this learning process been a lot of fun, but it has also been a
great privilege to work with so many people willing to apply
technologies in interesting new ways.”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj… h²hubhÌ)�”}”(hŒLAll that aside, here are the categories of currently known RCU
requirements:”h]”hŒLAll that aside, here are the categories of currently known RCU
requirements:”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K$hj… h²hubhŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ`Fundamental Requirements`_”h]”hÌ)�”}”(hjÉ h]”hò)�”}”(hjÉ h]”hŒFundamental Requirements”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒFundamental Requirements”Œrefid”Œfundamental-requirements”uh1hñhjË Œresolved”Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K'hjÇ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅ hj h²hh³hÊh´NubjÆ )�”}”(hŒ`Fundamental Non-Requirements`_”h]”hÌ)�”}”(hjî h]”hò)�”}”(hjî h]”hŒFundamental Non-Requirements”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒFundamental Non-Requirements”jÝ Œfundamental-non-requirements”uh1hñhjð jß Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K(hjì ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅ hj h²hh³hÊh´NubjÆ )�”}”(hŒ`Parallelism Facts of Life`_”h]”hÌ)�”}”(hj h]”hò)�”}”(hj h]”hŒParallelism Facts of Life”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒParallelism Facts of Life”jÝ Œparallelism-facts-of-life”uh1hñhj jß Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K)hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅ hj h²hh³hÊh´NubjÆ )�”}”(hŒ)`Quality-of-Implementation Requirements`_”h]”hÌ)�”}”(hj4 h]”hò)�”}”(hj4 h]”hŒ&Quality-of-Implementation Requirements”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ&Quality-of-Implementation Requirements”jÝ Œ&quality-of-implementation-requirements”uh1hñhj6 jß Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K*hj2 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅ hj h²hh³hÊh´NubjÆ )�”}”(hŒ`Linux Kernel Complications`_”h]”hÌ)�”}”(hjW h]”hò)�”}”(hjW h]”hŒLinux Kernel Complications”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒLinux Kernel Complications”jÝ Œlinux-kernel-complications”uh1hñhjY jß Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K+hjU ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅ hj h²hh³hÊh´NubjÆ )�”}”(hŒ$`Software-Engineering Requirements`_”h]”hÌ)�”}”(hjz h]”hò)�”}”(hjz h]”hŒ!Software-Engineering Requirements”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ!Software-Engineering Requirements”jÝ Œ!software-engineering-requirements”uh1hñhj| jß Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K,hjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅ hj h²hh³hÊh´NubjÆ )�”}”(hŒ`Other RCU Flavors`_”h]”hÌ)�”}”(hj� h]”hò)�”}”(hj� h]”hŒOther RCU Flavors”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒOther RCU Flavors”jÝ Œother-rcu-flavors”uh1hñhjŸ jß Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K-hj› ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅ hj h²hh³hÊh´NubjÆ )�”}”(hŒ`Possible Future Changes`_
”h]”hÌ)�”}”(hŒ`Possible Future Changes`_”h]”hò)�”}”(hjÄ h]”hŒPossible Future Changes”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒPossible Future Changes”jÝ Œpossible-future-changes”uh1hñhj jß Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K.hj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅ hj h²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jÀ hj… h²hh³hÊh´K'ubhÌ)�”}”(hŒ£This is followed by a summary_, however, the answers to
each quick quiz immediately follows the quiz. Select the big white space
with your mouse to see the answer.”h]”(hŒThis is followed by a ”…”�”}”(hjí h²hh³Nh´Nubhò)�”}”(hŒsummary_”h]”hŒsummary”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œsummary”jÝ Œsummary”uh1hñhjí jß KubhŒ…, however, the answers to
each quick quiz immediately follows the quiz. Select the big white space
with your mouse to see the answer.”…”�”}”(hjí h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K0hj… h²hubeh}”(h]”Œintroduction”ah ]”h"]”Œintroduction”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒFundamental Requirements”h]”hŒFundamental Requirements”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´K5ubhÌ)�”}”(hŒjRCU's fundamental requirements are the closest thing RCU has to hard
mathematical requirements. These are:”h]”hŒlRCU’s fundamental requirements are the closest thing RCU has to hard
mathematical requirements. These are:”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K7hj h²hubjÁ )�”}”(hhh]”(jÆ )�”}”(hŒ`Grace-Period Guarantee`_”h]”hÌ)�”}”(hj< h]”hò)�”}”(hj< h]”hŒGrace-Period Guarantee”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒGrace-Period Guarantee”jÝ Œgrace-period-guarantee”uh1hñhj> jß Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K:hj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅ hj7 h²hh³hÊh´NubjÆ )�”}”(hŒ`Publish/Subscribe Guarantee`_”h]”hÌ)�”}”(hj_ h]”hò)�”}”(hj_ h]”hŒPublish/Subscribe Guarantee”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒPublish/Subscribe Guarantee”jÝ Œpublish-subscribe-guarantee”uh1hñhja jß Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K;hj] ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÅ hj7 h²hh³hÊh´NubjÆ )�”}”(hŒ`Memory-Barrier Guarantees`_”h]”hÌ)�”}”(hj‚ h]”hò)�”}”(hj‚ h]”hŒMemory-Barrier Guarantees”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒMemory-Barrier Guarantees”jÝ Œmemory-barrier-guarantees”uh1hñhj„ jß Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K