This also required adding support for multiple wait conditions on a thread, so wait_type is an enum_bitfield now. I really need a real clock.
33 lines
871 B
Modula-2
33 lines
871 B
Modula-2
# Channels are objects that enable synchronous IPC of
|
|
# arbitrary-sized messages.
|
|
|
|
object endpoint : kobject {
|
|
uid c5882f24a4c03b7e
|
|
|
|
method create [constructor]
|
|
|
|
# Send a message on a channel. Blocks until the message
|
|
# is received.
|
|
method send {
|
|
param tag uint64
|
|
param data buffer
|
|
}
|
|
|
|
# Receieve a message on a channel. Blocks until a message
|
|
# is available.
|
|
method receive {
|
|
param tag uint64 [out]
|
|
param data buffer [out]
|
|
param timeout uint64 # Receive timeout in nanoseconds
|
|
}
|
|
|
|
# Send a message on a channel and then await a new message.
|
|
# Equivalent to calling send and then recieve, as a single
|
|
# operation.
|
|
method sendrecv {
|
|
param tag uint64 [inout]
|
|
param data buffer [inout]
|
|
param timeout uint64 # Receive timeout in nanoseconds
|
|
}
|
|
}
|