Lites 1.1.u2 support for the prototype Flux RPC system

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 support
The 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.


Mike Hibler <mike@cs.utah.edu>
September 6, 1995