12345678910111213141516171819202122(** A handle to a linux futex for waiting on a trigger. *)typet:immediatetypecount:immediate(** Returns a futex that may be used to wait on a trigger. A new futex may or may not be
returned by each call to [get]. *)externalget:unit->t@@portable="await_blocking_futex_get"[@@noalloc](** Returns the current count of the futex. *)externalcount:t->count@@portable="await_blocking_futex_count"[@@noalloc](** Increments the count of the futex. Any call to [wait] on the same futex will check
whether the associated trigger has been signaled before suspending the thread. *)externalsignal:t->unit@@portable="await_blocking_futex_signal"[@@noalloc](** Wait until the count of the futex changes by suspending the thread until the futex is
[signal]ed, then return the current count. *)externalwait:t->count:count->count@@portable="await_blocking_futex_wait"