aboutsummaryrefslogtreecommitdiff
path: root/offload/liboffload/API/Queue.td
diff options
context:
space:
mode:
Diffstat (limited to 'offload/liboffload/API/Queue.td')
-rw-r--r--offload/liboffload/API/Queue.td48
1 files changed, 33 insertions, 15 deletions
diff --git a/offload/liboffload/API/Queue.td b/offload/liboffload/API/Queue.td
index 7e4c5b8..ededa9c 100644
--- a/offload/liboffload/API/Queue.td
+++ b/offload/liboffload/API/Queue.td
@@ -10,8 +10,7 @@
//
//===----------------------------------------------------------------------===//
-def : Function {
- let name = "olCreateQueue";
+def olCreateQueue : Function {
let desc = "Create a queue for the given device.";
let details = [];
let params = [
@@ -21,8 +20,7 @@ def : Function {
let returns = [];
}
-def : Function {
- let name = "olDestroyQueue";
+def olDestroyQueue : Function {
let desc = "Destroy the queue and free all underlying resources.";
let details = [
"Any work previously enqueued to the queue is still performed and any events generated for this queue remain valid."
@@ -33,8 +31,7 @@ def : Function {
let returns = [];
}
-def : Function {
- let name = "olSyncQueue";
+def olSyncQueue : Function {
let desc = "Block the calling thread until the enqueued work on a queue is complete.";
let details = [];
let params = [
@@ -43,8 +40,7 @@ def : Function {
let returns = [];
}
-def : Function {
- let name = "olWaitEvents";
+def olWaitEvents : Function {
let desc = "Make any future work submitted to this queue wait until the provided events are complete.";
let details = [
"All events in `Events` must complete before the queue is unblocked.",
@@ -60,17 +56,16 @@ def : Function {
];
}
-def : Enum {
- let name = "ol_queue_info_t";
+def ol_queue_info_t : Enum {
let desc = "Supported queue info.";
let is_typed = 1;
let etors = [
- TaggedEtor<"DEVICE", "ol_device_handle_t", "The handle of the device associated with the queue.">
+ TaggedEtor<"DEVICE", "ol_device_handle_t", "The handle of the device associated with the queue.">,
+ TaggedEtor<"EMPTY", "bool", "True if the queue is known to be empty. May be unconditionally false if the device does not support status queries.">,
];
}
-def : Function {
- let name = "olGetQueueInfo";
+def olGetQueueInfo : Function {
let desc = "Queries the given property of the queue.";
let details = [
"`olGetQueueInfoSize` can be used to query the storage size "
@@ -94,8 +89,7 @@ def : Function {
];
}
-def : Function {
- let name = "olGetQueueInfoSize";
+def olGetQueueInfoSize : Function {
let desc = "Returns the storage size of the given queue query.";
let details = [];
let params = [
@@ -107,3 +101,27 @@ def : Function {
Return<"OL_ERRC_INVALID_QUEUE">
];
}
+
+def ol_host_function_cb_t : FptrTypedef {
+ let desc = "Host function for use by `olLaunchHostFunction`.";
+ let params = [
+ Param<"void *", "UserData", "user specified data passed into `olLaunchHostFunction`.", PARAM_IN>,
+ ];
+ let return = "void";
+}
+
+def olLaunchHostFunction : Function {
+ let desc = "Enqueue a callback function on the host.";
+ let details = [
+ "The provided function will be called from the same process as the one that called `olLaunchHostFunction`.",
+ "The callback will not run until all previous work submitted to the queue has completed.",
+ "The callback must return before any work submitted to the queue after it is started.",
+ "The callback must not call any liboffload API functions or any backend specific functions (such as Cuda or HSA library functions).",
+ ];
+ let params = [
+ Param<"ol_queue_handle_t", "Queue", "handle of the queue", PARAM_IN>,
+ Param<"ol_host_function_cb_t", "Callback", "the callback function to call on the host", PARAM_IN>,
+ Param<"void *", "UserData", "a pointer that will be passed verbatim to the callback function", PARAM_IN_OPTIONAL>,
+ ];
+ let returns = [];
+}