send_ipc

Function send_ipc 

Source
pub fn send_ipc(target: TaskHandle, length: u8) -> Status
Expand description

Send events to another job identified by its handle

§description

This syscall emit a short message through the SVC Exchange memory that target another job identified by its handle.

The IPC message content must be stored ‘as is’ in the SVC exchange memory before calling this syscall. The message length must be shorter than the SVC Exchange area.

send_ipc() is a blocking syscall. The current job is preempted and will be eligible again only if:

  • the target job reads the IPC content using wait_for_event
  • the target job terminates

This syscall synchronously returns Status::Invalid If the target job handle is not found. This syscall synchronously returns Status::Invalid if the specified message len is bigger than This syscall returns Status::Intr if the target terminates while the IPC message is not yet read. This syscall returns Status::Ok once the target as read the IPC message.

Note: This syscall do not clear the SVC Exchange area.

There is no timeout notion in IPC emission, meaning that a given job can stay in a blocking state forever while the target neither read the emitted IPC nor terminates.

§examples

uapi::send_ipc(TargetTaskh, IpcLen)?continue_here;