On Fri, Jan 27, 2017 at 08:01:17AM -0600, Eric Blake wrote:
On 01/27/2017 04:11 AM, Richard W.M. Jones wrote:
>
> Actually OCaml is a real compiled language, and the call from C to
> OCaml code (via caml_callback_exn) is a short piece of asm which
> preserves errno.
Which shows my lack of familiarity with OCaml; but I'm guessing that
also means that OCaml comes with easy ways to directly set errno so that
it will be visible from C.
Actually no, that would be too easy. Failing system calls (in OCaml
code) are turned into exceptions. The exception contains something
which has a 1-1 mapping with the errno, but is not the errno. In
libguestfs we had to do some mappings for those, so it's a pain.
So in fact I'm not sure if errno is preserved properly or if we should
map the Is_exception_result.
Need to think about this - at the moment I'm in the middle of some
customer crisis.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages.
http://libguestfs.org