*PACKAGE*
*PACKAGE*
is set to the CCL package; the
CCL:*WARN-IF-REDEFINE*
and
CCL:*WARN-IF-REDEFINE-KERNEL*
variables are both set
to NIL. The good news is that this environment makes it more
convenient to muck around inside the implementation; that's also
the bad news.
The primary way of calling a foreign function (imported from some shared ibrary) is via the CCL::EXTERNAL-CALL macro:
(CCL::EXTERNAL-CALLentry-name
{arg-spec
arg-val
}* result-spec
)
entry-name
arg-spec
arg-val
arg-spec
result-spec
arg-spec
or :VOID or NIL to
indicate that the EXTERNAL-CALL should return NIL.
Note that under Darwin, the entry-name
of any symbol visible
to C has an underscore prepended; the C function read
would therefore be referenced as "_read".