Skip to main content

call

Function call 

Source
pub fn call(
    target: CapHandle,
    reply_grant: CapHandle,
    recv: CapHandle,
    request: &Message,
) -> Result<Message, IpcError>
Expand description

Synchronous CALL (syscall 41): send request to target carrying reply_grant as a one-shot reply cap, then block on recv (the caller’s own endpoint, where the reply lands) until the peer replies OR the peer’s endpoint dies. Returns the reply, Err(ReplyDead) if the peer died before replying, Err(EndpointDead) if the peer was already dead when the request was sent, or another IpcError on a failed send.

This waits on truth, not on time (Commandment VIII): a peer that dies mid-request wakes the caller with ReplyDead (the reply-side twin of EndpointDead, §8.6) instead of hanging it - no timer, no fixed yield count. The buffer is in/out: the request is read from it, and the kernel writes the reply back into the same buffer.