* [Q] READ_ONCE(x)++
@ 2016-12-29 2:54 Akira Yokosawa
2016-12-29 3:43 ` Paul E. McKenney
0 siblings, 1 reply; 2+ messages in thread
From: Akira Yokosawa @ 2016-12-29 2:54 UTC (permalink / raw)
To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa
Hi Paul,
As I'm not so familiar with Linux kernel programming,
I found the following hunk in commit 7945ae1a06c5 difficult to grasp at first glance.
@@ -564,7 +584,7 @@ the other will wait until the first thread releases the lock.
38 exit(-1);
39 }
40 for (i = 0; i < 3; i++) {
- 41 ACCESS_ONCE(x)++;
+ 41 READ_ONCE(x)++;
42 poll(NULL, 0, 5);
43 }
44 if (pthread_mutex_unlock(pmlp) != 0) {
"The name READ_ONCE() seems to imply it is used for read access, but what
happens when it is used with a "++" operator?" was what I thought.
"ACCESS_ONCE(x)++" was already somewhat confusing for me.
Once you know its definition, you can see there is no problem. But it still
looks strange...
Don't kernel programmers feel strangeness in "READ_ONCE(x)++"?
This is just a random question. But if you could add some explanation of the
usage, that would be of help for novice programmers.
Thanks, Akira
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Q] READ_ONCE(x)++
2016-12-29 2:54 [Q] READ_ONCE(x)++ Akira Yokosawa
@ 2016-12-29 3:43 ` Paul E. McKenney
0 siblings, 0 replies; 2+ messages in thread
From: Paul E. McKenney @ 2016-12-29 3:43 UTC (permalink / raw)
To: Akira Yokosawa; +Cc: perfbook
On Thu, Dec 29, 2016 at 11:54:02AM +0900, Akira Yokosawa wrote:
> Hi Paul,
>
> As I'm not so familiar with Linux kernel programming,
> I found the following hunk in commit 7945ae1a06c5 difficult to grasp at first glance.
>
> @@ -564,7 +584,7 @@ the other will wait until the first thread releases the lock.
> 38 exit(-1);
> 39 }
> 40 for (i = 0; i < 3; i++) {
> - 41 ACCESS_ONCE(x)++;
> + 41 READ_ONCE(x)++;
> 42 poll(NULL, 0, 5);
> 43 }
> 44 if (pthread_mutex_unlock(pmlp) != 0) {
>
> "The name READ_ONCE() seems to imply it is used for read access, but what
> happens when it is used with a "++" operator?" was what I thought.
>
> "ACCESS_ONCE(x)++" was already somewhat confusing for me.
>
> Once you know its definition, you can see there is no problem. But it still
> looks strange...
>
> Don't kernel programmers feel strangeness in "READ_ONCE(x)++"?
>
> This is just a random question. But if you could add some explanation of the
> usage, that would be of help for novice programmers.
Heh! Good catch, thank you!
This would give a compiler error in the Linux kernel (I think, anyway),
but worked by accident given the definitions perfbook uses.
I have fixed this with your Reported-by.
Thanx, Paul
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-12-29 3:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-29 2:54 [Q] READ_ONCE(x)++ Akira Yokosawa
2016-12-29 3:43 ` Paul E. McKenney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox