diff options
author | Guillaume Munch-Maccagnoni <Guillaume.Munch-Maccagnoni@inria.fr> | 2023-04-18 15:53:53 +0200 |
---|---|---|
committer | Guillaume Munch-Maccagnoni <Guillaume.Munch-Maccagnoni@inria.fr> | 2023-04-18 17:41:17 +0200 |
commit | 4d5d29b6f6a005eed05a8b1d7c1fb8c710a760b8 (patch) | |
tree | c51e6d5e6a3d3d99b3fc4c4cd954a63efe6e4401 | |
parent | 250c12c478fb69af40e3c5f0662356271754a89b (diff) | |
download | ocaml-4d5d29b6f6a005eed05a8b1d7c1fb8c710a760b8.tar.gz |
Make atomic_* helpers polymorphic
-rw-r--r-- | runtime/caml/platform.h | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/runtime/caml/platform.h b/runtime/caml/platform.h index 77027405be..4d8431b3d9 100644 --- a/runtime/caml/platform.h +++ b/runtime/caml/platform.h @@ -49,27 +49,16 @@ Caml_inline void cpu_relax(void) { #endif } -/* Loads and stores with acquire and release semantics respectively */ - -Caml_inline uintnat atomic_load_acq(atomic_uintnat* p) -{ - return atomic_load_explicit(p, memory_order_acquire); -} - -Caml_inline uintnat atomic_load_relaxed(atomic_uintnat* p) -{ - return atomic_load_explicit(p, memory_order_relaxed); -} - -Caml_inline void atomic_store_rel(atomic_uintnat* p, uintnat v) -{ - atomic_store_explicit(p, v, memory_order_release); -} - -Caml_inline void atomic_store_relaxed(atomic_uintnat* p, uintnat v) -{ - atomic_store_explicit(p, v, memory_order_relaxed); -} +/* Loads and stores with acquire, release and relaxed semantics */ + +#define atomic_load_acq(p) \ + atomic_load_explicit((p), memory_order_acquire) +#define atomic_load_relaxed(p) \ + atomic_load_explicit((p), memory_order_relaxed) +#define atomic_store_rel(p, v) \ + atomic_store_explicit((p), (v), memory_order_release) +#define atomic_store_relaxed(p, v) \ + atomic_store_explicit((p), (v), memory_order_relaxed) /* Spin-wait loops */ |