mirror of
https://github.com/justinian/jsix.git
synced 2025-12-09 16:04:32 -08:00
This change adds a new interface DSL for specifying objects (with methods) and interfaces (that expose objects, and optionally have their own methods). Significant changes: - Add the new scripts/definitions Python module to parse the DSL - Add the new definitions directory containing DSL definition files - Use cog to generate syscall-related code in kernel and libj6 - Unify ordering of pointer + length pairs in interfaces
31 lines
739 B
Modula-2
31 lines
739 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]
|
|
}
|
|
|
|
# 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]
|
|
}
|
|
}
|