[Larceny-users] on porting to larceny

William D Clinger will at ccs.neu.edu
Tue Dec 30 16:03:17 EST 2008


Felix wrote:
> There are syscalls for fetching or modifying the system errno
> "variable/global state" directly.
>
> Unfortunately, I don't think they're currently documented (or
> even used).

Or even	exported.

As an extremely	temporary measure (to be fixed within a
few days), Marco can use the following definitions:

  (define (get-errno)
    (syscall 47))

  (define (set-errno! n)
    (assert (fixnum? n))
    (syscall 48 n))

The magic numbers 47 and 48 might change, but Larceny will
provide	its own	definitions of those two procedures before
the magic numbers change.

> Perhaps the existing strategy of
> implementing errno accessors as syscalls is bad, and we should
> instead put localized state into different components of the
> runtime (or at least isolate the errno of the ffi...)

The errno business is a	crock, but it's	C's crock so we	
have to	respect	it.  In	C, everything preserves	a nonzero
errno; that's true of Larceny as well.	In C, any call to
any function that might end up calling a C function that
can set	errno can set errno; that too is true of Larceny.

So I believe Larceny's current semantics for get-errno and
set-errno! (as implemented above) is the right semantics.
We should export it and document it.

Will



More information about the Larceny-users mailing list