Messages in this thread |  | | Date | Wed, 7 Nov 2018 15:14:14 +0100 | | From | Peter Zijlstra <> | | Subject | Re: [PATCH v5 03/15] sched/core: uclamp: map TASK's clamp values into CPU's clamp groups |
| |
On Wed, Nov 07, 2018 at 01:57:38PM +0000, Patrick Bellasi wrote: > On 07-Nov 14:16, Peter Zijlstra wrote:
> > Please write cmpxchg loops in the form: > > > > atomic_long_t *ptr = &uclamp_maps[clamp_id][group_id].adata; > > union uclamp_map old, new; > > > > old.data = atomic_long_read(ptr); > > do { > > new.data = old.data; > > new.se_cound--; > > } while (!atomic_long_try_cmpxchg(ptr, &old.data, new.data)); > > > > > > (same for all the others of course) > > Ok, I did that to save some indentation, but actually it's most > commonly used in a while loop... will update in v6. > > Out of curiosity, apart from code consistency, is that required also > specifically for any possible compiler related (mis)behavior ?
No; it is just the 'normal' form my brain likes :-)
And the try_cmpxchg() thing is slightly more efficient on x86 vs the traditional form:
while (cmpxchg(ptr, old, new) != old)
|  |