k 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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget8/translations/pt_BR/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&]refurij uh1j
referencedKhhubh on those articles:
}(hhhhhNhNubh)}(h,`part 1 `_h]hpart 1}(hj hhhNhNubah}(h]h ]h"]h$]h&]namepart 1j https://lwn.net/Articles/652156/uh1hhhubj )}(h# h]h}(h]part-1ah ]h"]part 1ah$]h&]refurij) uh1j j Khhubh,
}(hhhhhNhNubh)}(h,`part 2 `_h]hpart 2}(hj; hhhNhNubah}(h]h ]h"]h$]h&]namepart 2j https://lwn.net/Articles/652677/uh1hhhubj )}(h# h]h}(h]part-2ah ]h"]part 2ah$]h&]refurijK uh1j j Khhubh, and
}(hhhhhNhNubh)}(h,`part 3 `_h]hpart 3}(hj] hhhNhNubah}(h]h ]h"]h$]h&]namepart 3j https://lwn.net/Articles/653326/uh1hhhubj )}(h# h]h}(h]part-3ah ]h"]part 3ah$]h&]refurijm uh1j j Khhubh.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hhh](h)}(hIntroductionh]hIntroduction}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj 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&]uh1hhhhKhj 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&]uh1hhhhKhj 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$hj 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)}(hj4 h]h)}(hj4 h]h&Quality-of-Implementation Requirements}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]name&Quality-of-Implementation Requirementsj &quality-of-implementation-requirementsuh1hhj6 j Kubah}(h]h ]h"]h$]h&]uh1hhhhK*hj2 ubah}(h]h ]h"]h$]h&]uh1j hj hhhhhNubj )}(h`Linux Kernel Complications`_h]h)}(hjW h]h)}(hjW h]hLinux Kernel Complications}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]nameLinux Kernel Complicationsj linux-kernel-complicationsuh1hhjY j Kubah}(h]h ]h"]h$]h&]uh1hhhhK+hjU ubah}(h]h ]h"]h$]h&]uh1j hj hhhhhNubj )}(h$`Software-Engineering Requirements`_h]h)}(hjz h]h)}(hjz h]h!Software-Engineering Requirements}(hj hhhNhNubah}(h]h ]h"]h$]h&]name!Software-Engineering Requirementsj !software-engineering-requirementsuh1hhj| j Kubah}(h]h ]h"]h$]h&]uh1hhhhK,hjx 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 hj 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&]uh1hhhhK0hj 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}(hjA 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 hj7 hhhhhNubj )}(h`Publish/Subscribe Guarantee`_h]h)}(hj_ h]h)}(hj_ h]hPublish/Subscribe Guarantee}(hjd hhhNhNubah}(h]h ]h"]h$]h&]namePublish/Subscribe Guaranteej publish-subscribe-guaranteeuh1hhja j Kubah}(h]h ]h"]h$]h&]uh1hhhhK;hj] ubah}(h]h ]h"]h$]h&]uh1j hj7 hhhhhNubj )}(h`Memory-Barrier Guarantees`_h]h)}(hj h]h)}(hj h]hMemory-Barrier Guarantees}(hj hhhNhNubah}(h]h ]h"]h$]h&]nameMemory-Barrier Guaranteesj memory-barrier-guaranteesuh1hhj j Kubah}(h]h ]h"]h$]h&]uh1hhhhK