Lines Matching refs:node

27 	struct lockdep_node *node = NULL;  in lockdep_add_to_graph()  local
30 TAILQ_FOREACH(node, graph, link) in lockdep_add_to_graph()
31 if (node->lock_id == lock_id) in lockdep_add_to_graph()
32 return node; in lockdep_add_to_graph()
34 node = calloc(1, sizeof(*node)); in lockdep_add_to_graph()
35 if (!node) in lockdep_add_to_graph()
38 node->lock_id = lock_id; in lockdep_add_to_graph()
39 STAILQ_INIT(&node->edges); in lockdep_add_to_graph()
40 TAILQ_INSERT_TAIL(graph, node, link); in lockdep_add_to_graph()
42 return node; in lockdep_add_to_graph()
102 struct lockdep_node *node; member
128 static uintptr_t *lockdep_graph_get_shortest_cycle(struct lockdep_node *node) in lockdep_graph_get_shortest_cycle() argument
135 node->flags |= LOCKDEP_NODE_BFS_VISITED; in lockdep_graph_get_shortest_cycle()
140 qe->node = node; in lockdep_graph_get_shortest_cycle()
144 qe->path[0] = node->lock_id; in lockdep_graph_get_shortest_cycle()
153 n = qe->node; in lockdep_graph_get_shortest_cycle()
157 if (e->to->lock_id == node->lock_id) { in lockdep_graph_get_shortest_cycle()
189 nqe->node = e->to; in lockdep_graph_get_shortest_cycle()
211 static TEE_Result lockdep_visit(struct lockdep_node *node) in lockdep_visit() argument
215 if (node->flags & LOCKDEP_NODE_PERM_MARK) in lockdep_visit()
218 if (node->flags & LOCKDEP_NODE_TEMP_MARK) in lockdep_visit()
221 node->flags |= LOCKDEP_NODE_TEMP_MARK; in lockdep_visit()
223 STAILQ_FOREACH(e, &node->edges, link) { in lockdep_visit()
230 node->flags |= LOCKDEP_NODE_PERM_MARK; in lockdep_visit()
236 struct lockdep_node *node = NULL; in lockdep_graph_sort() local
238 TAILQ_FOREACH(node, graph, link) { in lockdep_graph_sort()
239 if (!node->flags) { in lockdep_graph_sort()
241 TEE_Result res = lockdep_visit(node); in lockdep_graph_sort()
248 TAILQ_FOREACH(node, graph, link) in lockdep_graph_sort()
249 node->flags = 0; in lockdep_graph_sort()
257 struct lockdep_node *node = NULL; in lockdep_find_edge() local
260 TAILQ_FOREACH(node, graph, link) in lockdep_find_edge()
261 if (node->lock_id == from) in lockdep_find_edge()
262 STAILQ_FOREACH(edge, &node->edges, link) in lockdep_find_edge()
293 struct lockdep_node *node) in lockdep_print_cycle_info() argument
301 cycle = lockdep_graph_get_shortest_cycle(node); in lockdep_print_cycle_info()
338 struct lockdep_node *node = lockdep_add_to_graph(graph, id); in __lockdep_lock_acquire() local
343 if (!node) in __lockdep_lock_acquire()
349 res = lockdep_add_edge(lock->node, node, lock->call_stack, in __lockdep_lock_acquire()
359 lockdep_print_cycle_info(graph, node); in __lockdep_lock_acquire()
367 lock->node = node; in __lockdep_lock_acquire()
383 struct lockdep_node *node = lockdep_add_to_graph(graph, id); in __lockdep_lock_tryacquire() local
387 if (!node) in __lockdep_lock_tryacquire()
396 lock->node = node; in __lockdep_lock_tryacquire()
408 if (lock->node->lock_id == id) { in __lockdep_lock_release()
427 static void lockdep_node_delete(struct lockdep_node *node) in lockdep_node_delete() argument
432 STAILQ_FOREACH_SAFE(edge, &node->edges, link, next) in lockdep_node_delete()
435 free(node); in lockdep_node_delete()
440 struct lockdep_node *node = NULL; in lockdep_graph_delete() local
443 TAILQ_FOREACH_SAFE(node, graph, link, next) { in lockdep_graph_delete()
444 TAILQ_REMOVE(graph, node, link); in lockdep_graph_delete()
445 lockdep_node_delete(node); in lockdep_graph_delete()
461 struct lockdep_node *node) in lockdep_node_destroy() argument
467 TAILQ_REMOVE(graph, node, link); in lockdep_node_destroy()
475 while (edge && edge->to == node) { in lockdep_node_destroy()
486 if (next->to == node) { in lockdep_node_destroy()
496 STAILQ_FOREACH_SAFE(edge, &node->edges, link, next) in lockdep_node_destroy()
499 free(node); in lockdep_node_destroy()
504 struct lockdep_node *node = NULL; in lockdep_lock_destroy() local
507 TAILQ_FOREACH(node, graph, link) { in lockdep_lock_destroy()
508 if (node->lock_id == lock_id) { in lockdep_lock_destroy()
509 lockdep_node_destroy(graph, node); in lockdep_lock_destroy()