From be36671765f098deb41e032b40253967cbd50452 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Thu, 16 Nov 2017 03:07:12 +0100 Subject: [PATCH 08/30] atomic: update documentation RH-Author: David Gibson Message-id: <20171116030732.8560-3-dgibson@redhat.com> Patchwork-id: 77692 O-Subject: [PATCH 02/22] atomic: update documentation Bugzilla: 1481593 RH-Acked-by: Thomas Huth RH-Acked-by: Paolo Bonzini RH-Acked-by: Eduardo Habkost RH-Acked-by: Laurent Vivier From: Paolo Bonzini Signed-off-by: Paolo Bonzini (cherry picked from commit db81b9953761cac71906728fb3dfefce661ab903) Signed-off-by: David Gibson Signed-off-by: Miroslav Rezanina --- docs/devel/atomics.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/devel/atomics.txt b/docs/devel/atomics.txt index 3ef5d85..048e5f2 100644 --- a/docs/devel/atomics.txt +++ b/docs/devel/atomics.txt @@ -63,11 +63,22 @@ operations: typeof(*ptr) atomic_fetch_sub(ptr, val) typeof(*ptr) atomic_fetch_and(ptr, val) typeof(*ptr) atomic_fetch_or(ptr, val) + typeof(*ptr) atomic_fetch_xor(ptr, val) typeof(*ptr) atomic_xchg(ptr, val) typeof(*ptr) atomic_cmpxchg(ptr, old, new) all of which return the old value of *ptr. These operations are -polymorphic; they operate on any type that is as wide as an int. +polymorphic; they operate on any type that is as wide as a pointer. + +Similar operations return the new value of *ptr: + + typeof(*ptr) atomic_inc_fetch(ptr) + typeof(*ptr) atomic_dec_fetch(ptr) + typeof(*ptr) atomic_add_fetch(ptr, val) + typeof(*ptr) atomic_sub_fetch(ptr, val) + typeof(*ptr) atomic_and_fetch(ptr, val) + typeof(*ptr) atomic_or_fetch(ptr, val) + typeof(*ptr) atomic_xor_fetch(ptr, val) Sequentially consistent loads and stores can be done using: -- 1.8.3.1