MCPcopy Create free account
hub / github.com/F-Stack/f-stack / node_clone

Function node_clone

dpdk/lib/graph/node.c:118–157  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

116}
117
118static rte_node_t
119node_clone(struct node *node, const char *name)
120{
121 rte_node_t rc = RTE_NODE_ID_INVALID;
122 struct rte_node_register *reg;
123 rte_edge_t i;
124
125 /* Don't allow to clone a node from a cloned node */
126 if (node->parent_id != RTE_NODE_ID_INVALID) {
127 rte_errno = EEXIST;
128 goto fail;
129 }
130
131 reg = calloc(1, sizeof(*reg) + (sizeof(char *) * node->nb_edges));
132 if (reg == NULL) {
133 rte_errno = ENOMEM;
134 goto fail;
135 }
136
137 /* Clone the source node */
138 reg->flags = node->flags;
139 reg->process = node->process;
140 reg->init = node->init;
141 reg->fini = node->fini;
142 reg->nb_edges = node->nb_edges;
143 reg->parent_id = node->id;
144
145 for (i = 0; i < node->nb_edges; i++)
146 reg->next_nodes[i] = node->next_nodes[i];
147
148 /* Naming ceremony of the new node. name is node->name + "-" + name */
149 if (clone_name(reg->name, node->name, name))
150 goto free;
151
152 rc = __rte_node_register(reg);
153free:
154 free(reg);
155fail:
156 return rc;
157}
158
159rte_node_t
160rte_node_clone(rte_node_t id, const char *name)

Callers 1

rte_node_cloneFunction · 0.85

Calls 4

callocFunction · 0.85
clone_nameFunction · 0.85
__rte_node_registerFunction · 0.85
freeFunction · 0.50

Tested by

no test coverage detected