History

sched/clock: Use try_cmpxchg64 in sched_clock_{local,remote}

Use try_cmpxchg64 instead of cmpxchg64 (*ptr, old, new) != old in sched_clock_{local,remote}. x86 cmpxchg returns success in ZF flag, so this change saves a compare after cmpxchg (and related move instruction in front of cmpxchg).

Uros Bizjak committed 4 years ago

Commit 8491d1b1 parent c2df0a61 file · +2 −2Browse files

Showing the changes to kernel (1 of 1 file). Show all

Unified · Split

kernel/sched/clock.c+2−2
@@ -287,7 +287,7 @@ again: · 286 unmodified lines
287287 clock = wrap_max(clock, min_clock);
288288 clock = wrap_min(clock, max_clock);
289289
290− if (cmpxchg64(&scd->clock, old_clock, clock) != old_clock)
290+ if (!try_cmpxchg64(&scd->clock, &old_clock, clock))
291291 goto again;
292292
293293 return clock;
@@ -349,7 +349,7 @@ again: · 55 unmodified lines
349349 val = remote_clock;
350350 }
351351
352− if (cmpxchg64(ptr, old_val, val) != old_val)
352+ if (!try_cmpxchg64(ptr, &old_val, val))
353353 goto again;
354354
355355 return val;