OSDN Git Service

llist: use try_cmpxchg in llist_add_batch and llist_del_first
authorUros Bizjak <ubizjak@gmail.com>
Tue, 12 Jul 2022 14:49:17 +0000 (16:49 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 12 Sep 2022 04:55:06 +0000 (21:55 -0700)
commit4f1d2a030db09af4d21695983674a18633cd0ffb
treeb149575bb927d0552a63441ab885a5a9128212f3
parent05c6257433b7212f07a7e53479a8ab038fc1666a
llist: use try_cmpxchg in llist_add_batch and llist_del_first

Use try_cmpxchg instead of cmpxchg (*ptr, old, new) == old in
llist_add_batch and llist_del_first.  x86 CMPXCHG instruction returns
success in ZF flag, so this change saves a compare after cmpxchg.

Also, try_cmpxchg implicitly assigns old *ptr value to "old" when cmpxchg
fails, enabling further code simplifications.

No functional change intended.

Link: https://lkml.kernel.org/r/20220712144917.4497-1-ubizjak@gmail.com
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/llist.c