lkml.org 
[lkml]   [2018]   [Nov]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v5 03/15] sched/core: uclamp: map TASK's clamp values into CPU's clamp groups
On Mon, Oct 29, 2018 at 06:32:57PM +0000, Patrick Bellasi wrote:

> +static void uclamp_group_put(unsigned int clamp_id, unsigned int group_id)
> {
> + union uclamp_map *uc_maps = &uclamp_maps[clamp_id][0];
> + union uclamp_map uc_map_old, uc_map_new;
> + long res;
> +
> +retry:
> +
> + uc_map_old.data = atomic_long_read(&uc_maps[group_id].adata);
> + uc_map_new = uc_map_old;
> + uc_map_new.se_count -= 1;
> + res = atomic_long_cmpxchg(&uc_maps[group_id].adata,
> + uc_map_old.data, uc_map_new.data);
> + if (res != uc_map_old.data)
> + goto retry;
> +}

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)

\
 
 \ /
  Last update: 2018-11-07 14:17    [from the cache]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and my Meterkast|Read the blog