A few questions:

 - Where are docs for how to use nv_*()?
 - Does errormsg() produce non-local exits?  (my experiments say "yes")

   Are there docs for all ksh93 internals that builtin authors are
   allowed to use?  If so, where?

 - Is there any way to write builtins portably to Bash and ksh93
   equally?

 - How would one go about integrating more Solaris-specific builtins?

   I'm interested in integrating builtins for:

    - event ports
    - pipe(2)
    - sockets

I have a webrev for Solaris event ports builtins right now, and it
works:

http://cr.opensolaris.org/~nico/onnv-ksh93-w-evport/

With this you can access the file event monitor facility directly from
the shell:

% builtin -f $ROOT/usr/lib/amd64/libshell.so.1 evport evport_create open
% close evport_assoc evport_dissoc evport_get stat date
% evport create p
% ev=(events=FILE_MODIFIED user=1234567 src=file fo_name=/tmp)
% nev=()
% evport assoc p ev
% evport get p nev
% print $nev
( fo_name=/tmp revents=FILE_MODIFIED src=PORT_SOURCE_FILE user=1234567 )
% 

Alert, timers and user-defined event sources not yet supported.  I doubt
I'd ever bother with MQ event sources, and AIO makes no sense in the
shell.  (Also, the timeout handling is broken, so don't pass a timeout
to evport_get yet.)

Along the same lines one might add builtins for interfacing to libevent.
That would be portable, unlike the event port scheme, though it wouldn't
include a FEM interface (I think).

Nico
-- 

Reply via email to