SIMPL


Synchronous Interprocess Messaging Project for LINUX is a free and open-source project that allows QNX-style synchronous message passing by adding a Linux library using user space techniques like shared memory and Unix pipes to implement SendMssg/ReceiveMssg/ReplyMssg inter-process messaging mechanisms.

Mechanism

A client thread sending a message is BLOCKED until the server thread sends a received message acknowledgement, processes the message, and executes a reply. When the server thread replies the client thread becomes READY. The server thread typically loops, waiting to receive a message from a client thread.
Blocking synchronizes the client thread execution, blocking it and implicitly schedules the server thread to be scheduled for execution without requiring explicit process control work by the kernel to determine which thread to run next as with other forms of IPC.
The send and receive operations are blocking and synchronous, reply doesn't block, the client thread is already blocked waiting for the reply and no additional synchronization is required. The server thread replies to the client and continues running while the kernel and/or networking code asynchronously passes the reply data to the client thread and marks it READY for execution.

Advantages of Synchronized Message Passing

Synchronized Message Passing has the following advantages:
There is one other QNX inspired synchronous message passing projects available for Linux. SRR IPC by Sam Roberts and Andrew Thomas of which is related to the SIMPL project and adds a QNX compatible API layer. SRR is a loadable kernel module designed to be QNX API compatible to facilitate porting of code.