Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx> --- SMPdesign/SMPdesign.tex | 4 ++-- defer/rcuusage.tex | 4 ++-- defer/whichtochoose.tex | 2 +- locking/locking-existence.tex | 2 +- together/refcnt.tex | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SMPdesign/SMPdesign.tex b/SMPdesign/SMPdesign.tex index b2ebabf5..8f4655bc 100644 --- a/SMPdesign/SMPdesign.tex +++ b/SMPdesign/SMPdesign.tex @@ -415,8 +415,8 @@ bucket from being freed during the time that its lock was being acquired. What are some ways of preventing a structure from being freed while its lock is being acquired? }\QuickQuizAnswer{ - Here are a few possible solutions to this \emph{existence guarantee} - problem: + Here are a few possible solutions to this + \emph{\IX{existence guarantee}} problem: \begin{enumerate} \item Provide a statically allocated lock that is held while diff --git a/defer/rcuusage.tex b/defer/rcuusage.tex index c663be0b..f69201bb 100644 --- a/defer/rcuusage.tex +++ b/defer/rcuusage.tex @@ -588,7 +588,7 @@ element being freed and reallocated as the same type of structure while they are referencing it, but must prohibit a change in type. This guarantee, called ``type-safe memory'' in academic literature~\cite{Cheriton96a}, -is weaker than the existence guarantees discussed +is weaker than the \IXpl{existence guarantee} discussed in \cref{sec:defer:Existence Guarantee}, and is therefore quite a bit harder to work with. Type-safe memory algorithms in the Linux kernel make use of slab caches, @@ -702,7 +702,7 @@ top of the existence guarantees described in the next section. \label{sec:defer:Existence Guarantee} Gamsa et al.~\cite{Gamsa99} -discuss existence guarantees and describe how a mechanism +discuss \IXpl{existence guarantee} and describe how a mechanism resembling RCU can be used to provide these existence guarantees (see Section~5 on page 7 of the PDF), and \cref{sec:locking:Lock-Based Existence Guarantees} diff --git a/defer/whichtochoose.tex b/defer/whichtochoose.tex index 4782c036..e54ad1df 100644 --- a/defer/whichtochoose.tex +++ b/defer/whichtochoose.tex @@ -261,7 +261,7 @@ provides more-detailed rules of thumb that can help you choose among the four deferred-processing techniques presented in this chapter. As shown in the ``Existence Guarantee'' row, -if you need existence guarantees for linked +if you need \IXpl{existence guarantee} for linked data elements, you must use reference counting, hazard pointers, or RCU\@. Sequence locks do not provide existence guarantees, instead providing detection of updates, retrying any read-side critical sections diff --git a/locking/locking-existence.tex b/locking/locking-existence.tex index 38e432a2..d0ee690c 100644 --- a/locking/locking-existence.tex +++ b/locking/locking-existence.tex @@ -8,7 +8,7 @@ \epigraph{Existence precedes and rules essence.}{\emph{Jean-Paul Sartre}} A key challenge in parallel programming is to provide -\emph{existence guarantees}~\cite{Gamsa99}, +\emph{\IXpl{existence guarantee}}~\cite{Gamsa99}, so that attempts to access a given object can rely on that object being in existence throughout a given access attempt. diff --git a/together/refcnt.tex b/together/refcnt.tex index 292bdbd1..56c6baa9 100644 --- a/together/refcnt.tex +++ b/together/refcnt.tex @@ -31,7 +31,7 @@ use in concurrent software, including: might seek help from another thread that already has a reference. \item In some cases, hazard pointers may be used as a drop-in replacement for reference counters. -\item An existence guarantee is provided for the object, thus preventing +\item An \IX{existence guarantee} is provided for the object, thus preventing it from being freed while some other entity might be attempting to acquire a reference. Existence guarantees are often provided by automatic -- 2.17.1