The text incorrectly stated that 'line 8 finds' the pointer condition, but in Listing 9.4, line 7 contains the if statement that performs the check, while line 8 contains the return statement.
This commit: 1. Adds a label (htr:check) to the if statement on line 7 2. Updates the text to reference the if check (htr:check) instead of the return statement (htr:race1) for the condition check 3. Clarifies that the if check finds the condition and the return statement returns the value This makes the description more accurate and reflects the actual code execution flow. Signed-off-by: Kunwu Chan <[email protected]> --- CodeSamples/defer/hazptr.h | 2 +- defer/hazptr.tex | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CodeSamples/defer/hazptr.h b/CodeSamples/defer/hazptr.h index bdeb5c15..2d5a098f 100644 --- a/CodeSamples/defer/hazptr.h +++ b/CodeSamples/defer/hazptr.h @@ -74,7 +74,7 @@ static inline void *_h_t_r_impl(void **p, //\lnlbl{htr:b} void *tmp; tmp = READ_ONCE(*p); //\lnlbl{htr:ro1} - if (!tmp || tmp == (void *)HAZPTR_POISON) + if (!tmp || tmp == (void *)HAZPTR_POISON) //\lnlbl{htr:check} return tmp; //\lnlbl{htr:race1} WRITE_ONCE(hp->p, tmp); //\lnlbl{htr:store} smp_mb(); //\lnlbl{htr:mb} diff --git a/defer/hazptr.tex b/defer/hazptr.tex index 22fca499..50ff0996 100644 --- a/defer/hazptr.tex +++ b/defer/hazptr.tex @@ -69,8 +69,8 @@ Finally, if it fails due to racing with an update, it returns a special }\QuickQuizEnd \Clnref{htr:ro1} reads the pointer to the object to be protected. -If \clnref{htr:race1} finds that this pointer was either \co{NULL} or -the special \co{HAZPTR_POISON} deleted-object token, it returns +If \clnref{htr:check} finds that this pointer was either \co{NULL} or +the special \co{HAZPTR_POISON} deleted-object token, then \clnref{htr:race1} returns the pointer's value to inform the caller of the failure. Otherwise, \clnref{htr:store} stores the pointer into the specified hazard pointer, and \clnref{htr:mb} forces full ordering of that -- 2.25.1
