diff options
author | Paul E. McKenney <paulmck@kernel.org> | 2023-06-02 11:52:58 -0700 |
---|---|---|
committer | Paul E. McKenney <paulmck@kernel.org> | 2023-06-02 11:52:58 -0700 |
commit | 94f01e467566ebfaee77868cc02b747e8950ad0b (patch) | |
tree | 97565544e172a0b4cb1a991f3cb70da6bebd80e3 | |
parent | 5b30425421c140af7ff1293820ee6fe85c8a6499 (diff) | |
download | perfbook-94f01e467566ebfaee77868cc02b747e8950ad0b.tar.gz |
together/applyrcu: Note possibility of lost counts
Reported-by: Alan Huang <mmpgouride@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
-rw-r--r-- | together/applyrcu.tex | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/together/applyrcu.tex b/together/applyrcu.tex index dee027b9..a9cbfd22 100644 --- a/together/applyrcu.tex +++ b/together/applyrcu.tex @@ -151,6 +151,15 @@ is invoked by each newly created thread. So, interestingly enough, when adding a new thread, this implementation gets the effect of allocating a new structure, but without actually having to do the allocation. + + \begin{fcvref}[ln:count:count_end_rcu:whole:unreg] + On the other hand, \co{count_unregister_thread()} can result + in the outgoing thread's counts being lost. + This can happen when \co{read_count()} is invoked between + \clnref{null,assign}. + There are efficient ways of avoiding this count loss, but + these are left as an exercise for the reader. + \end{fcvref} }\QuickQuizEnd \begin{fcvref}[ln:count:count_end_rcu:whole:unreg] |