Repository navigation
Conversation
SYS_MESSAGE_CALL is SYS_MESSAGE_SEND and then a blocking SYS_MESSAGE_RECV on the same connection, in one syscall. A refused send answers as a send does with nothing sent; once the request is queued the receive answers as a receive does, into the same two windows. A protocol whose peer answers each request in turn makes the next message its answer. The request carries no handles: an error could come from either half, so a caller could not know whether they had moved. The call no longer tells the scheduler that its caller parks next: #1111 dropped WakeCause::parks_next (e938fe3), and #1129's waker-LLC affinity carries the waker on every wake instead. What is left is one syscall entry and exit per round trip. Consumers: the file server's client (toyos::fs's request and reply) and osbench's ipc.reqrep rows, whose request's last frame and answer's first are one call. Connection::call takes the answer straight into the caller's buffer, as recv_into does. messages_are_whole checks that a call takes the answer its peer sends, with the answer's handle, split across both windows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
Closing this, by the orchestrator's decision. #1111 dropped
That saving does not earn a permanent syscall number and a second send path ("Code is liability"). The branch |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft, stacked on #1121 (base
ipc-messages). It needs a keep-or-drop decision before more work goes into it.What it does
SYS_MESSAGE_CALLisSYS_MESSAGE_SENDfollowed by a blockingSYS_MESSAGE_RECVon the same connection, in one syscall.Connection::calltakes the answer straight into the caller's buffer, asrecv_intodoes.toyos::fs's request and reply) and osbench'sipc.reqreprows.messages_are_wholechecks that a call takes its peer's answer, with the answer's handle, split across both windows.Why it may not earn its place
The call was meant to tell the scheduler that its caller parks next, so the callee could run where the caller leaves (
WakeCause::parks_next).e938fe3e5): no caller set it. sched: a woken partner follows its waker's LLC #1129's waker-LLC affinity carries the waker on every wake instead.ipc.reqrep.8and nothing on the fs rows. The profile showed the hint never reached the file server, which waits through poll delivery.ipc.reqrep.*and the fs rows, with the rule stated before the run.Checks at
6ffcb2402cargo run -- --ci host: exit 0, 107/107.cargo run -- --build-only: exit 0.--debugtestcases boot at6ffcb2402: exit 0.messages_are_whole(with the call's split answer) andconnect_before_serveexited 0. Everytoyos::fsrequest in that boot goes through the call.parks_nextand failed to compile against IPC phase 2: a connection carries whole messages #1121's tree. That is why the hint is out.🤖 Generated with Claude Code