Figure 2: Definition of the IPC system call.
IPC(To, FromSpecifier, Timeouts)
Arguments: Returns:
---------------------- -------------
ThreadId To
ThreadId FromSpecifier -> ThreadId From
Word Timeouts
Argument Semantics:
---------------------
To == nilthread
-> IPC includes no send phase
To != nilthread
-> Destination thread and IPC includes a send phase
FromSpecifier == nilthread
-> IPC includes no receive phase
FromSpecifier == anythread
-> Incoming messages are accepted from any thread or hardware interrupts and IPC includes a receive phase
FromSpecifier == anylocalthread
-> Incoming messages are accepted from any thread in the current address space and IPC includes a receive phase
FromSpecifier != (nilthread OR anythread OR anylocalthread)
-> Incoming messages are only accepted from the specified thread and IPC includes a receive phase
Timeouts == RcvTimeout
-> Receive phase waits until either a message transfer starts or the RcvTimeout expires. Ignored for send-only IPC.
Timeouts == SndTimeout
-> If the send timeout expires before the message transfer could start then the IPC operation fails.
Return Semantics:
------------------
From <- Thread ID of the sender. The delivered thread IDs are always local unless they identify a thread running in a different address space.