[PATCH v1 04/13] graph: add get/set graph worker model APIs
Zhirun Yan
zhirun.yan at intel.com
Thu Nov 17 06:09:17 CET 2022
Add new get/set APIs to configure graph worker model which is used to
determine which model will be chosen.
Signed-off-by: Haiyue Wang <haiyue.wang at intel.com>
Signed-off-by: Cunming Liang <cunming.liang at intel.com>
Signed-off-by: Zhirun Yan <zhirun.yan at intel.com>
---
lib/graph/rte_graph_worker.h | 51 +++++++++++++++++++++++++++++
lib/graph/rte_graph_worker_common.h | 13 ++++++++
lib/graph/version.map | 3 ++
3 files changed, 67 insertions(+)
diff --git a/lib/graph/rte_graph_worker.h b/lib/graph/rte_graph_worker.h
index 54d1390786..a0ea0df153 100644
--- a/lib/graph/rte_graph_worker.h
+++ b/lib/graph/rte_graph_worker.h
@@ -1,5 +1,56 @@
#include "rte_graph_model_rtc.h"
+static enum rte_graph_worker_model worker_model = RTE_GRAPH_MODEL_DEFAULT;
+
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
+ * Set the graph worker model
+ *
+ * @note This function does not perform any locking, and is only safe to call
+ * before graph running.
+ *
+ * @param name
+ * Name of the graph worker model.
+ *
+ * @return
+ * 0 on success, -1 otherwise.
+ */
+__rte_experimental
+static inline int
+rte_graph_worker_model_set(enum rte_graph_worker_model model)
+{
+ if (model >= RTE_GRAPH_MODEL_MAX)
+ goto fail;
+
+ worker_model = model;
+ return 0;
+
+fail:
+ worker_model = RTE_GRAPH_MODEL_DEFAULT;
+ return -1;
+}
+
+/**
+ * @warning
+ * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
+ *
+ * Get the graph worker model
+ *
+ * @param name
+ * Name of the graph worker model.
+ *
+ * @return
+ * Graph worker model on success.
+ */
+__rte_experimental
+static inline
+enum rte_graph_worker_model
+rte_graph_worker_model_get(void)
+{
+ return worker_model;
+}
+
/**
* Perform graph walk on the circular buffer and invoke the process function
* of the nodes and collect the stats.
diff --git a/lib/graph/rte_graph_worker_common.h b/lib/graph/rte_graph_worker_common.h
index df33204336..507a344afd 100644
--- a/lib/graph/rte_graph_worker_common.h
+++ b/lib/graph/rte_graph_worker_common.h
@@ -86,6 +86,19 @@ struct rte_node {
struct rte_node *nodes[] __rte_cache_min_aligned; /**< Next nodes. */
} __rte_cache_aligned;
+
+
+/** Graph worker models */
+enum rte_graph_worker_model {
+#define WORKER_MODEL_DEFAULT "default"
+ RTE_GRAPH_MODEL_DEFAULT = 0,
+#define WORKER_MODEL_RTC "rtc"
+ RTE_GRAPH_MODEL_RTC,
+#define WORKER_MODEL_GENERIC "generic"
+ RTE_GRAPH_MODEL_GENERIC,
+ RTE_GRAPH_MODEL_MAX,
+};
+
/**
* @internal
*
diff --git a/lib/graph/version.map b/lib/graph/version.map
index 13b838752d..eea73ec9ca 100644
--- a/lib/graph/version.map
+++ b/lib/graph/version.map
@@ -43,5 +43,8 @@ EXPERIMENTAL {
rte_node_next_stream_put;
rte_node_next_stream_move;
+ rte_graph_worker_model_set;
+ rte_graph_worker_model_get;
+
local: *;
};
--
2.25.1
More information about the dev
mailing list