sig
  type t
  val sem_open :
    string ->
    ?oflags:Unix.open_flag list ->
    ?mode:Unix.file_perm -> ?ival:int -> unit -> Sem.t
  val sem_close : Sem.t -> unit
  val sem_unlink : string -> unit
  val sem_post : Sem.t -> unit
  val sem_wait : Sem.t -> unit
  val sem_trywait : Sem.t -> unit
  val sem_getvalue : Sem.t -> int
  val sem_init :
    ?semop:Sem.t option -> ?pshared:int -> ?ival:int -> unit -> Sem.t
  val sem_destroy : Sem.t -> unit
end