69 *sandbox_notif = packed_notif;
72 switch ((*sandbox_notif)->type) {
74 if ((*sandbox_notif)->tag_recv.buffer)
75 (*sandbox_notif)->tag_recv.buffer = ptr;
95 switch (sandbox_cmd->
type) {
117 size_t *packed_cmd_len,
120 void *pack_tail = packed_cmd;
125 if (pack_len > *packed_cmd_len)
131 memcpy(pack_head, sandbox_cmd, pack_len);
132 *packed_cmd_len = pack_len;
135 switch (sandbox_cmd->
type) {
139 memcpy(pack_head, sandbox_cmd->
mem_map.
map_params.exported_memh_buffer, pack_len);
140 *packed_cmd_len += pack_len;
146 memcpy(pack_head, (
void *)sandbox_cmd->
tag_send.
buffer, pack_len);
147 *packed_cmd_len += pack_len;
166 (void)task_user_data;
171 struct doca_buf *response;
178 if (task_data ==
NULL) {
184 if (response ==
NULL) {
204 if (data_len !=
sizeof(*sandbox_notify)) {
205 DOCA_LOG_ERR(
"Task response data length is different from notification expected length");
232 struct doca_buf *payload;
233 struct doca_urom_worker_cmd_task *task;
290 (void)task_user_data;
293 size_t data_len, extended_mem = 0;
295 struct doca_buf *response;
302 if (task_data ==
NULL) {
308 if (response ==
NULL) {
335 if (data_len !=
sizeof(*sandbox_notify) + extended_mem) {
336 DOCA_LOG_ERR(
"Task response data length is different from notification expected length");
369 struct doca_buf *payload;
370 struct doca_urom_worker_cmd_task *task;
427 (void)task_user_data;
432 struct doca_buf *response;
439 if (task_data ==
NULL) {
445 if (response ==
NULL) {
465 if (data_len !=
sizeof(*sandbox_notify)) {
466 DOCA_LOG_ERR(
"Task response data length is different from notification expected length");
484 ucp_mem_map_params_t map_params,
485 size_t exported_memh_buffer_len,
490 struct doca_buf *payload;
491 struct doca_urom_worker_cmd_task *task;
512 memcpy(&sandbox_cmd->
mem_map.
map_params, &map_params,
sizeof(ucp_mem_map_params_t));
static const char tag[DOCA_VFS_TAG_SIZE+1]
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_sandbox_recv_finished recv_cb
urom_sandbox_mem_map_finished mem_map_cb
urom_sandbox_send_finished send_cb
struct urom_worker_sandbox_notify_mem_map mem_map
struct urom_worker_sandbox_notify_tag_recv tag_recv
struct urom_worker_sandbox_notify_tag_send tag_send
size_t exported_memh_buffer_len
ucp_mem_map_params_t map_params
struct urom_worker_sandbox_cmd_tag_send tag_send
struct urom_worker_sandbox_cmd_tag_recv tag_recv
struct urom_worker_sandbox_cmd_mem_map mem_map
Convenience type for representing opaque data.
#define urom_sandbox_serialize_next_raw(_iter, _type, _offset)
@ UROM_WORKER_CMD_SANDBOX_MEM_MAP
@ UROM_WORKER_CMD_SANDBOX_TAG_RECV
@ UROM_WORKER_CMD_SANDBOX_TAG_SEND
doca_error_t urom_sandbox_tag_task_send(struct doca_urom_worker *worker_ctx, union doca_data cookie, union doca_data context, uint64_t dest, uint64_t buffer, uint64_t count, uint64_t tag, uint64_t memh_id, urom_sandbox_send_finished cb)
DOCA_LOG_REGISTER(UROM::WORKER::SANDBOX)
doca_error_t urom_sandbox_init(uint64_t plugin_id, uint64_t version)
static uint64_t sandbox_id
static doca_error_t urom_worker_sandbox_cmd_pack(struct urom_worker_sandbox_cmd *sandbox_cmd, size_t *packed_cmd_len, void *packed_cmd)
doca_error_t urom_sandbox_task_mem_map(struct doca_urom_worker *worker_ctx, union doca_data cookie, union doca_data context, ucp_mem_map_params_t map_params, size_t exported_memh_buffer_len, urom_sandbox_mem_map_finished cb)
static size_t urom_worker_sandbox_cmd_packed_len(struct urom_worker_sandbox_cmd *sandbox_cmd)
static void urom_sandbox_recv_completed(struct doca_urom_worker_cmd_task *task, union doca_data task_user_data, union doca_data ctx_user_data)
doca_error_t urom_sandbox_tag_task_recv(struct doca_urom_worker *worker_ctx, union doca_data cookie, union doca_data context, uint64_t buffer, uint64_t count, uint64_t tag, uint64_t tag_mask, uint64_t memh_id, urom_sandbox_recv_finished cb)
static uint64_t sandbox_version
static doca_error_t urom_worker_sandbox_notif_unpack(void *packed_notif, struct urom_worker_notify_sandbox **sandbox_notif)
static void urom_sandbox_mem_map_completed(struct doca_urom_worker_cmd_task *task, union doca_data task_user_data, union doca_data ctx_user_data)
static void urom_sandbox_send_completed(struct doca_urom_worker_cmd_task *task, union doca_data task_user_data, union doca_data ctx_user_data)
void(* urom_sandbox_recv_finished)(doca_error_t result, union doca_data cookie, union doca_data context, void *buffer, uint64_t count, uint64_t sender_tag, ucs_status_t status)
void(* urom_sandbox_send_finished)(doca_error_t result, union doca_data cookie, union doca_data context, ucs_status_t status)
void(* urom_sandbox_mem_map_finished)(doca_error_t result, union doca_data cookie, union doca_data context, uint64_t memh_id)