[project] Generate syscalls from new interface DSL
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
This commit is contained in:
30
definitions/objects/endpoint.def
Normal file
30
definitions/objects/endpoint.def
Normal file
@@ -0,0 +1,30 @@
|
||||
# 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]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user