Messages in this thread | | | Date | Fri, 20 Jan 2023 21:56:36 +0100 | Subject | Re: Internal vs. external barriers (was: Re: Interesting LKMM litmus test) | From | Jonas Oberhauser <> |
| |
On 1/20/2023 4:32 PM, Paul E. McKenney wrote: > On Fri, Jan 20, 2023 at 01:51:01PM +0100, Jonas Oberhauser wrote: >> I'm not going to get it right today, am I? > Believe me, I know that feeling! Open-source development is therefore > an extremely good character-building exercise. At least that is what > I keep telling myself. ;-)
"Calvin, go do something you hate! Being miserable builds character!"
> >> +let srcu-rscs = ([Srcu-lock] ; (data ; [~ Srcu-unlock] ; rfe) * ; data ; >> [Srcu-unlock]) & loc >> >> I see now that I copied the format from your message but without realizing >> the original had a `|` where I have a `;`. >> I hope this version is finally right and perhaps more natural than the (data >> | rf) version, considering rf can't actually appear in most places and this >> more closely matches carry-dep;data. >> But of course feel free to use >> +let srcu-rscs = ([Srcu-lock] ; (data | [~ Srcu-unlock] ; rf)+ ; >> [Srcu-unlock]) & loc >> instead if you prefer. > > The reason for favoring "rf" over "rfe" is the possibility of a litmus > test where the process containing the srcu_down_read() sometimes but > not always also has the matching srcu_up_read(). Perhaps a pair of "if" > statements control which process does the matching srcu_up_read().
If you put the redefinition of data early enough to affect this definition, the rfi option should be covered by the carry-dep in the redefinition of data, so I left it out.
> And thank you!!!
always ;-)
jonas
| |