NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_graph.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES, ALL RIGHTS RESERVED.
3  *
4  * This software product is a proprietary product of NVIDIA CORPORATION &
5  * AFFILIATES (the "Company") and all right, title, and interest in and to the
6  * software product, including all associated intellectual property rights, are
7  * and shall remain exclusively with the Company.
8  *
9  * This software product is governed by the End User License Agreement
10  * provided with the software product.
11  *
12  */
13 
106 #ifndef DOCA_GRAPH_H_
107 #define DOCA_GRAPH_H_
108 
109 #include <stdint.h>
110 #include <stddef.h>
111 
112 #include <doca_compat.h>
113 #include <doca_error.h>
114 #include <doca_types.h>
115 
116 #ifdef __cplusplus
117 extern "C" {
118 #endif
119 
120 struct doca_ctx;
121 struct doca_pe;
122 struct doca_task;
123 
124 struct doca_graph;
125 struct doca_graph_node;
126 struct doca_graph_instance;
127 
138 typedef void (*doca_graph_completion_cb_t)(struct doca_graph_instance *instance,
139  union doca_data instance_user_data,
140  union doca_data graph_user_data);
141 
160 doca_error_t doca_graph_create(struct doca_pe *pe, struct doca_graph **graph);
161 
177 doca_error_t doca_graph_destroy(struct doca_graph *graph);
178 
198 doca_error_t doca_graph_set_conf(struct doca_graph *graph,
199  doca_graph_completion_cb_t graph_completion_cb,
200  doca_graph_completion_cb_t graph_error_cb,
201  uint32_t num_instances);
202 
218 doca_error_t doca_graph_set_user_data(struct doca_graph *graph, union doca_data user_data);
219 
234 doca_error_t doca_graph_get_user_data(const struct doca_graph *graph, union doca_data *user_data);
235 
261  const struct doca_ctx *ctx,
262  struct doca_graph_node **node);
263 
278 
306  struct doca_graph_node **node);
307 
336  struct doca_graph *sub_graph,
337  struct doca_graph_node **node);
338 
362 doca_error_t doca_graph_add_dependency(struct doca_graph *graph,
363  struct doca_graph_node *from,
364  struct doca_graph_node *to);
365 
386 doca_error_t doca_graph_start(struct doca_graph *graph);
387 
403 doca_error_t doca_graph_stop(struct doca_graph *graph);
404 
425 doca_error_t doca_graph_instance_create(const struct doca_graph *graph, struct doca_graph_instance **graph_instance);
426 
443 doca_error_t doca_graph_instance_destroy(struct doca_graph_instance *graph_instance);
444 
460 doca_error_t doca_graph_instance_set_user_data(struct doca_graph_instance *graph_instance, union doca_data user_data);
461 
476 doca_error_t doca_graph_instance_get_user_data(const struct doca_graph_instance *graph_instance,
477  union doca_data *user_data);
478 
506 doca_error_t doca_graph_instance_set_ctx_node_data(struct doca_graph_instance *graph_instance,
507  struct doca_graph_node *node,
508  struct doca_task *task);
509 
533 doca_error_t doca_graph_instance_set_user_node_data(struct doca_graph_instance *graph_instance,
534  struct doca_graph_node *node,
535  void *cookie);
536 
563 doca_error_t doca_graph_instance_set_sub_graph_node_data(struct doca_graph_instance *graph_instance,
564  struct doca_graph_node *node,
565  struct doca_graph_instance *sub_graph_instance);
566 
585 doca_error_t doca_graph_instance_submit(struct doca_graph_instance *graph_instance);
586 
587 #ifdef __cplusplus
588 }
589 #endif
590 
593 #endif /* DOCA_GRAPH_H_ */
uint64_t cookie
static struct doca_pe * pe
#define DOCA_EXPERIMENTAL
To set a Symbol (or specifically a function) as experimental.
Definition: doca_compat.h:103
enum doca_error doca_error_t
DOCA API return codes.
DOCA_EXPERIMENTAL doca_error_t doca_graph_instance_set_ctx_node_data(struct doca_graph_instance *graph_instance, struct doca_graph_node *node, struct doca_task *task)
Set context node data.
void(* doca_graph_completion_cb_t)(struct doca_graph_instance *instance, union doca_data instance_user_data, union doca_data graph_user_data)
Graph completion callback.
Definition: doca_graph.h:138
DOCA_EXPERIMENTAL doca_error_t doca_graph_stop(struct doca_graph *graph)
Stop a graph.
DOCA_EXPERIMENTAL doca_error_t doca_graph_instance_get_user_data(const struct doca_graph_instance *graph_instance, union doca_data *user_data)
Set user data to the graph instance.
DOCA_EXPERIMENTAL doca_error_t doca_graph_instance_set_user_node_data(struct doca_graph_instance *graph_instance, struct doca_graph_node *node, void *cookie)
Set user node data.
DOCA_EXPERIMENTAL doca_error_t doca_graph_instance_destroy(struct doca_graph_instance *graph_instance)
Destroy graph instance.
doca_error_t(* doca_graph_user_node_cb_t)(void *cookie)
User node callback.
Definition: doca_graph.h:277
DOCA_EXPERIMENTAL doca_error_t doca_graph_instance_submit(struct doca_graph_instance *graph_instance)
Submit graph instance to a progress engine.
DOCA_EXPERIMENTAL doca_error_t doca_graph_create(struct doca_pe *pe, struct doca_graph **graph)
Creates a DOCA graph.
DOCA_EXPERIMENTAL doca_error_t doca_graph_set_conf(struct doca_graph *graph, doca_graph_completion_cb_t graph_completion_cb, doca_graph_completion_cb_t graph_error_cb, uint32_t num_instances)
Set graph configuration.
DOCA_EXPERIMENTAL doca_error_t doca_graph_start(struct doca_graph *graph)
Start a graph.
DOCA_EXPERIMENTAL doca_error_t doca_graph_node_create_from_graph(struct doca_graph *graph, struct doca_graph *sub_graph, struct doca_graph_node **node)
Create a sub graph node.
DOCA_EXPERIMENTAL doca_error_t doca_graph_add_dependency(struct doca_graph *graph, struct doca_graph_node *from, struct doca_graph_node *to)
Set dependencies.
DOCA_EXPERIMENTAL doca_error_t doca_graph_node_create_from_ctx(struct doca_graph *graph, const struct doca_ctx *ctx, struct doca_graph_node **node)
Create a context node.
DOCA_EXPERIMENTAL doca_error_t doca_graph_get_user_data(const struct doca_graph *graph, union doca_data *user_data)
Set user data to the graph.
DOCA_EXPERIMENTAL doca_error_t doca_graph_instance_set_sub_graph_node_data(struct doca_graph_instance *graph_instance, struct doca_graph_node *node, struct doca_graph_instance *sub_graph_instance)
Set sub graph node data.
DOCA_EXPERIMENTAL doca_error_t doca_graph_destroy(struct doca_graph *graph)
Destroys a previously created doca_graph.
DOCA_EXPERIMENTAL doca_error_t doca_graph_instance_set_user_data(struct doca_graph_instance *graph_instance, union doca_data user_data)
Set user data to the graph instance.
DOCA_EXPERIMENTAL doca_error_t doca_graph_node_create_from_user(struct doca_graph *graph, doca_graph_user_node_cb_t cb, struct doca_graph_node **node)
Create a user node.
DOCA_EXPERIMENTAL doca_error_t doca_graph_set_user_data(struct doca_graph *graph, union doca_data user_data)
Set user data to the graph.
DOCA_EXPERIMENTAL doca_error_t doca_graph_instance_create(const struct doca_graph *graph, struct doca_graph_instance **graph_instance)
Create a graph instance.
Convenience type for representing opaque data.
Definition: doca_types.h:56
struct upf_accel_ctx * ctx