Lines Matching defs:node
29 struct node *
32 struct node *node;
34 STAILQ_FOREACH(node, &node_list, next)
35 if (strncmp(node->name, name, RTE_NODE_NAMESIZE) == 0)
36 return node;
44 struct node *node;
47 STAILQ_FOREACH(node, &node_list, next) {
48 if (strncmp(node->name, name, RTE_NODE_NAMESIZE) == 0) {
60 struct node *node;
81 sz = sizeof(struct node) + (reg->nb_edges * RTE_NODE_NAMESIZE);
82 node = calloc(1, sz);
83 if (node == NULL) {
90 node->xstats = calloc(1, sz);
91 if (node->xstats == NULL) {
96 node->xstats->nb_xstats = reg->xstats->nb_xstats;
98 if (rte_strscpy(node->xstats->xstat_desc[i], reg->xstats->xstat_desc[i],
103 /* Initialize the node */
104 if (rte_strscpy(node->name, reg->name, RTE_NODE_NAMESIZE) < 0)
106 node->flags = reg->flags;
107 node->process = reg->process;
108 node->init = reg->init;
109 node->fini = reg->fini;
110 node->nb_edges = reg->nb_edges;
111 node->parent_id = reg->parent_id;
113 if (rte_strscpy(node->next_nodes[i], reg->next_nodes[i],
118 node->lcore_id = RTE_MAX_LCORE;
119 node->id = node_id++;
121 /* Add the node at tail */
122 STAILQ_INSERT_TAIL(&node_list, node, next);
125 return node->id;
127 free(node->xstats);
129 free(node);
136 node_clone(struct node *node, const char *name)
142 /* Don't allow to clone a node from a cloned node */
143 if (node->parent_id != RTE_NODE_ID_INVALID) {
148 reg = calloc(1, sizeof(*reg) + (sizeof(char *) * node->nb_edges));
154 if (node->xstats) {
155 reg->xstats = calloc(1, sizeof(*node->xstats) +
156 (node->xstats->nb_xstats * RTE_NODE_XSTAT_DESC_SIZE));
162 for (i = 0; i < node->xstats->nb_xstats; i++)
163 if (rte_strscpy(reg->xstats->xstat_desc[i], node->xstats->xstat_desc[i],
168 /* Clone the source node */
169 reg->flags = node->flags;
170 reg->process = node->process;
171 reg->init = node->init;
172 reg->fini = node->fini;
173 reg->nb_edges = node->nb_edges;
174 reg->parent_id = node->id;
176 for (i = 0; i < node->nb_edges; i++)
177 reg->next_nodes[i] = node->next_nodes[i];
179 /* Naming ceremony of the new node. name is node->name + "-" + name */
180 if (clone_name(reg->name, node->name, name))
195 struct node *node;
198 STAILQ_FOREACH(node, &node_list, next)
199 if (node->id == id)
200 return node_clone(node, name);
209 struct node *node;
211 STAILQ_FOREACH(node, &node_list, next)
212 if (strncmp(node->name, name, RTE_NODE_NAMESIZE) == 0)
213 return node->id;
221 struct node *node;
224 STAILQ_FOREACH(node, &node_list, next)
225 if (node->id == id)
226 return node->name;
235 struct node *node;
238 STAILQ_FOREACH(node, &node_list, next)
239 if (node->id == id)
240 return node->nb_edges;
246 edge_update(struct node *node, struct node *prev, rte_edge_t from,
250 struct node *new_node;
255 from = node->nb_edges;
258 if (from > node->nb_edges) {
264 STAILQ_REMOVE(&node_list, node, node, next);
266 /* Allocate the storage space for new node if required */
268 need_realloc = max_edges > node->nb_edges;
270 sz = sizeof(struct node) + (max_edges * RTE_NODE_NAMESIZE);
271 new_node = realloc(node, sz);
276 node = new_node;
282 if (rte_strscpy(node->next_nodes[i], next_nodes[count],
287 /* Update the linked list to point new node address in prev node */
289 STAILQ_INSERT_AFTER(&node_list, prev, node, next);
291 STAILQ_INSERT_HEAD(&node_list, node, next);
294 node->nb_edges = max_edges;
304 struct node *node;
309 STAILQ_FOREACH(node, &node_list, next) {
310 if (node->id == id) {
311 if (node->nb_edges < size) {
314 node->nb_edges = size;
331 struct node *n, *prev;
351 node_copy_edges(struct node *node, char *next_nodes[])
355 for (i = 0; i < node->nb_edges; i++)
356 next_nodes[i] = node->next_nodes[i];
365 struct node *node;
370 STAILQ_FOREACH(node, &node_list, next) {
371 if (node->id == id) {
373 rc = sizeof(char *) * node->nb_edges;
375 rc = node_copy_edges(node, next_nodes);
388 struct node *node;
393 STAILQ_FOREACH(node, &node_list, next) {
395 node_dump(f, node);
396 } else if (node->id == id) {
397 node_dump(f, node);