package ocaml_intrinsics

  1. Overview
  2. Docs

fetch_and_$op_$type ptr ~pos val atomically runs *( *$type )((ptr + pos) $op val, stores the result at ptr + pos, and returns the original value at ptr + pos.

Note that pos is a byte offset into the bigstring. If the offset is not a multiple of the target int width in bytes, the operation will be unaligned and potentially *much* slower than the aligned case.

Pointer to untagged int

val fetch_and_add : Bigstring_intf.t -> pos:int -> int -> int
val fetch_and_sub : Bigstring_intf.t -> pos:int -> int -> int
val compare_and_swap : Bigstring_intf.t -> pos:int -> compare_with:int -> set_to:int -> bool

Pointer to unboxed int64

val fetch_and_add_int64 : Bigstring_intf.t -> pos:int -> int64 -> int64
val fetch_and_sub_int64 : Bigstring_intf.t -> pos:int -> int64 -> int64
val compare_and_swap_int64 : Bigstring_intf.t -> pos:int -> compare_with:int64 -> set_to:int64 -> bool

Pointer to unboxed int32

val fetch_and_add_int32 : Bigstring_intf.t -> pos:int -> int32 -> int32
val fetch_and_sub_int32 : Bigstring_intf.t -> pos:int -> int32 -> int32
val compare_and_swap_int32 : Bigstring_intf.t -> pos:int -> compare_with:int32 -> set_to:int32 -> bool

Pointer to unboxed nativeint

val fetch_and_add_nativeint : Bigstring_intf.t -> pos:int -> nativeint -> nativeint
val fetch_and_sub_nativeint : Bigstring_intf.t -> pos:int -> nativeint -> nativeint
val compare_and_swap_nativeint : Bigstring_intf.t -> pos:int -> compare_with:nativeint -> set_to:nativeint -> bool
OCaml

Innovation. Community. Security.