- sphinx.addnodesdocument)}( rawsource children](translations
LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba
attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget8/translations/zh_CN/RCU/Design/Requirements/RequirementsmodnameN classnameNrefexplicitutagnamehhhubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget8/translations/zh_TW/RCU/Design/Requirements/RequirementsmodnameN classnameNrefexplicituh1hhhubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget8/translations/it_IT/RCU/Design/Requirements/RequirementsmodnameN classnameNrefexplicituh1hhhubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget8/translations/ja_JP/RCU/Design/Requirements/RequirementsmodnameN classnameNrefexplicituh1hhhubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget8/translations/ko_KR/RCU/Design/Requirements/RequirementsmodnameN classnameNrefexplicituh1hhhubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget8/translations/sp_SP/RCU/Design/Requirements/RequirementsmodnameN classnameNrefexplicituh1hhhubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h
hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h!A Tour Through RCU's Requirementsh]h#A Tour Through RCU’s Requirements}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhR/var/lib/git/docbuild/linux/Documentation/RCU/Design/Requirements/Requirements.rsthKubh paragraph)}(hCopyright IBM Corporation, 2015h]hCopyright IBM Corporation, 2015}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hAuthor: Paul E. McKenneyh]hAuthor: Paul E. McKenney}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hThe initial version of this document appeared in the
`LWN `_ on those articles:
`part 1 `_,
`part 2 `_, and
`part 3 `_.h](h5The initial version of this document appeared in the
}(hhhhhNhNubh reference)}(h`LWN `_h]hLWN}(hhhhhNhNubah}(h]h ]h"]h$]h&]nameLWNrefurihttps://lwn.net/uh1hhhubhtarget)}(h h]h}(h]lwnah ]h"]lwnah$]h&]refurihuh1h
referencedKhhubh on those articles:
}(hhhhhNhNubh)}(h,`part 1 `_h]hpart 1}(hj hhhNhNubah}(h]h ]h"]h$]h&]namepart 1h https://lwn.net/Articles/652156/uh1hhhubh)}(h# h]h}(h]part-1ah ]h"]part 1ah$]h&]refurij uh1hj Khhubh,
}(hhhhhNhNubh)}(h,`part 2 `_h]hpart 2}(hj' hhhNhNubah}(h]h ]h"]h$]h&]namepart 2h https://lwn.net/Articles/652677/uh1hhhubh)}(h# h]h}(h]part-2ah ]h"]part 2ah$]h&]refurij7 uh1hj Khhubh, and
}(hhhhhNhNubh)}(h,`part 3 `_h]hpart 3}(hjI hhhNhNubah}(h]h ]h"]h$]h&]namepart 3h https://lwn.net/Articles/653326/uh1hhhubh)}(h# h]h}(h]part-3ah ]h"]part 3ah$]h&]refurijY uh1hj Khhubh.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hhh](h)}(hIntroductionh]hIntroduction}(hjt hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjq hhhhhKubh)}(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 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjq hhubh)}(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 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjq hhubh)}(hLAll that aside, here are the categories of currently known RCU
requirements:h]hLAll that aside, here are the categories of currently known RCU
requirements:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjq hhubhenumerated_list)}(hhh](h list_item)}(h`Fundamental Requirements`_h]h)}(hj h]h)}(hj h]hFundamental Requirements}(hj hhhNhNubah}(h]h ]h"]h$]h&]nameFundamental Requirementsrefidfundamental-requirementsuh1hhj resolvedKubah}(h]h ]h"]h$]h&]uh1hhhhK'hj ubah}(h]h ]h"]h$]h&]uh1j hj hhhhhNubj )}(h`Fundamental Non-Requirements`_h]h)}(hj h]h)}(hj h]hFundamental Non-Requirements}(hj hhhNhNubah}(h]h ]h"]h$]h&]nameFundamental Non-Requirementsj fundamental-non-requirementsuh1hhj j Kubah}(h]h ]h"]h$]h&]uh1hhhhK(hj ubah}(h]h ]h"]h$]h&]uh1j hj hhhhhNubj )}(h`Parallelism Facts of Life`_h]h)}(hj h]h)}(hj h]hParallelism Facts of Life}(hj hhhNhNubah}(h]h ]h"]h$]h&]nameParallelism Facts of Lifej parallelism-facts-of-lifeuh1hhj j Kubah}(h]h ]h"]h$]h&]uh1hhhhK)hj ubah}(h]h ]h"]h$]h&]uh1j hj hhhhhNubj )}(h)`Quality-of-Implementation Requirements`_h]h)}(hj h]h)}(hj h]h&Quality-of-Implementation Requirements}(hj% hhhNhNubah}(h]h ]h"]h$]h&]name&Quality-of-Implementation Requirementsj &quality-of-implementation-requirementsuh1hhj" j Kubah}(h]h ]h"]h$]h&]uh1hhhhK*hj ubah}(h]h ]h"]h$]h&]uh1j hj hhhhhNubj )}(h`Linux Kernel Complications`_h]h)}(hjC h]h)}(hjC h]hLinux Kernel Complications}(hjH hhhNhNubah}(h]h ]h"]h$]h&]nameLinux Kernel Complicationsj linux-kernel-complicationsuh1hhjE j Kubah}(h]h ]h"]h$]h&]uh1hhhhK+hjA ubah}(h]h ]h"]h$]h&]uh1j hj hhhhhNubj )}(h$`Software-Engineering Requirements`_h]h)}(hjf h]h)}(hjf h]h!Software-Engineering Requirements}(hjk hhhNhNubah}(h]h ]h"]h$]h&]name!Software-Engineering Requirementsj !software-engineering-requirementsuh1hhjh j Kubah}(h]h ]h"]h$]h&]uh1hhhhK,hjd ubah}(h]h ]h"]h$]h&]uh1j hj hhhhhNubj )}(h`Other RCU Flavors`_h]h)}(hj h]h)}(hj h]hOther RCU Flavors}(hj hhhNhNubah}(h]h ]h"]h$]h&]nameOther RCU Flavorsj other-rcu-flavorsuh1hhj j Kubah}(h]h ]h"]h$]h&]uh1hhhhK-hj ubah}(h]h ]h"]h$]h&]uh1j hj hhhhhNubj )}(h`Possible Future Changes`_
h]h)}(h`Possible Future Changes`_h]h)}(hj h]hPossible Future Changes}(hj hhhNhNubah}(h]h ]h"]h$]h&]namePossible Future Changesj possible-future-changesuh1hhj j Kubah}(h]h ]h"]h$]h&]uh1hhhhK.hj ubah}(h]h ]h"]h$]h&]uh1j hj hhhhhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1j hjq hhhhhK'ubh)}(hThis 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](hThis is followed by a }(hj hhhNhNubh)}(hsummary_h]hsummary}(hj hhhNhNubah}(h]h ]h"]h$]h&]namesummaryj summaryuh1hhj 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 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK0hjq hhubeh}(h]introductionah ]h"]introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hFundamental Requirementsh]hFundamental Requirements}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhK5ubh)}(hjRCU's fundamental requirements are the closest thing RCU has to hard
mathematical requirements. These are:h]hlRCU’s fundamental requirements are the closest thing RCU has to hard
mathematical requirements. These are:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hj hhubj )}(hhh](j )}(h`Grace-Period Guarantee`_h]h)}(hj( h]h)}(hj( h]hGrace-Period Guarantee}(hj- hhhNhNubah}(h]h ]h"]h$]h&]nameGrace-Period Guaranteej grace-period-guaranteeuh1hhj* j Kubah}(h]h ]h"]h$]h&]uh1hhhhK:hj& ubah}(h]h ]h"]h$]h&]uh1j hj# hhhhhNubj )}(h`Publish/Subscribe Guarantee`_h]h)}(hjK h]h)}(hjK h]hPublish/Subscribe Guarantee}(hjP hhhNhNubah}(h]h ]h"]h$]h&]namePublish/Subscribe Guaranteej publish-subscribe-guaranteeuh1hhjM j Kubah}(h]h ]h"]h$]h&]uh1hhhhK;hjI ubah}(h]h ]h"]h$]h&]uh1j hj# hhhhhNubj )}(h`Memory-Barrier Guarantees`_h]h)}(hjn h]h)}(hjn h]hMemory-Barrier Guarantees}(hjs hhhNhNubah}(h]h ]h"]h$]h&]nameMemory-Barrier Guaranteesj memory-barrier-guaranteesuh1hhjp j Kubah}(h]h ]h"]h$]h&]uh1hhhhK