55 size_t *packed_cmd_len,
59 void *pack_head = packed_cmd;
62 if (pack_len > *packed_cmd_len)
66 memcpy(pack_head, graph_cmd, pack_len);
67 *packed_cmd_len = pack_len;
87 struct doca_buf *response;
93 if (task_data ==
NULL) {
100 if (response ==
NULL) {
112 if (data_len !=
sizeof(*graph_notify)) {
113 DOCA_LOG_ERR(
"Task response data length is different from notification expected length");
142 struct doca_buf *payload;
143 struct doca_urom_worker_cmd_task *task;
DOCA_STABLE doca_error_t doca_buf_get_data(const struct doca_buf *buf, void **data)
Get the buffer's data.
DOCA_STABLE doca_error_t doca_buf_get_data_len(const struct doca_buf *buf, size_t *data_len)
Get buffer's data length.
DOCA_STABLE doca_error_t doca_buf_set_data(struct doca_buf *buf, void *data, size_t data_len)
enum doca_error doca_error_t
DOCA API return codes.
DOCA_STABLE const char * doca_error_get_descr(doca_error_t error)
Returns the description string of an error code.
@ DOCA_ERROR_INVALID_VALUE
@ DOCA_ERROR_INITIALIZATION
@ DOCA_ERROR_UNSUPPORTED_VERSION
#define DOCA_LOG_ERR(format,...)
Generates an ERROR application log message.
DOCA_STABLE doca_error_t doca_task_get_status(const struct doca_task *task)
Get task status.
DOCA_STABLE doca_error_t doca_task_submit(struct doca_task *task)
Submit a task to a progress engine.
DOCA_EXPERIMENTAL doca_error_t doca_urom_worker_cmd_task_release(struct doca_urom_worker_cmd_task *task)
Release Worker Command task.
DOCA_EXPERIMENTAL void doca_urom_worker_cmd_task_set_cb(struct doca_urom_worker_cmd_task *task, doca_urom_worker_cmd_task_completion_cb_t cb)
Set Worker Command task callback.
DOCA_EXPERIMENTAL struct doca_buf * doca_urom_worker_cmd_task_get_response(struct doca_urom_worker_cmd_task *task)
Get Worker Command task response.
DOCA_EXPERIMENTAL void * doca_urom_worker_cmd_task_get_user_data(struct doca_urom_worker_cmd_task *task)
Get Worker Command user data to populate.
DOCA_EXPERIMENTAL doca_error_t doca_urom_worker_cmd_task_allocate_init(struct doca_urom_worker *worker_ctx, uint64_t plugin, struct doca_urom_worker_cmd_task **task)
Allocate and initialize Worker Command task.
DOCA_EXPERIMENTAL struct doca_buf * doca_urom_worker_cmd_task_get_payload(struct doca_urom_worker_cmd_task *task)
Get Worker Command task payload.
DOCA_EXPERIMENTAL struct doca_task * doca_urom_worker_cmd_task_as_task(struct doca_urom_worker_cmd_task *task)
This method converts a worker cmd task to doca_task.
urom_graph_loopback_finished user_cb
struct urom_worker_graph_cmd_loopback loopback
struct urom_worker_graph_notify_loopback loopback
Convenience type for representing opaque data.
@ UROM_WORKER_CMD_GRAPH_LOOPBACK
static uint64_t graph_version
doca_error_t urom_graph_init(uint64_t plugin_id, uint64_t version)
static doca_error_t urom_worker_graph_cmd_pack(struct urom_worker_graph_cmd *graph_cmd, size_t *packed_cmd_len, void *packed_cmd)
doca_error_t urom_graph_task_loopback(struct doca_urom_worker *worker_ctx, union doca_data cookie, uint64_t data, urom_graph_loopback_finished cb)
DOCA_LOG_REGISTER(UROM::WORKER::GRAPH)
static void urom_graph_completed(struct doca_urom_worker_cmd_task *task, union doca_data task_user_data, union doca_data ctx_user_data)
void(* urom_graph_loopback_finished)(doca_error_t result, union doca_data cookie, uint64_t data)