Lines Matching refs:graph

713 static int objagg_tmp_graph_edge_index(struct objagg_tmp_graph *graph,  in objagg_tmp_graph_edge_index()  argument
716 return index * graph->nodes_count + parent_index; in objagg_tmp_graph_edge_index()
719 static void objagg_tmp_graph_edge_set(struct objagg_tmp_graph *graph, in objagg_tmp_graph_edge_set() argument
722 int edge_index = objagg_tmp_graph_edge_index(graph, index, in objagg_tmp_graph_edge_set()
725 __set_bit(edge_index, graph->edges); in objagg_tmp_graph_edge_set()
728 static bool objagg_tmp_graph_is_edge(struct objagg_tmp_graph *graph, in objagg_tmp_graph_is_edge() argument
731 int edge_index = objagg_tmp_graph_edge_index(graph, index, in objagg_tmp_graph_is_edge()
734 return test_bit(edge_index, graph->edges); in objagg_tmp_graph_is_edge()
737 static unsigned int objagg_tmp_graph_node_weight(struct objagg_tmp_graph *graph, in objagg_tmp_graph_node_weight() argument
740 struct objagg_tmp_node *node = &graph->nodes[index]; in objagg_tmp_graph_node_weight()
748 for (j = 0; j < graph->nodes_count; j++) { in objagg_tmp_graph_node_weight()
749 if (!objagg_tmp_graph_is_edge(graph, index, j)) in objagg_tmp_graph_node_weight()
751 node = &graph->nodes[j]; in objagg_tmp_graph_node_weight()
759 static int objagg_tmp_graph_node_max_weight(struct objagg_tmp_graph *graph) in objagg_tmp_graph_node_max_weight() argument
767 for (i = 0; i < graph->nodes_count; i++) { in objagg_tmp_graph_node_max_weight()
768 node = &graph->nodes[i]; in objagg_tmp_graph_node_max_weight()
771 weight = objagg_tmp_graph_node_weight(graph, i); in objagg_tmp_graph_node_max_weight()
783 struct objagg_tmp_graph *graph; in objagg_tmp_graph_create() local
789 graph = kzalloc(sizeof(*graph), GFP_KERNEL); in objagg_tmp_graph_create()
790 if (!graph) in objagg_tmp_graph_create()
793 graph->nodes = kcalloc(nodes_count, sizeof(*graph->nodes), GFP_KERNEL); in objagg_tmp_graph_create()
794 if (!graph->nodes) in objagg_tmp_graph_create()
796 graph->nodes_count = nodes_count; in objagg_tmp_graph_create()
798 graph->edges = bitmap_zalloc(nodes_count * nodes_count, GFP_KERNEL); in objagg_tmp_graph_create()
799 if (!graph->edges) in objagg_tmp_graph_create()
804 node = &graph->nodes[i++]; in objagg_tmp_graph_create()
815 pnode = &graph->nodes[i]; in objagg_tmp_graph_create()
816 node = &graph->nodes[j]; in objagg_tmp_graph_create()
820 objagg_tmp_graph_edge_set(graph, i, j); in objagg_tmp_graph_create()
825 return graph; in objagg_tmp_graph_create()
828 kfree(graph->nodes); in objagg_tmp_graph_create()
830 kfree(graph); in objagg_tmp_graph_create()
834 static void objagg_tmp_graph_destroy(struct objagg_tmp_graph *graph) in objagg_tmp_graph_destroy() argument
836 bitmap_free(graph->edges); in objagg_tmp_graph_destroy()
837 kfree(graph->nodes); in objagg_tmp_graph_destroy()
838 kfree(graph); in objagg_tmp_graph_destroy()
846 struct objagg_tmp_graph *graph; in objagg_opt_simple_greedy_fillup_hints() local
852 graph = objagg_tmp_graph_create(objagg); in objagg_opt_simple_greedy_fillup_hints()
853 if (!graph) in objagg_opt_simple_greedy_fillup_hints()
859 while ((index = objagg_tmp_graph_node_max_weight(graph)) != -1) { in objagg_opt_simple_greedy_fillup_hints()
860 node = &graph->nodes[index]; in objagg_opt_simple_greedy_fillup_hints()
871 for (j = 0; j < graph->nodes_count; j++) { in objagg_opt_simple_greedy_fillup_hints()
872 if (!objagg_tmp_graph_is_edge(graph, index, j)) in objagg_opt_simple_greedy_fillup_hints()
874 node = &graph->nodes[j]; in objagg_opt_simple_greedy_fillup_hints()
891 objagg_tmp_graph_destroy(graph); in objagg_opt_simple_greedy_fillup_hints()