2
0

atomic.odin 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package sync
  2. import "base:intrinsics"
  3. cpu_relax :: intrinsics.cpu_relax
  4. /*
  5. Atomic_Memory_Order :: enum {
  6. Relaxed = 0, // Unordered
  7. Consume = 1, // Monotonic
  8. Acquire = 2,
  9. Release = 3,
  10. Acq_Rel = 4,
  11. Seq_Cst = 5,
  12. }
  13. */
  14. Atomic_Memory_Order :: intrinsics.Atomic_Memory_Order
  15. atomic_thread_fence :: intrinsics.atomic_thread_fence
  16. atomic_signal_fence :: intrinsics.atomic_signal_fence
  17. atomic_store :: intrinsics.atomic_store
  18. atomic_store_explicit :: intrinsics.atomic_store_explicit
  19. atomic_load :: intrinsics.atomic_load
  20. atomic_load_explicit :: intrinsics.atomic_load_explicit
  21. atomic_add :: intrinsics.atomic_add
  22. atomic_add_explicit :: intrinsics.atomic_add_explicit
  23. atomic_sub :: intrinsics.atomic_sub
  24. atomic_sub_explicit :: intrinsics.atomic_sub_explicit
  25. atomic_and :: intrinsics.atomic_and
  26. atomic_and_explicit :: intrinsics.atomic_and_explicit
  27. atomic_nand :: intrinsics.atomic_nand
  28. atomic_nand_explicit :: intrinsics.atomic_nand_explicit
  29. atomic_or :: intrinsics.atomic_or
  30. atomic_or_explicit :: intrinsics.atomic_or_explicit
  31. atomic_xor :: intrinsics.atomic_xor
  32. atomic_xor_explicit :: intrinsics.atomic_xor_explicit
  33. atomic_exchange :: intrinsics.atomic_exchange
  34. atomic_exchange_explicit :: intrinsics.atomic_exchange_explicit
  35. // Returns value and optional ok boolean
  36. atomic_compare_exchange_strong :: intrinsics.atomic_compare_exchange_strong
  37. atomic_compare_exchange_strong_explicit :: intrinsics.atomic_compare_exchange_strong_explicit
  38. atomic_compare_exchange_weak :: intrinsics.atomic_compare_exchange_weak
  39. atomic_compare_exchange_weak_explicit :: intrinsics.atomic_compare_exchange_weak_explicit