[kernel] Simplify mailbox code, and messages

A number of simplifications of mailboxes now that the interface is much
simpler, and synchronous.

* call and respond can now only transfer one handle at a time
* mailbox objects got rid of the message queue, and just have
  wait_queues of blocked threads, and a reply_to map.
* threads now have a message_data struct on them for use by mailboxes
This commit is contained in:
Justin C. Miller
2022-10-14 01:02:56 -07:00
parent e830a3d37b
commit 1a04310f80
12 changed files with 147 additions and 274 deletions

View File

@@ -19,7 +19,7 @@ object mailbox : object {
method call [cap:send] {
param tag uint64 [inout]
param subtag uint64 [inout]
param handles ref object [inout list zero_ok]
param give_handle ref object [inout handle]
}
# Respond to a message sent using call, and wait for another
@@ -29,9 +29,8 @@ object mailbox : object {
method respond [cap:receive] {
param tag uint64 [inout]
param subtag uint64 [inout]
param handles ref object [inout list zero_ok]
param handles_in size
param reply_tag uint16 [inout]
param give_handle ref object [inout handle]
param reply_tag uint64 [inout]
param flags uint64
}
}