diff options
Diffstat (limited to 'offload/liboffload/API/Queue.td')
-rw-r--r-- | offload/liboffload/API/Queue.td | 48 |
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 = []; +} |