X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=doc%2Fuatomic-api.md;h=84b97166cef4c2ec81cdf61734eb6f2d1d5fe6b1;hb=d001c88633f6a58e94eb73f4814976d13f61bd77;hp=2dd63c6c76f88b332b0e00595c4e1ffab25fbb2c;hpb=dcb9c05a081e2c8d4fe0250f3700e3efb1200cac;p=urcu.git diff --git a/doc/uatomic-api.md b/doc/uatomic-api.md index 2dd63c6..84b9716 100644 --- a/doc/uatomic-api.md +++ b/doc/uatomic-api.md @@ -1,3 +1,9 @@ + + Userspace RCU Atomic Operations API =================================== @@ -27,7 +33,7 @@ API --- ```c -void uatomic_set(type *addr, type v) +void uatomic_set(type *addr, type v); ``` Atomically write `v` into `addr`. By "atomically", we mean that no @@ -36,7 +42,7 @@ effects of `uatomic_set()`. ```c -type uatomic_read(type *addr) +type uatomic_read(type *addr); ``` Atomically read `v` from `addr`. By "atomically", we mean that @@ -45,42 +51,42 @@ uatomic update. ```c -type uatomic_cmpxchg(type *addr, type old, type new) +type uatomic_cmpxchg(type *addr, type old, type new); ``` An atomic read-modify-write operation that performs this sequence of operations atomically: check if `addr` contains `old`. If true, then replace the content of `addr` by `new`. Return the -value previously contained by `addr`. This function imply a full +value previously contained by `addr`. This function implies a full memory barrier before and after the atomic operation. ```c -type uatomic_xchg(type *addr, type new) +type uatomic_xchg(type *addr, type new); ``` An atomic read-modify-write operation that performs this sequence of operations atomically: replace the content of `addr` by `new`, and return the value previously contained by `addr`. This -function imply a full memory barrier before and after the atomic +function implies a full memory barrier before and after the atomic operation. ```c -type uatomic_add_return(type *addr, type v) -type uatomic_sub_return(type *addr, type v) +type uatomic_add_return(type *addr, type v); +type uatomic_sub_return(type *addr, type v); ``` An atomic read-modify-write operation that performs this sequence of operations atomically: increment/decrement the content of `addr` by `v`, and return the resulting value. This -function imply a full memory barrier before and after the atomic +function implies a full memory barrier before and after the atomic operation. ```c -void uatomic_and(type *addr, type mask) -void uatomic_or(type *addr, type mask) +void uatomic_and(type *addr, type mask); +void uatomic_or(type *addr, type mask); ``` Atomically write the result of bitwise "and"/"or" between the @@ -95,8 +101,8 @@ atomic instructions implicitly supply the needed memory barriers. ```c -void uatomic_add(type *addr, type v) -void uatomic_sub(type *addr, type v) +void uatomic_add(type *addr, type v); +void uatomic_sub(type *addr, type v); ``` Atomically increment/decrement the content of `addr` by `v`. @@ -110,8 +116,8 @@ instructions implicitly supply the needed memory barriers. ```c -void uatomic_inc(type *addr) -void uatomic_dec(type *addr) +void uatomic_inc(type *addr); +void uatomic_dec(type *addr); ``` Atomically increment/decrement the content of `addr` by 1.