module Syscall_result:sig
..end
Almost no Unix system call returns a negative integer in case of success.
We can use this to encode the result of a system call as either a positive integer
value or -errno
. This allows us to avoid exceptions for dealing with errors such as
EAGAIN
. Indeed, in some context we issue a system call in a tight loop that will
often fail with EAGAIN
and using exceptions to return it is costly.
type'a
t = privateint
with sexp_of
on purpose as it could only print the 'a
value as an
integer. Use <:sexp_of< Int.t >>
or <:sexp_of< Unit.t >>
.module type S =Syscall_result_intf.S
with type 'a syscall_result := 'a t
module type Arg = Syscall_result_intf.Arg
module Make:
module Int:S
with type ok_value := int
module Unit:S
with type ok_value := unit
val create_error : Unix_error.t -> 'a t
val unit : Unit.t
val ignore_ok_value : 'a t -> Unit.t