We are currently undergoing a major acronym transition period (ATP) so this note and the code itself might be a bit confusing. Basically, for the purposes of this note/code: ``flux'' == ``mach4'' and ``flick'' == ``mom''.
Part of the
Flux project
is a new, simple and fast RPC system which uses
migrating threads.
``Messages'' have a fixed format with simple messages
transferred entirely in registers. A message consists of a fixed number of
integer (natural_t) parameters, a descriptor for a single port right,
and a descriptor for an arbitrary-size block of memory. Out-of-line memory
transfers and transfers of port rights in memory are not supported.
Flick, the "Flux IDL Compiler Kit," is used to translate Mig .defs
files to Flux RPC stubs.
Currently, the new RPC support exists only in the PA-RISC version of
the kernel, which will be available soon.
There are two components of Flux RPC support in Lites. First is support
for using migrating threads. This involves creating ``activations'' and
registering them with the Mach4 kernel. This support is ifdef'ed under
USEACTIVATIONS
. Defining this also enables use of the original,
mach_msg-compatible migrating threads RPC path. The second part, ifdef'ed
under USENRPC
, compiles in the Flick generated stubs for using
the new RPC
path. These stubs are currently static and part of the source tree, but
will be generated at build time once Flick is ready for prime time. Note
that not all Lites interfaces can use the new RPC path.
Possible Lites configurations to include the new support:
STD+WS+ACT mach_msg compatible migrating thread support STD+WS+ACT+NRPC above, plus new RPC supportThe last configuration will use the new RPC path where a stub exists. Otherwise it will use a Mig stub which might still use the old mach_msg compatible migrating threads RPC path or, failing that, the standard Mach IPC path. The final two configuration require a Mach4 kernel, while the final configuration requires a Mach4 kernel with
USENRPC
defined.
Needless to say, this is all still highly experimental and consequently rather unstable. Use at your own risk.