[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