Representation of Unix system call results
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.
There is no 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 >>.